- Local l = Jimple.v().newLocal("tmpRef" + (tfr++), IntType.v());
- body.getLocals().add(l);
- Local l2 = Jimple.v().newLocal("tmpRef" + (tfr++), IntType.v());
- body.getLocals().add(l2);
- Local l3 = Jimple.v().newLocal("tmpRef" + (tfr++), IntType.v());
- body.getLocals().add(l3);
- InstanceFieldRef sfr = Jimple.v().newInstanceFieldRef(body.getThisLocal(), getGladiatorFieldSizeRef(sc));
- body.getUnits().add(Jimple.v().newAssignStmt(l, sfr));
+ Local l = Jimple.v().newLocal("tmpRef" + (tfr++), IntType.v()); body.getLocals().add(l);
+ Local l2 = Jimple.v().newLocal("tmpRef" + (tfr++), IntType.v()); body.getLocals().add(l2);
+ Local l3 = Jimple.v().newLocal("tmpRef" + (tfr++), IntType.v()); body.getLocals().add(l3);
+
+ Stmt where = ((JimpleBody)mcInitBody).getFirstNonIdentityStmt();
+ SootField maxField = new SootField(subname + "$$max", IntType.v());
+ mc.addField(maxField);
+ mcInitBody.getUnits()
+ .insertBefore(Jimple.v().newAssignStmt(Jimple.v().newInstanceFieldRef(mcInitBody.getThisLocal(), maxField.makeRef()),
+ IntConstant.v(initialSize)),
+ where);
+
+ SootField sfr = new SootField(subname + "$$size", IntType.v());
+ mc.addField(sfr);
+ mcInitBody.getUnits()
+ .insertBefore(Jimple.v().newAssignStmt(Jimple.v().newInstanceFieldRef(mcInitBody.getThisLocal(), sfr.makeRef()),
+ IntConstant.v(0)),
+ where);
+
+ body.getUnits().add(Jimple.v().newAssignStmt(l, Jimple.v().newInstanceFieldRef(body.getThisLocal(), sfr.makeRef())));