os.writeTEST(BITS32, classReg, entryPoints.getVmTypeState() .getOffset(), VmTypeState.ST_INITIALIZED);     os.writeJCC(doInit, X86Constants.JZ);   os.writeJMP(done);   os.setObjectRef(doInit);   Label initializer = classInitLabels.get(cls); if (initializer == null) {  initializer = genLabel("$$init-" + cls.getName()); classInitLabels.put(cls, initializer);
os.writePUSH(aax);  if (os.isCode32()) { writeGetStaticsEntry(label, aax, cls); } else { writeGetStaticsEntry64(label, (GPR64)aax, cls); }  writeClassInitialize(label, aax, cls);  os.writePOP(aax); return true;
    public final void writeClassInitialize(Label curInstrLabel, GPR classReg,            VmType< ? > cls) {        if (!cls.isInitialized()) {            // Create jump labels            final Label doInit = new Label(curInstrLabel + "$$do-cinit-ex");            final Label done = new Label(curInstrLabel + "$$done-cinit-ex");            // Test declaringClass.modifiers            os.writeTEST(BITS32, classReg, entryPoints.getVmTypeState()                    .getOffset(), VmTypeState.ST_INITIALIZED);                        // Jump when not initialized to diInit.            // Branch predication expects this forward jump NOT            // to be taken.            os.writeJCC(doInit, X86Constants.JZ);            // We don't have to initialize, so jump over the init-code.            os.writeJMP(done);                        // Start initialize code            os.setObjectRef(doInit);                        // Get label for class initialize code            Label initializer = classInitLabels.get(cls);            if (initializer == null) {                // create one                initializer = genLabel("$$init-" + cls.getName());                classInitLabels.put(cls, initializer);            }            // Setup call to class initializer code            os.writeCALL(initializer);                        // Set the done label            os.setObjectRef(done);        }    }