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