if_acmpeq : jump if two object references are equal : index : visitJumpInsn()

Description
if_acmpeq pops the top two object references off the stack and compares them. If the two object references are equal (i.e. if they both refer to the same object), execution branches to the address (pc + branchoffset), where pc is the address of the if_acmpeq opcode in the bytecode and branchoffset is a 16-bit signed integer parameter following the if_acmpeq opcode in the bytecode. If the object references refer to different objects, execution continues at the next instruction.

If you are using Jasmin, branchoffset is computed for you from the address of <label>.
Example
    aload_1         ; push the object reference in local variable 1 onto stack
    aload_2         ; push the object reference in local variable 2 onto stack
    if_acmpeq Label ; if the two references on the stack are identical, jump to Label
    return          ; return if not equal
Label:
    ; execution continues here if local variables 1 and 2 refer to the same object
Notes
Addresses are measured in bytes from the start of the bytecode (i.e. address 0 is the first byte in the bytecode of the currently executing method).
See also
if_acmpne
Stack
Before After
value1 ...
value2 ...
... ...
Bytecode
Type Description
u1 if_acmpeq opcode = 0xA5 (165)
s2 branchoffset