/** * Adds a public, no-arg constructor with the code buffer properly defined. */ public MethodInfo addDefaultConstructor() { MethodInfo mi = addConstructor(Modifiers.PUBLIC, null); CodeBuilder builder = new CodeBuilder(mi); builder.loadThis(); builder.invokeSuperConstructor(null); builder.returnVoid(); return mi; }
private static RuntimeClassFile generateClassFile(Class beanType, PropertySet set) { BeanProperty[][] props = getBeanProperties(beanType, set); RuntimeClassFile cf = new RuntimeClassFile (BeanPropertyAccessor.class.getName(), BeanPropertyAccessor.class.getName(), beanType.getClassLoader()); cf.markSynthetic(); cf.setSourceFile(BeanPropertyAccessor.class.getName()); try { cf.setTarget(System.getProperty("java.specification.version")); } catch (Exception e) { } MethodInfo ctor = cf.addConstructor(Modifiers.PUBLIC, null); ctor.markSynthetic(); CodeBuilder b = new CodeBuilder(ctor); b.loadThis(); b.invokeSuperConstructor(null); b.returnVoid(); generateAccessMethod(cf, beanType, props[0], READ_METHOD); generateAccessMethod(cf, beanType, props[0], TRY_READ_METHOD); generateAccessMethod(cf, beanType, props[0], HAS_READ_METHOD); generateAccessMethod(cf, beanType, props[1], WRITE_METHOD); generateAccessMethod(cf, beanType, props[1], TRY_WRITE_METHOD); generateAccessMethod(cf, beanType, props[1], HAS_WRITE_METHOD); generateSearchMethod(cf, beanType, props[0]); return cf; }
private void generateAddMatchResult(PatternNode node) { mBuilder.mapLineNumber(++mReferenceLine); mBuilder.loadLocal(mLimitLocal); mBuilder.loadLocal(mResultsLocal); mBuilder.loadConstant(node.mPattern); mBuilder.loadThis(); mBuilder.loadField("mValues", TypeDesc.OBJECT.toArrayType()); mBuilder.loadConstant(node.mOrder); mBuilder.loadFromArray(TypeDesc.OBJECT); mBuilder.loadLocal(mPositionsLocal); mBuilder.loadConstant(node.getWildcardCount() * 2); TypeDesc[] params = { mIntType, mListType, mStringType, mObjectType, mIntArrayType, mIntType }; mBuilder.invokeStatic(PatternMatcher.class.getName(), "addMatchResult", mBooleanType, params); mBuilder.ifZeroComparisonBranch(mReturnLabel, "=="); } }
MethodInfo mi = cf.addConstructor(Modifiers.PUBLIC, params); mBuilder = new CodeBuilder(mi); mBuilder.loadThis(); mBuilder.loadLocal(mBuilder.getParameter(0)); mBuilder.invokeSuperConstructor(params);
CodeBuilder builder = new CodeBuilder(ctor); builder.loadThis(); builder.invokeSuperConstructor(null); builder.loadThis(); builder.loadLocal(builder.getParameter(0)); builder.storeField("mCollators", comparatorArrayType); builder.loadThis(); builder.loadLocal(builder.getParameter(1)); builder.storeField("mUsingComparators", comparatorArrayType); builder.createLocalVariable("result", TypeDesc.INT); if (bc.mUsingComparator != null) { builder.loadThis(); builder.loadField("mUsingComparators", comparatorArrayType); builder.loadConstant(0); builder.loadThis(); builder.loadField("mUsingComparators", comparatorArrayType); builder.loadConstant(i); builder.loadThis(); builder.loadField("mCollators", comparatorArrayType); builder.loadConstant(i);
private void genFinishedAsync(CodeBuilder b, LocalVariable channelVar) { b.loadThis(); b.loadField(SUPPORT_FIELD_NAME, SKEL_SUPPORT_TYPE); b.loadLocal(channelVar); b.invokeInterface(SKEL_SUPPORT_TYPE, "finishedAsync", null, new TypeDesc[] {INV_CHANNEL_TYPE}); }
private static void addPlainConstructor(RuntimeClassFile cf, TypeDesc delegateDesc) { CodeBuilder b = new CodeBuilder (cf.addConstructor(Modifiers.PUBLIC, new TypeDesc[] {delegateDesc})); b.loadThis(); b.invokeSuperConstructor(null); b.loadThis(); b.loadLocal(b.getParameter(0)); b.storeField("delegate", delegateDesc); b.returnVoid(); }
private void genWaitForNext(CodeBuilder b, LocalVariable sequenceVar) { TypeDesc orderedInvokerType = TypeDesc.forClass(OrderedInvoker.class); b.loadThis(); b.loadField(ORDERED_INVOKER_FIELD_NAME, orderedInvokerType); b.loadLocal(sequenceVar); b.invokeVirtual(orderedInvokerType, "waitForNext", TypeDesc.BOOLEAN, new TypeDesc[] {TypeDesc.INT}); }
/** * Adds a public, no-arg constructor with the code buffer properly defined. */ public MethodInfo addDefaultConstructor() { MethodInfo mi = addConstructor(Modifiers.PUBLIC, null); CodeBuilder builder = new CodeBuilder(mi); builder.loadThis(); builder.invokeSuperConstructor(null); builder.returnVoid(); return mi; }
void restore(CodeBuilder b) { b.loadThis(); b.loadLocal(copyVar); b.storeField(property.getName(), copyVar.getType()); } }
void makeCopy(CodeBuilder b) { b.loadThis(); b.loadField(property.getName(), copyVar.getType()); b.storeLocal(copyVar); }
private void genIsNext(CodeBuilder b, LocalVariable sequenceVar) { TypeDesc orderedInvokerType = TypeDesc.forClass(OrderedInvoker.class); b.loadThis(); b.loadField(ORDERED_INVOKER_FIELD_NAME, orderedInvokerType); b.loadLocal(sequenceVar); b.invokeVirtual(orderedInvokerType, "isNext", TypeDesc.BOOLEAN, new TypeDesc[] {TypeDesc.INT}); }
/** * Generates code to push the JDBCSupport instance on the stack. */ private void pushJDBCSupport(CodeBuilder b) { b.loadThis(); b.loadField(StorableGenerator.SUPPORT_FIELD_NAME, TypeDesc.forClass(TriggerSupport.class)); b.checkCast(TypeDesc.forClass(JDBCSupport.class)); }
private void genFinished(CodeBuilder b, LocalVariable channelVar, boolean reset) { b.loadThis(); b.loadField(SUPPORT_FIELD_NAME, SKEL_SUPPORT_TYPE); b.loadLocal(channelVar); b.loadConstant(reset); b.invokeInterface(SKEL_SUPPORT_TYPE, "finished", TypeDesc.INT, new TypeDesc[] {INV_CHANNEL_TYPE, TypeDesc.BOOLEAN}); }
void makeCopy(CodeBuilder b) { b.loadThis(); b.loadField(property.getName(), copyVar.getType()); b.storeLocal(copyVar); }
void restore(CodeBuilder b) { b.loadThis(); b.loadLocal(copyVar); b.storeField(property.getName(), copyVar.getType()); } }
/** * Generates code to push the JDBCSupport instance on the stack. */ private void pushJDBCSupport(CodeBuilder b) { b.loadThis(); b.loadField(StorableGenerator.SUPPORT_FIELD_NAME, TypeDesc.forClass(TriggerSupport.class)); b.checkCast(TypeDesc.forClass(JDBCSupport.class)); }
private void checkIfPartitionKeyPresent(CodeBuilder b) { b.loadThis(); b.invokeVirtual(StorableGenerator.IS_PARTITION_KEY_INITIALIZED_METHOD_NAME, TypeDesc.BOOLEAN, null); Label ptnkInitialized = b.createLabel(); b.ifZeroComparisonBranch(ptnkInitialized, "!="); TypeDesc exType = TypeDesc.forClass(IllegalStateException.class); b.newObject(exType); b.dup(); b.loadConstant("Partition key not fully specified"); b.invokeConstructor(exType, new TypeDesc[] {TypeDesc.STRING}); b.throwObject(); ptnkInitialized.setLocation(); }