public String toString(MethodGen method) { String[] variables = new String[method.getLocalVariables().length]; LocalVariableGen[] variablesGen = method.getLocalVariables(); for(int i=0; i<variablesGen.length ;i++) { variables[i] = variablesGen[i].getName(); } return toString(variables); }
public void setMaxLocals() { // Get the current number of local variable slots int maxLocals = super.getMaxLocals(); // Get numer of actual variables final LocalVariableGen[] localVars = super.getLocalVariables(); if (localVars != null) { if (localVars.length > maxLocals) maxLocals = localVars.length; } // We want at least 5 local variable slots (for parameters) if (maxLocals < 5) maxLocals = 5; super.setMaxLocals(maxLocals); }
public String toString(MethodGen method) { String[] variables = new String[method.getLocalVariables().length]; LocalVariableGen[] variablesGen = method.getLocalVariables(); for(int i=0; i<variablesGen.length ;i++) { variables[i] = variablesGen[i].getName(); } return toString(variables); }
public static LocalVariableGen getLocalVariable(MethodGen methodGen, int index) { for(LocalVariableGen local : methodGen.getLocalVariables()) { if(local.getIndex() == index) { return local; } } return null; }
public void setMaxLocals() { // Get the current number of local variable slots int maxLocals = super.getMaxLocals(); // Get numer of actual variables final LocalVariableGen[] localVars = super.getLocalVariables(); if (localVars != null) { if (localVars.length > maxLocals) maxLocals = localVars.length; } // We want at least 5 local variable slots (for parameters) if (maxLocals < 5) maxLocals = 5; super.setMaxLocals(maxLocals); }
public void setMaxLocals() { // Get the current number of local variable slots int maxLocals = super.getMaxLocals(); // Get numer of actual variables final LocalVariableGen[] localVars = super.getLocalVariables(); if (localVars != null) { if (localVars.length > maxLocals) maxLocals = localVars.length; } // We want at least 5 local variable slots (for parameters) if (maxLocals < 5) maxLocals = 5; super.setMaxLocals(maxLocals); }
public void setMaxLocals() { // Get the current number of local variable slots int maxLocals = super.getMaxLocals(); // Get numer of actual variables final LocalVariableGen[] localVars = super.getLocalVariables(); if (localVars != null) { if (localVars.length > maxLocals) maxLocals = localVars.length; } // We want at least 5 local variable slots (for parameters) if (maxLocals < 5) maxLocals = 5; super.setMaxLocals(maxLocals); }
/** * @return `LocalVariableTable' attribute of all the local variables of this method. */ public LocalVariableTable getLocalVariableTable(ConstantPoolGen cp) { LocalVariableGen[] lg = getLocalVariables(); int size = lg.length; LocalVariable[] lv = new LocalVariable[size]; for(int i=0; i < size; i++) lv[i] = lg[i].getLocalVariable(cp); return new LocalVariableTable(cp.addUtf8("LocalVariableTable"), 2 + lv.length * 10, lv, cp.getConstantPool()); }
/** * @return `LocalVariableTable' attribute of all the local variables of this method. */ public LocalVariableTable getLocalVariableTable( final ConstantPoolGen cp ) { final LocalVariableGen[] lg = getLocalVariables(); final int size = lg.length; final LocalVariable[] lv = new LocalVariable[size]; for (int i = 0; i < size; i++) { lv[i] = lg[i].getLocalVariable(cp); } return new LocalVariableTable(cp.addUtf8("LocalVariableTable"), 2 + lv.length * 10, lv, cp .getConstantPool()); }
public void testRemoveLocalVariables() throws Exception { final MethodGen mg = getMethod(Foo.class, "bar"); final LocalVariableGen lv = mg.getLocalVariables()[1]; assertEquals("variable name", "a", lv.getName()); final InstructionHandle start = lv.getStart(); final InstructionHandle end = lv.getEnd(); assertNotNull("scope start", start); assertNotNull("scope end", end); assertTrue("scope start not targeted by the local variable", Arrays.asList(start.getTargeters()).contains(lv)); assertTrue("scope end not targeted by the local variable", Arrays.asList(end.getTargeters()).contains(lv)); // now let's remove the local variables mg.removeLocalVariables(); assertFalse("scope start still targeted by the removed variable", Arrays.asList(start.getTargeters()).contains(lv)); assertFalse("scope end still targeted by the removed variable", Arrays.asList(end.getTargeters()).contains(lv)); assertNull("scope start", lv.getStart()); assertNull("scope end", lv.getEnd()); }
public void testRemoveLocalVariable() throws Exception { final MethodGen mg = getMethod(Foo.class, "bar"); final LocalVariableGen lv = mg.getLocalVariables()[1]; assertEquals("variable name", "a", lv.getName()); final InstructionHandle start = lv.getStart(); final InstructionHandle end = lv.getEnd(); assertNotNull("scope start", start); assertNotNull("scope end", end); assertTrue("scope start not targeted by the local variable", Arrays.asList(start.getTargeters()).contains(lv)); assertTrue("scope end not targeted by the local variable", Arrays.asList(end.getTargeters()).contains(lv)); // now let's remove the local variable mg.removeLocalVariable(lv); assertFalse("scope start still targeted by the removed variable", Arrays.asList(start.getTargeters()).contains(lv)); assertFalse("scope end still targeted by the removed variable", Arrays.asList(end.getTargeters()).contains(lv)); assertNull("scope start", lv.getStart()); assertNull("scope end", lv.getEnd()); }
public InstructionList makeWillBeAddedInstructionList(final MethodGen methodGen, final int firstStringOffset) { if (firstStringOffset == -1) { return new InstructionList(); } final LocalVariableGen localVariableGen = methodGen.getLocalVariables()[firstStringOffset]; Instruction instruction; if (localVariableGen != null) { instruction = new ALOAD(localVariableGen.getIndex()); } else { instruction = new ACONST_NULL(); } return createPrintln(methodGen.getConstantPool(), instruction); }