public final void writeClassInitialize(Label curInstrLabel, Register classReg, VmType cls) { if (!cls.isInitialized()) {  os.writeTEST(classReg, context.getVmTypeState().getOffset(), VmTypeState.ST_INITIALIZED); final Label afterInit = new Label(curInstrLabel + "$$after-classinit-ex"); os.writeJCC(afterInit, X86Constants.JNZ); os.writePUSHA();  os.writePUSH(classReg); invokeJavaMethod(context.getVmTypeInitialize()); os.writePOPA();  os.setObjectRef(afterInit);
public final boolean writeClassInitialize(VmMethod method, Register methodReg, Register scratch) {  if (method.isStatic() && !method.isInitializer()) {  final VmType cls = method.getDeclaringClass(); if (!cls.isInitialized()) {  os.writePUSH(EAX);   os.writeMOV(INTSIZE, EAX, methodReg, context .getVmMemberDeclaringClassField().getOffset());  os.writeTEST(EAX, context.getVmTypeState().getOffset(), VmTypeState.ST_INITIALIZED); final Label afterInit = new Label(method.getMangledName() + "$$after-classinit"); os.writeJCC(afterInit, X86Constants.JNZ);  os.writePUSH(EAX); invokeJavaMethod(context.getVmTypeInitialize()); os.setObjectRef(afterInit);  os.writePOP(EAX); return true; }
    public final void writeClassInitialize(Label curInstrLabel, Register classReg, VmType cls) {        if (!cls.isInitialized()) {            // Test declaringClass.modifiers            os.writeTEST(classReg, context.getVmTypeState().getOffset(),                    VmTypeState.ST_INITIALIZED);            final Label afterInit = new Label(curInstrLabel                    + "$$after-classinit-ex");            os.writeJCC(afterInit, X86Constants.JNZ);            os.writePUSHA();            // Call cls.initialize            os.writePUSH(classReg);            invokeJavaMethod(context.getVmTypeInitialize());            os.writePOPA();            // Set label            os.setObjectRef(afterInit);        }    }