os.writeTEST(objectr, objectr); os.writeJCC(notInstanceOfLabel, X86Constants.JZ);  os.writeMOV(INTSIZE, EDX, EAX);  os.writeMOV(INTSIZE, Register.ESI, objectr, ObjectLayout.TIB_SLOT * slotSize);  os .writeMOV(INTSIZE, Register.ESI, Register.ESI, (VmArray.DATA_OFFSET + TIBLayout.SUPERCLASSES_INDEX) * slotSize);  os.writeMOV(INTSIZE, ECX, Register.ESI, VmArray.LENGTH_OFFSET * slotSize);  os.writeLEA(Register.ESI, Register.ESI, VmArray.DATA_OFFSET * slotSize);
os.writeTEST(objectr, objectr); os.writeJCC(notInstanceOfLabel, X86Constants.JZ);  os.writeMOV(INTSIZE, EDX, EAX);  os.writeMOV(INTSIZE, Register.ESI, objectr, tibOffset);  os.writeMOV(INTSIZE, Register.ESI, Register.ESI, arrayDataOffset + (TIBLayout.SUPERCLASSES_INDEX * slotSize));  os.writeMOV(INTSIZE, ECX, Register.ESI, arrayLengthOffset);  os.writeLEA(Register.ESI, Register.ESI, arrayDataOffset);
    private final void instanceOf(Register objectr, Label trueLabel) {        //TODO: port to orp-style        final Label loopLabel = new Label(this.curInstrLabel + "loop");        final Label notInstanceOfLabel = new Label(this.curInstrLabel                + "notInstanceOf");        /* Is objectref null? */        os.writeTEST(objectr, objectr);        os.writeJCC(notInstanceOfLabel, X86Constants.JZ);        /* vmType -> edx */        os.writeMOV(INTSIZE, EDX, EAX);        /* TIB -> ESI */        os.writeMOV(INTSIZE, Register.ESI, objectr, ObjectLayout.TIB_SLOT                * slotSize);        /* SuperClassesArray -> ESI */        os                .writeMOV(INTSIZE, Register.ESI, Register.ESI,                        (VmArray.DATA_OFFSET + TIBLayout.SUPERCLASSES_INDEX)                                * slotSize);        /* SuperClassesArray.length -> ECX */        os.writeMOV(INTSIZE, ECX, Register.ESI, VmArray.LENGTH_OFFSET                * slotSize);        /* &superClassesArray[0] -> esi */        os.writeLEA(Register.ESI, Register.ESI, VmArray.DATA_OFFSET * slotSize);        os.setObjectRef(loopLabel);        /* superClassesArray[index++] -> eax */        os.writeLODSD();        /* Is equal? */        os.writeCMP(EAX, EDX);        os.writeJCC(trueLabel, X86Constants.JE);        try {            os.writeLOOP(loopLabel);        } catch (UnresolvedObjectRefException ex) {            throw new CompileError(ex);        }        os.setObjectRef(notInstanceOfLabel);    }