final int typeOfs = getSharedStaticsOffset(method .getDeclaringClass()); os.writeMOV(size, aax, STATICS, typeOfs);  os.writeTEST(BITS32, aax, entryPoints.getVmTypeState() .getOffset(), VmTypeState.ST_INITIALIZED); final Label afterInit = new Label(method.getMangledName() + "$$after-classinit"); os.writeJCC(afterInit, X86Constants.JNZ);  os.writePUSH(aax); invokeJavaMethod(entryPoints.getVmTypeInitialize()); os.setObjectRef(afterInit);
writeGetStaticsEntry(label, aax, cls);  writeClassInitialize(label, aax, cls);
    public final boolean writeClassInitialize(VmMethod method) {        // Only for static methods (non <clinit>)        if (method.isStatic() && !method.isInitializer()) {            // Only when class is not initialize            final VmType< ? > cls = method.getDeclaringClass();            if (!cls.isInitialized()) {                final GPR aax = this.AAX;                final int size = os.getMode().getSize();                // Save eax                os.writePUSH(aax);                // Do the is initialized test                // Move method.declaringClass -> EAX                final int typeOfs = getSharedStaticsOffset(method                        .getDeclaringClass());                os.writeMOV(size, aax, STATICS, typeOfs);                // Test declaringClass.modifiers                os.writeTEST(BITS32, aax, entryPoints.getVmTypeState()                        .getOffset(), VmTypeState.ST_INITIALIZED);                final Label afterInit = new Label(method.getMangledName()                        + "$$after-classinit");                os.writeJCC(afterInit, X86Constants.JNZ);                // Call cls.initialize                os.writePUSH(aax);                invokeJavaMethod(entryPoints.getVmTypeInitialize());                os.setObjectRef(afterInit);                // Restore eax                os.writePOP(aax);                return true;            }        }        return false;    }