1/* 2 * Check to see if an object reference is an instance of a class. 3 * 4 * Most common situation is a non-null object, being compared against 5 * an already-resolved class. 6 */ 7 /* instance-of vA, vB, class@CCCC */ 8 EXPORT_PC 9 movzwl 2(rPC), OUT_32_ARG0 # OUT_32_ARG0 <- CCCC 10 movl rINST, %eax # eax <- BA 11 sarl $$4, %eax # eax <- B 12 leaq VREG_ADDRESS(%rax), OUT_ARG1 # Get object address 13 movq OFF_FP_METHOD(rFP), OUT_ARG2 14 movq rSELF, OUT_ARG3 15 call SYMBOL(MterpInstanceOf) # (index, &obj, method, self) 16 movsbl %al, %eax 17 movq rSELF, %rcx 18 cmpq $$0, THREAD_EXCEPTION_OFFSET(%rcx) 19 jnz MterpException 20 andb $$0xf, rINSTbl # rINSTbl <- A 21 SET_VREG %eax, rINSTq 22 ADVANCE_PC_FETCH_AND_GOTO_NEXT 2 23