/** * Replaced all direct access to managed fields with the appropriate * pcGet/pcSet method. Note that this includes access to fields * owned by PersistenceCapable classes other than this one. */ private void replaceAndValidateFieldAccess() throws NoSuchMethodException { // create template putfield/getfield instructions to search for Code template = AccessController.doPrivileged( J2DoPrivHelper.newCodeAction()); Instruction put = template.putfield(); Instruction get = template.getfield(); Instruction stat = template.invokestatic(); // look through all methods; this is done before any methods are added // so we don't need to worry about excluding synthetic methods. BCMethod[] methods = _managedType.getDeclaredMethods(); Code code; for (int i = 0; i < methods.length; i++) { code = methods[i].getCode(false); // don't modify the methods specified by the auxiliary enhancers if (code != null && !skipEnhance(methods[i])) { replaceAndValidateFieldAccess(code, get, true, stat); replaceAndValidateFieldAccess(code, put, false, stat); } } }
/** * Replaced all direct access to managed fields with the appropriate * pcGet/pcSet method. Note that this includes access to fields * owned by PersistenceCapable classes other than this one. */ private void replaceAndValidateFieldAccess() throws NoSuchMethodException { // create template putfield/getfield instructions to search for Code template = AccessController.doPrivileged( J2DoPrivHelper.newCodeAction()); Instruction put = template.putfield(); Instruction get = template.getfield(); Instruction stat = template.invokestatic(); // look through all methods; this is done before any methods are added // so we don't need to worry about excluding synthetic methods. BCMethod[] methods = _managedType.getDeclaredMethods(); Code code; for (int i = 0; i < methods.length; i++) { code = methods[i].getCode(false); // don't modify the methods specified by the auxiliary enhancers if (code != null && !skipEnhance(methods[i])) { replaceAndValidateFieldAccess(code, get, true, stat); replaceAndValidateFieldAccess(code, put, false, stat); } } }
/** * Replaced all direct access to managed fields with the appropriate * pcGet/pcSet method. Note that this includes access to fields * owned by PersistenceCapable classes other than this one. */ private void replaceAndValidateFieldAccess() throws NoSuchMethodException { // create template putfield/getfield instructions to search for Code template = AccessController.doPrivileged( J2DoPrivHelper.newCodeAction()); Instruction put = template.putfield(); Instruction get = template.getfield(); Instruction stat = template.invokestatic(); // look through all methods; this is done before any methods are added // so we don't need to worry about excluding synthetic methods. BCMethod[] methods = _managedType.getDeclaredMethods(); Code code; for (int i = 0; i < methods.length; i++) { code = methods[i].getCode(false); // don't modify the methods specified by the auxiliary enhancers if (code != null && !skipEnhance(methods[i])) { replaceAndValidateFieldAccess(code, get, true, stat); replaceAndValidateFieldAccess(code, put, false, stat); } } }
/** * Replaced all direct access to managed fields with the appropriate * pcGet/pcSet method. Note that this includes access to fields * owned by PersistenceCapable classes other than this one. */ private void replaceAndValidateFieldAccess() throws NoSuchMethodException { // create template putfield/getfield instructions to search for Code template = AccessController.doPrivileged( J2DoPrivHelper.newCodeAction()); Instruction put = template.putfield(); Instruction get = template.getfield(); Instruction stat = template.invokestatic(); // look through all methods; this is done before any methods are added // so we don't need to worry about excluding synthetic methods. BCMethod[] methods = _managedType.getDeclaredMethods(); Code code; for (int i = 0; i < methods.length; i++) { code = methods[i].getCode(false); // don't modify the methods specified by the auxiliary enhancers if (code != null && !skipEnhance(methods[i])) { replaceAndValidateFieldAccess(code, get, true, stat); replaceAndValidateFieldAccess(code, put, false, stat); } } }
/** * Replaced all direct access to managed fields with the appropriate * pcGet/pcSet method. Note that this includes access to fields * owned by PersistenceCapable classes other than this one. */ private void replaceAndValidateFieldAccess() throws NoSuchMethodException { // create template putfield/getfield instructions to search for Code template = (Code) AccessController.doPrivileged( J2DoPrivHelper.newCodeAction()); Instruction put = template.putfield(); Instruction get = template.getfield(); Instruction stat = template.invokestatic(); // look through all methods; this is done before any methods are added // so we don't need to worry about excluding synthetic methods. BCMethod[] methods = _managedType.getDeclaredMethods(); Code code; for (int i = 0; i < methods.length; i++) { code = methods[i].getCode(false); // don't modify the methods specified by the auxiliary enhancers if (code != null && !skipEnhance(methods[i])) { replaceAndValidateFieldAccess(code, get, true, stat); replaceAndValidateFieldAccess(code, put, false, stat); } } }
code.getfield().setField("objects", Object[].class); code.constant().setValue(objectCount); code.aaload();
code.getfield().setField("objects", Object[].class); code.constant().setValue(objectCount); code.aaload();
private void addNewEmbedded(BCClass bc) { // void newEmbeddedPCData(OpenJPAStateManager embedded) BCMethod meth = bc.declareMethod("newEmbeddedPCData", PCData.class, new Class[]{ OpenJPAStateManager.class }); Code code = meth.getCode(true); // return getStorageGenerator().generatePCData // (sm.getId(), sm.getMetaData()); code.aload().setThis(); code.getfield().setField("storageGenerator", PCDataGenerator.class); code.aload().setParam(0); code.invokeinterface().setMethod(OpenJPAStateManager.class, "getId", Object.class, null); code.aload().setParam(0); code.invokeinterface().setMethod(OpenJPAStateManager.class, "getMetaData", ClassMetaData.class, null); code.invokevirtual().setMethod(PCDataGenerator.class, "generatePCData", PCData.class, new Class[] { Object.class, ClassMetaData.class }); code.areturn(); code.calculateMaxLocals(); code.calculateMaxStack(); }
/** * Implement initialize. */ private void addInitialize(BCClass bc, int objectCount) { BCMethod meth = bc.declareMethod("initialize", void.class, null); Code code = meth.getCode(true); JumpInstruction ifins = null; if (objectCount > 0) { // if (objects == null) // objects = new Object[objectCount]; code.aload().setThis(); code.getfield().setField("objects", Object[].class); ifins = code.ifnonnull(); code.aload().setThis(); code.constant().setValue(objectCount); code.anewarray().setType(Object.class); code.putfield().setField("objects", Object[].class); } Instruction ins = code.vreturn(); if (ifins != null) ifins.setTarget(ins); code.calculateMaxLocals(); code.calculateMaxStack(); }
private void addNewEmbedded(BCClass bc) { // void newEmbeddedPCData(OpenJPAStateManager embedded) BCMethod meth = bc.declareMethod("newEmbeddedPCData", PCData.class, new Class[]{ OpenJPAStateManager.class }); Code code = meth.getCode(true); // return getStorageGenerator().generatePCData // (sm.getId(), sm.getMetaData()); code.aload().setThis(); code.getfield().setField("storageGenerator", PCDataGenerator.class); code.aload().setParam(0); code.invokeinterface().setMethod(OpenJPAStateManager.class, "getId", Object.class, null); code.aload().setParam(0); code.invokeinterface().setMethod(OpenJPAStateManager.class, "getMetaData", ClassMetaData.class, null); code.invokevirtual().setMethod(PCDataGenerator.class, "generatePCData", PCData.class, new Class[] { Object.class, ClassMetaData.class }); code.areturn(); code.calculateMaxLocals(); code.calculateMaxStack(); }
private void addNewEmbedded(BCClass bc) { // void newEmbeddedPCData(OpenJPAStateManager embedded) BCMethod meth = bc.declareMethod("newEmbeddedPCData", PCData.class, new Class[]{ OpenJPAStateManager.class }); Code code = meth.getCode(true); // return getStorageGenerator().generatePCData // (sm.getId(), sm.getMetaData()); code.aload().setThis(); code.getfield().setField("storageGenerator", PCDataGenerator.class); code.aload().setParam(0); code.invokeinterface().setMethod(OpenJPAStateManager.class, "getId", Object.class, null); code.aload().setParam(0); code.invokeinterface().setMethod(OpenJPAStateManager.class, "getMetaData", ClassMetaData.class, null); code.invokevirtual().setMethod(PCDataGenerator.class, "generatePCData", PCData.class, new Class[] { Object.class, ClassMetaData.class }); code.areturn(); code.calculateMaxLocals(); code.calculateMaxStack(); }
private void addNewEmbedded(BCClass bc) { // void newEmbeddedPCData(OpenJPAStateManager embedded) BCMethod meth = bc.declareMethod("newEmbeddedPCData", PCData.class, new Class[]{ OpenJPAStateManager.class }); Code code = meth.getCode(true); // return getStorageGenerator().generatePCData // (sm.getId(), sm.getMetaData()); code.aload().setThis(); code.getfield().setField("storageGenerator", PCDataGenerator.class); code.aload().setParam(0); code.invokeinterface().setMethod(OpenJPAStateManager.class, "getId", Object.class, null); code.aload().setParam(0); code.invokeinterface().setMethod(OpenJPAStateManager.class, "getMetaData", ClassMetaData.class, null); code.invokevirtual().setMethod(PCDataGenerator.class, "generatePCData", PCData.class, new Class[] { Object.class, ClassMetaData.class }); code.areturn(); code.calculateMaxLocals(); code.calculateMaxStack(); }
/** * Implement initialize. */ private void addInitialize(BCClass bc, int objectCount) { BCMethod meth = bc.declareMethod("initialize", void.class, null); Code code = meth.getCode(true); JumpInstruction ifins = null; if (objectCount > 0) { // if (objects == null) // objects = new Object[objectCount]; code.aload().setThis(); code.getfield().setField("objects", Object[].class); ifins = code.ifnonnull(); code.aload().setThis(); code.constant().setValue(objectCount); code.anewarray().setType(Object.class); code.putfield().setField("objects", Object[].class); } Instruction ins = code.vreturn(); if (ifins != null) ifins.setTarget(ins); code.calculateMaxLocals(); code.calculateMaxStack(); }
private void addNewEmbedded(BCClass bc) { // void newEmbeddedPCData(OpenJPAStateManager embedded) BCMethod meth = bc.declareMethod("newEmbeddedPCData", PCData.class, new Class[]{ OpenJPAStateManager.class }); Code code = meth.getCode(true); // return getStorageGenerator().generatePCData // (sm.getId(), sm.getMetaData()); code.aload().setThis(); code.getfield().setField("storageGenerator", PCDataGenerator.class); code.aload().setParam(0); code.invokeinterface().setMethod(OpenJPAStateManager.class, "getId", Object.class, null); code.aload().setParam(0); code.invokeinterface().setMethod(OpenJPAStateManager.class, "getMetaData", ClassMetaData.class, null); code.invokevirtual().setMethod(PCDataGenerator.class, "generatePCData", PCData.class, new Class[] { Object.class, ClassMetaData.class }); code.areturn(); code.calculateMaxLocals(); code.calculateMaxStack(); }
/** * Implement initialize. */ private void addInitialize(BCClass bc, int objectCount) { BCMethod meth = bc.declareMethod("initialize", void.class, null); Code code = meth.getCode(true); JumpInstruction ifins = null; if (objectCount > 0) { // if (objects == null) // objects = new Object[objectCount]; code.aload().setThis(); code.getfield().setField("objects", Object[].class); ifins = code.ifnonnull(); code.aload().setThis(); code.constant().setValue(objectCount); code.anewarray().setType(Object.class); code.putfield().setField("objects", Object[].class); } Instruction ins = code.vreturn(); if (ifins != null) ifins.setTarget(ins); code.calculateMaxLocals(); code.calculateMaxStack(); }
/** * Implement initialize. */ private void addInitialize(BCClass bc, int objectCount) { BCMethod meth = bc.declareMethod("initialize", void.class, null); Code code = meth.getCode(true); JumpInstruction ifins = null; if (objectCount > 0) { // if (objects == null) // objects = new Object[objectCount]; code.aload().setThis(); code.getfield().setField("objects", Object[].class); ifins = code.ifnonnull(); code.aload().setThis(); code.constant().setValue(objectCount); code.anewarray().setType(Object.class); code.putfield().setField("objects", Object[].class); } Instruction ins = code.vreturn(); if (ifins != null) ifins.setTarget(ins); code.calculateMaxLocals(); code.calculateMaxStack(); }
/** * Implement initialize. */ private void addInitialize(BCClass bc, int objectCount) { BCMethod meth = bc.declareMethod("initialize", void.class, null); Code code = meth.getCode(true); JumpInstruction ifins = null; if (objectCount > 0) { // if (objects == null) // objects = new Object[objectCount]; code.aload().setThis(); code.getfield().setField("objects", Object[].class); ifins = code.ifnonnull(); code.aload().setThis(); code.constant().setValue(objectCount); code.anewarray().setType(Object.class); code.putfield().setField("objects", Object[].class); } Instruction ins = code.vreturn(); if (ifins != null) ifins.setTarget(ins); code.calculateMaxLocals(); code.calculateMaxStack(); }