/** * Set the collection of {@link JumpInstruction}s to the given instruction, * clearing the collection in the process. */ protected void setTarget(Instruction ins, Collection<Instruction> jumps) { for (Iterator<Instruction> it = jumps.iterator(); it.hasNext();) ((JumpInstruction) it.next()).setTarget(ins); jumps.clear(); }
/** * Set the collection of {@link JumpInstruction}s to the given instruction, * clearing the collection in the process. */ protected void setTarget(Instruction ins, Collection<Instruction> jumps) { for (Iterator<Instruction> it = jumps.iterator(); it.hasNext();) ((JumpInstruction) it.next()).setTarget(ins); jumps.clear(); }
/** * Set the collection of {@link JumpInstruction}s to the given instruction, * clearing the collection in the process. */ protected void setTarget(Instruction ins, Collection<Instruction> jumps) { for (Iterator<Instruction> it = jumps.iterator(); it.hasNext();) ((JumpInstruction) it.next()).setTarget(ins); jumps.clear(); }
/** * Set the collection of {@link JumpInstruction}s to the given instruction, * clearing the collection in the process. */ protected void setTarget(Instruction ins, Collection jumps) { for (Iterator it = jumps.iterator(); it.hasNext();) ((JumpInstruction) it.next()).setTarget(ins); jumps.clear(); }
/** * Set the collection of {@link JumpInstruction}s to the given instruction, * clearing the collection in the process. */ protected void setTarget(Instruction ins, Collection<Instruction> jumps) { for (Iterator<Instruction> it = jumps.iterator(); it.hasNext();) ((JumpInstruction) it.next()).setTarget(ins); jumps.clear(); }
/** * Adds fields and methods as necessary to load a class constant of * an object type. */ private void setObject(String name) { BCField field = addClassField(name); BCMethod method = addClassLoadMethod(); // copied from the way jikes loads classes _code.getstatic().setField(field); JumpInstruction ifnull = _code.ifnull(); _code.getstatic().setField(field); JumpInstruction go2 = _code.go2(); ifnull.setTarget(_code.constant().setValue(name)); _code.invokestatic().setMethod(method); _code.dup(); _code.putstatic().setField(field); go2.setTarget(_code.nop()); }
/** * Adds fields and methods as necessary to load a class constant of * an object type. */ private void setObject(String name) { BCField field = addClassField(name); BCMethod method = addClassLoadMethod(); // copied from the way jikes loads classes _code.getstatic().setField(field); JumpInstruction ifnull = _code.ifnull(); _code.getstatic().setField(field); JumpInstruction go2 = _code.go2(); ifnull.setTarget(_code.constant().setValue(name)); _code.invokestatic().setMethod(method); _code.dup(); _code.putstatic().setField(field); go2.setTarget(_code.nop()); }
/** * 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(); }
/** * 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(); }
private void enhanceToData(BCClass bc) { BCMethod meth = bc.declareMethod("toData", Object.class, new Class []{ FieldMetaData.class, Object.class, StoreContext.class }); Code code = meth.getCode(true); // if (fmd.isLRS ())) // return NULL; code.aload().setParam(0); code.invokevirtual().setMethod(FieldMetaData.class, "isLRS", boolean.class, null); JumpInstruction ifins = code.ifeq(); code.getstatic().setField(AbstractPCData.class, "NULL", Object.class); code.areturn(); // super.toData (fmd, val, ctx); ifins.setTarget(code.aload().setThis()); code.aload().setParam(0); code.aload().setParam(1); code.aload().setParam(2); code.invokespecial().setMethod(AbstractPCData.class, "toData", Object.class, new Class[]{ FieldMetaData.class, Object.class, StoreContext.class }); code.areturn(); code.calculateMaxStack(); code.calculateMaxLocals(); }
private void enhanceToData(BCClass bc) { BCMethod meth = bc.declareMethod("toData", Object.class, new Class []{ FieldMetaData.class, Object.class, StoreContext.class }); Code code = meth.getCode(true); // if (fmd.isLRS ())) // return NULL; code.aload().setParam(0); code.invokevirtual().setMethod(FieldMetaData.class, "isLRS", boolean.class, null); JumpInstruction ifins = code.ifeq(); code.getstatic().setField(AbstractPCData.class, "NULL", Object.class); code.areturn(); // super.toData (fmd, val, ctx); ifins.setTarget(code.aload().setThis()); code.aload().setParam(0); code.aload().setParam(1); code.aload().setParam(2); code.invokespecial().setMethod(AbstractPCData.class, "toData", Object.class, new Class[]{ FieldMetaData.class, Object.class, StoreContext.class }); code.areturn(); code.calculateMaxStack(); code.calculateMaxLocals(); }
private void enhanceToData(BCClass bc) { BCMethod meth = bc.declareMethod("toData", Object.class, new Class []{ FieldMetaData.class, Object.class, StoreContext.class }); Code code = meth.getCode(true); // if (fmd.isLRS ())) // return NULL; code.aload().setParam(0); code.invokevirtual().setMethod(FieldMetaData.class, "isLRS", boolean.class, null); JumpInstruction ifins = code.ifeq(); code.getstatic().setField(AbstractPCData.class, "NULL", Object.class); code.areturn(); // super.toData (fmd, val, ctx); ifins.setTarget(code.aload().setThis()); code.aload().setParam(0); code.aload().setParam(1); code.aload().setParam(2); code.invokespecial().setMethod(AbstractPCData.class, "toData", Object.class, new Class[]{ FieldMetaData.class, Object.class, StoreContext.class }); code.areturn(); code.calculateMaxStack(); code.calculateMaxLocals(); }
private void enhanceToData(BCClass bc) { BCMethod meth = bc.declareMethod("toData", Object.class, new Class []{ FieldMetaData.class, Object.class, StoreContext.class }); Code code = meth.getCode(true); // if (fmd.isLRS ())) // return NULL; code.aload().setParam(0); code.invokevirtual().setMethod(FieldMetaData.class, "isLRS", boolean.class, null); JumpInstruction ifins = code.ifeq(); code.getstatic().setField(AbstractPCData.class, "NULL", Object.class); code.areturn(); // super.toData (fmd, val, ctx); ifins.setTarget(code.aload().setThis()); code.aload().setParam(0); code.aload().setParam(1); code.aload().setParam(2); code.invokespecial().setMethod(AbstractPCData.class, "toData", Object.class, new Class[]{ FieldMetaData.class, Object.class, StoreContext.class }); code.areturn(); code.calculateMaxStack(); code.calculateMaxLocals(); }
private void enhanceToData(BCClass bc) { BCMethod meth = bc.declareMethod("toData", Object.class, new Class []{ FieldMetaData.class, Object.class, StoreContext.class }); Code code = meth.getCode(true); // if (fmd.isLRS ())) // return NULL; code.aload().setParam(0); code.invokevirtual().setMethod(FieldMetaData.class, "isLRS", boolean.class, null); JumpInstruction ifins = code.ifeq(); code.getstatic().setField(AbstractPCData.class, "NULL", Object.class); code.areturn(); // super.toData (fmd, val, ctx); ifins.setTarget(code.aload().setThis()); code.aload().setParam(0); code.aload().setParam(1); code.aload().setParam(2); code.invokespecial().setMethod(AbstractPCData.class, "toData", Object.class, new Class[]{ FieldMetaData.class, Object.class, StoreContext.class }); code.areturn(); code.calculateMaxStack(); code.calculateMaxLocals(); }