int registerA = original.getRegisterA();
private void testForExpectedInstruction(String register0, String expectedClassName) { ExecutionGraphManipulator manipulator = getOptimizedGraph(METHOD_NAME, 0, register0, "Ljava/lang/String;"); BuilderInstruction21c instruction = (BuilderInstruction21c) manipulator.getInstruction(ADDRESS); assertEquals(Opcode.CONST_CLASS, instruction.getOpcode()); assertEquals(0, instruction.getRegisterA()); String actualClassName = ReferenceUtil.getReferenceString(instruction.getReference()); assertEquals(expectedClassName, actualClassName); } }
@Test public void thisReferencedWithInvokeIsCorrectlyOptimizedAsConstClass() { String methodName = "invokeGetClassOnThis()V"; ExecutionGraphManipulator manipulator = getOptimizedGraph(vm, methodName, 1, new UninitializedInstance(thisReference), CLASS_NAME); assertEquals(BuilderInstruction21c.class, manipulator.getInstruction(ADDRESS).getClass()); BuilderInstruction21c instruction = (BuilderInstruction21c) manipulator.getInstruction(ADDRESS); assertEquals(Opcode.CONST_CLASS, instruction.getOpcode()); assertEquals(0, instruction.getRegisterA()); String actualClassName = ReferenceUtil.getReferenceString(instruction.getReference()); assertEquals(CLASS_NAME, actualClassName); }
@Test public void thisReferencedWithInvokeRangeIsCorrectlyOptimizedAsConstClass() { String methodName = "invokeRangeGetClassOnThis()V"; ExecutionGraphManipulator manipulator = getOptimizedGraph(vm, methodName, 1, new UninitializedInstance(thisReference), CLASS_NAME); assertEquals(BuilderInstruction21c.class, manipulator.getInstruction(ADDRESS).getClass()); BuilderInstruction21c instruction = (BuilderInstruction21c) manipulator.getInstruction(ADDRESS); assertEquals(Opcode.CONST_CLASS, instruction.getOpcode()); assertEquals(0, instruction.getRegisterA()); String actualClassName = ReferenceUtil.getReferenceString(instruction.getReference()); assertEquals(CLASS_NAME, actualClassName); } }
private void testForExpectedInstruction(Object register1, String expectedConstant) { VirtualType instanceType = vm.getClassManager().getVirtualType("Ljava/lang/String;"); ExecutionGraphManipulator manipulator = getOptimizedGraph(METHOD_NAME, 0, new UninitializedInstance(instanceType), "Ljava/lang/String;", 1, register1, "[B"); BuilderInstruction21c instruction = (BuilderInstruction21c) manipulator.getInstruction (ADDRESS); assertEquals(Opcode.CONST_STRING, instruction.getOpcode()); assertEquals(0, instruction.getRegisterA()); String actualConstant = ((StringReference) instruction.getReference()).getString(); assertEquals(expectedConstant, actualConstant); } }