List of usage examples for org.objectweb.asm.tree InsnList get
public AbstractInsnNode get(final int index)
From source file:de.tuberlin.uebb.jbop.optimizer.loop.ForLoopUnrollerTest.java
License:Open Source License
/** * Tests the Loopunroller for a loop with the test-instructions at the beginning. */// www . j av a2 s. c o m @Test public void testForLoopTypeTwo() { // INIT final LabelNode check = new LabelNode(); final LabelNode ende = new LabelNode(); builder.add(ICONST_0)// .add(ISTORE, 1)// .addInsn(check)// .add(ICONST_5)// .add(ILOAD, 1)// .add(IF_ICMPGT, ende)// .add(NOP)// .add(NOP)// .add(NOP)// .add(IINC, 1, 1)// .add(GOTO, check)// .addInsn(ende)// .add(NOP)// .addReturn(); // RUN assertEquals(14, method.instructions.size()); final InsnList optimized = optimizer.optimize(method.instructions, method); // ASSERT assertEquals(38, optimized.size()); // int node = 0; for (int i = 0; i < 6; ++i) { assertEquals(i, NodeHelper.getNumberValue(optimized.get(node)).intValue()); node++; assertEquals(Opcodes.ISTORE, optimized.get(node).getOpcode()); node++; assertEquals(Opcodes.NOP, optimized.get(node).getOpcode()); node++; assertEquals(Opcodes.NOP, optimized.get(node).getOpcode()); node++; assertEquals(Opcodes.NOP, optimized.get(node).getOpcode()); node++; assertEquals(Opcodes.NOP, optimized.get(node).getOpcode()); node++; } assertEquals(Opcodes.NOP, optimized.get(node).getOpcode()); node++; assertEquals(Opcodes.RETURN, optimized.get(node).getOpcode()); node++; }
From source file:de.tuberlin.uebb.jbop.optimizer.var.FinalFieldInlinerTest.java
License:Open Source License
/** * Tests that FinalFieldInliner is working correctly for int-Fields. * //from w ww .ja va2 s. c o m * @throws Exception * the exception */ @Test public void testFinalFieldInlinerIntField() throws Exception { // INIT initTestMethod("I", 42, 1); // RUN final InsnList optimized = inliner.optimize(method.instructions, method); // ASSERT assertEquals(2, optimized.size()); assertEquals(42, NodeHelper.getNumberValue(optimized.get(0)).intValue()); }
From source file:de.tuberlin.uebb.jbop.optimizer.var.FinalFieldInlinerTest.java
License:Open Source License
/** * Tests that FinalFieldInliner is working correctly for double-Fields. * /*from w w w . j a va 2 s .com*/ * @throws Exception * the exception */ @Test public void testFinalFieldInlinerDoubleField() throws Exception { // INIT initTestMethod("D", 23.0, 2); // RUN final InsnList optimized = inliner.optimize(method.instructions, method); // ASSERT assertEquals(2, optimized.size()); assertEquals(23.0, NodeHelper.getNumberValue(optimized.get(0)).doubleValue(), .0001); }
From source file:de.tuberlin.uebb.jbop.optimizer.var.FinalFieldInlinerTest.java
License:Open Source License
/** * Tests that FinalFieldInliner is working correctly for long-Fields. * //from w ww . j a v a2 s . co m * @throws Exception * the exception */ @Test public void testFinalFieldInlinerLongField() throws Exception { // INIT initTestMethod("J", 12L, 3); // RUN final InsnList optimized = inliner.optimize(method.instructions, method); // ASSERT assertEquals(2, optimized.size()); assertEquals(12L, NodeHelper.getNumberValue(optimized.get(0)).longValue()); }
From source file:de.tuberlin.uebb.jbop.optimizer.var.FinalFieldInlinerTest.java
License:Open Source License
/** * Tests that FinalFieldInliner is working correctly for float-Fields. * // w w w . j a v a 2 s . c o m * @throws Exception * the exception */ @Test public void testFinalFieldInlinerFloatField() throws Exception { // INIT initTestMethod("F", 13.13F, 4); // RUN final InsnList optimized = inliner.optimize(method.instructions, method); // ASSERT assertEquals(2, optimized.size()); assertEquals(13.13F, NodeHelper.getNumberValue(optimized.get(0)).floatValue(), .0001); }
From source file:de.tuberlin.uebb.jbop.optimizer.var.FinalFieldInlinerTest.java
License:Open Source License
/** * Tests that FinalFieldInliner is working correctly for byte-Fields. * /* ww w .java 2s . c o m*/ * @throws Exception * the exception */ @Test public void testFinalFieldInlinerByteField() throws Exception { // INIT initTestMethod("B", (byte) 1, 5); // RUN final InsnList optimized = inliner.optimize(method.instructions, method); // ASSERT assertEquals(2, optimized.size()); assertEquals((byte) 1, NodeHelper.getNumberValue(optimized.get(0)).byteValue()); }
From source file:de.tuberlin.uebb.jbop.optimizer.var.FinalFieldInlinerTest.java
License:Open Source License
/** * Tests that FinalFieldInliner is working correctly for short-Fields. * /*from w w w.j ava 2s . c o m*/ * @throws Exception * the exception */ @Test public void testFinalFieldInlinerShortField() throws Exception { // INIT initTestMethod("S", (short) 3, 6); // RUN final InsnList optimized = inliner.optimize(method.instructions, method); // ASSERT assertEquals(2, optimized.size()); assertEquals((short) 3, NodeHelper.getNumberValue(optimized.get(0)).byteValue()); }
From source file:de.tuberlin.uebb.jbop.optimizer.var.FinalFieldInlinerTest.java
License:Open Source License
/** * Tests that FinalFieldInliner is working correctly for boolean-Fields. * /* w ww .ja v a 2 s .co m*/ * @throws Exception * the exception */ @Test public void testFinalFieldInlinerBooleanField() throws Exception { // INIT initTestMethod("Z", true, 7); // RUN final InsnList optimized = inliner.optimize(method.instructions, method); // ASSERT assertEquals(2, optimized.size()); assertTrue(NodeHelper.getBooleanValue(optimized.get(0))); }
From source file:de.tuberlin.uebb.jbop.optimizer.var.FinalFieldInlinerTest.java
License:Open Source License
/** * Tests that FinalFieldInliner is working correctly for boolean-Fields. * /* www . ja v a 2s . c o m*/ * @throws Exception * the exception */ @Test public void testFinalFieldInlinerCharField() throws Exception { // INIT initTestMethod("C", 'C', 8); // RUN final InsnList optimized = inliner.optimize(method.instructions, method); // ASSERT assertEquals(2, optimized.size()); assertEquals('C', NodeHelper.getCharValue(optimized.get(0))); }
From source file:de.tuberlin.uebb.jbop.optimizer.var.FinalFieldInlinerTest.java
License:Open Source License
/** * Tests that finalFieldInliner is is working correctly for field-Chains with mutli-arrays. * /*w w w .j a v a 2s . c o m*/ * @throws Exception * the exception */ @Test public void testFinalFieldInlinerFieldChainMultiArray() throws Exception { // INIT final ClassNodeBuilder builderC = ClassNodeBuilder.createClass("de.tuberlin.uebb.jbop.optimizer.var.CM") .addField("d", "[[D").withModifiers(ACC_PRIVATE, ACC_FINAL).withAnnotation(ImmutableArray.class) .addToConstructor(new VarInsnNode(ALOAD, 0)).// addToConstructor(new InsnNode(ICONST_1)).// addToConstructor(new TypeInsnNode(ANEWARRAY, "[D")).// addToConstructor(new InsnNode(DUP)).// addToConstructor(new InsnNode(ICONST_0)).// addToConstructor(new InsnNode(ICONST_1)).// addToConstructor(new IntInsnNode(NEWARRAY, Opcodes.T_DOUBLE)).// addToConstructor(new InsnNode(DUP)).// addToConstructor(new InsnNode(ICONST_0)).// addToConstructor(new InsnNode(DCONST_1)).// addToConstructor(new InsnNode(DASTORE)).// addToConstructor(new InsnNode(AASTORE)).// addToConstructor(new FieldInsnNode(PUTFIELD, "de/tuberlin/uebb/jbop/optimizer/var/CM", "d", "[[D")).// toClass(); final ClassNodeBuilder builderB = ClassNodeBuilder.createClass("de.tuberlin.uebb.jbop.optimizer.var.BM") .addField("c", Type.getDescriptor(builderC.getBuildedClass())).withModifiers(ACC_PRIVATE, ACC_FINAL) .initWith(null).toClass(); final ClassNodeBuilder builderA = ClassNodeBuilder.createClass("de.tuberlin.uebb.jbop.optimizer.var.AM") .addField("b", Type.getDescriptor(builderB.getBuildedClass())).withModifiers(ACC_PRIVATE, ACC_FINAL) .initWith(null).toClass(); final ClassNodeBuilder builderTestClass = ClassNodeBuilder .createClass("de.tuberlin.uebb.jbop.optimizer.var.ChainedTestClassM") .addField("a", Type.getDescriptor(builderA.getBuildedClass())).withModifiers(ACC_PRIVATE, ACC_FINAL) .initWith(null).// addMethod("get", "()D").// addGetClassField("a").// ; addGetField(builderA, "b").// addGetField(builderB, "c").// addGetField(builderC, "d").// addInsn(new InsnNode(ICONST_0)).// addInsn(new InsnNode(AALOAD)).// addInsn(new InsnNode(ICONST_0)).// addInsn(new InsnNode(DALOAD)).// addInsn(new InsnNode(DRETURN));// // RUN final Object instance = builderTestClass.instance(); inliner.setInputObject(instance); method = builderTestClass.getMethod("get"); final InsnList optimized = inliner.optimize(method.instructions, method); // ASSERT assertEquals(2, optimized.size()); assertEquals(1.0, NodeHelper.getNumberValue(optimized.get(0)).doubleValue(), .00001); }