public void invokeStatic(String className, String methodName, TypeDesc ret, TypeDesc[] params) { mInstructions.new InvokeInstruction (Opcode.INVOKESTATIC, mCp.addConstantMethod(className, methodName, ret, params), ret, params); }
public void newObject(TypeDesc type) { if (type.isArray()) { newObject(type, 1); } else { mInstructions.new NewObjectInstruction(mCp.addConstantClass(type)); } }
FieldInfo(ClassFile parent, Modifiers modifiers, String name, TypeDesc type) { mParent = parent; mCp = parent.getConstantPool(); mName = name; mType = type; mModifiers = modifiers; mNameConstant = mCp.addConstantUTF(name); mDescriptorConstant = mCp.addConstantUTF(type.getDescriptor()); }
private void emit_cond(String comp) { Label lbl1 = b.createLabel(); Label lbl2 = b.createLabel(); b.ifComparisonBranch(lbl1, comp, TypeDesc.DOUBLE); b.loadConstant(1); b.branch(lbl2); lbl1.setLocation(); b.loadConstant(0); lbl2.setLocation(); }
/** * 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; }
public void invokeVirtual(String className, String methodName, TypeDesc ret, TypeDesc[] params) { mInstructions.new InvokeInstruction (Opcode.INVOKEVIRTUAL, mCp.addConstantMethod(className, methodName, ret, params), ret, params); }
public NullCodeAssembler(MethodInfo mi) { mMethod = mi; TypeDesc[] paramTypes = mMethod.getMethodDescriptor().getParameterTypes(); mParams = new LocalVariable[paramTypes.length]; for (int i=0; i<paramTypes.length; i++) { mParams[i] = new Variable(null, paramTypes[i]); } }
public Class toClass(ClassLoader loader) { if (loader == null) { return arrayClass(getRootComponentType().toClass()); } else { return arrayClass(getRootComponentType().toClass(loader)); } }
public void invokePrivate(String methodName, TypeDesc ret, TypeDesc[] params) { mInstructions.new InvokeInstruction (Opcode.INVOKESPECIAL, mCp.addConstantMethod(mClassFile.getClassName(), methodName, ret, params), ret, params); }
public void loadField(String className, String fieldName, TypeDesc type) { getfield(0, Opcode.GETFIELD, mCp.addConstantField(className, fieldName, type), type); }
public void loadConstant(double value) { if (value == 0) { addInstruction(2, TypeDesc.DOUBLE, Opcode.DCONST_0); } else if (value == 1) { addInstruction(2, TypeDesc.DOUBLE, Opcode.DCONST_1); } else { ConstantInfo info = mCp.addConstantDouble(value); mInstructions.new LoadConstantInstruction(2, TypeDesc.DOUBLE, info, true); } }
public void loadConstant(long value) { if (value == 0) { addInstruction(2, TypeDesc.LONG, Opcode.LCONST_0); } else if (value == 1) { addInstruction(2, TypeDesc.LONG, Opcode.LCONST_1); } else { ConstantInfo info = mCp.addConstantLong(value); mInstructions.new LoadConstantInstruction(2, TypeDesc.LONG, info, true); } }
public void loadConstant(float value) { if (value == 0) { addInstruction(1, TypeDesc.FLOAT, Opcode.FCONST_0); } else if (value == 1) { addInstruction(1, TypeDesc.FLOAT, Opcode.FCONST_1); } else if (value == 2) { addInstruction(1, TypeDesc.FLOAT, Opcode.FCONST_2); } else { ConstantInfo info = mCp.addConstantFloat(value); mInstructions.new LoadConstantInstruction(1, TypeDesc.FLOAT, info); } }
public LocationRangeImpl(LocationRange a, LocationRange b) { mStart = (a.getStartLocation().compareTo(b.getStartLocation()) <= 0) ? a.getStartLocation() : b.getStartLocation(); mEnd = (b.getEndLocation().compareTo(a.getEndLocation()) >= 0) ? b.getEndLocation() : a.getEndLocation(); }
public LocalVariable createLocalVariable(String name, TypeDesc type) { String varName = "var_" + (++mLocalCounter); if (name != null) { name = '"' + name + '"'; } println("LocalVariable " + varName + " = " + mBulder + "createLocalVariable(" + name + ", " + getTypeDescName(type) + ')'); return new NamedLocal(varName, type, -1); }
private void getfield(int stackAdjust, byte opcode, ConstantInfo info, TypeDesc type) { if (type.isDoubleWord()) { stackAdjust++; } addInstruction(stackAdjust, type, opcode, info); }
private void disassemble(Modifiers modifiers) { print(modifiers); if (modifiers.getBitmask() != 0) { print(" "); } }
public void storeStaticField(String className, String fieldName, TypeDesc type) { putfield(0, Opcode.PUTSTATIC, mCp.addConstantField(className, fieldName, type), type); }
public void loadStaticField(String className, String fieldName, TypeDesc type) { getfield(1, Opcode.GETSTATIC, mCp.addConstantField(className, fieldName, type), type); }