/* * Check to see if an object reference is an instance of a class. * * Most common situation is a non-null object, being compared against * an already-resolved class. */ /* instance-of vA, vB, class@CCCC */ EXPORT_PC movzwl 2(rPC), %eax # eax <- BBBB movl %eax, OUT_ARG0(%esp) movl rINST, %eax # eax <- BA sarl $$4, %eax # eax <- B leal VREG_ADDRESS(%eax), %ecx # Get object address movl %ecx, OUT_ARG1(%esp) movl OFF_FP_METHOD(rFP),%eax movl %eax, OUT_ARG2(%esp) movl rSELF, %ecx movl %ecx, OUT_ARG3(%esp) call SYMBOL(MterpInstanceOf) # (index, &obj, method, self) movl rSELF, %ecx RESTORE_IBASE_FROM_SELF %ecx cmpl $$0, THREAD_EXCEPTION_OFFSET(%ecx) jnz MterpException andb $$0xf, rINSTbl # rINSTbl <- A SET_VREG %eax, rINST ADVANCE_PC_FETCH_AND_GOTO_NEXT 2