public void addLocationsOfProgram(ProgramReader program) { for (int i = 0; i < program.basicBlockCount(); ++i) { BasicBlockReader block = program.basicBlockAt(i); block.readAllInstructions(this); } }
BasicBlockReader block = program.basicBlockAt(i); sb.append(prefix).append("$").append(i).append("\n"); if (block == null) {
private boolean hasMonitor(MethodReader method) { if (method.hasModifier(ElementModifier.SYNCHRONIZED)) { return true; } ProgramReader program = method.getProgram(); AsyncInstructionReader insnReader = new AsyncInstructionReader(); for (int i = 0; i < program.basicBlockCount(); ++i) { program.basicBlockAt(i).readAllInstructions(insnReader); if (insnReader.async) { return true; } } return false; }
public Object interpret(ProgramReader program, Object[] parameters) throws InterpretException { variables = new Object[program.variableCount()]; System.arraycopy(parameters, 0, variables, 0, parameters.length); currentBlock = program.basicBlockAt(0); state = State.EXECUTING; BasicBlockReader block = program.basicBlockAt(i); for (PhiReader phi : block.readPhis()) { for (IncomingReader incoming : phi.readIncomings()) {
BasicBlockReader block = program.basicBlockAt(i); block.readAllInstructions(reader); for (PhiReader phi : block.readPhis()) {
public static Set<String> extractUsedResources(TeaVM vm) { Set<String> resources = new LinkedHashSet<>(); ClassReaderSource classSource = vm.getDependencyClassSource(); InstructionLocationReader reader = new InstructionLocationReader(resources); for (MethodReference methodRef : vm.getMethods()) { ClassReader cls = classSource.get(methodRef.getClassName()); if (cls == null) { continue; } MethodReader method = cls.getMethod(methodRef.getDescriptor()); if (method == null) { continue; } ProgramReader program = method.getProgram(); if (program == null) { continue; } for (int i = 0; i < program.basicBlockCount(); ++i) { program.basicBlockAt(i).readAllInstructions(reader); } } return resources; } }
.collect(Collectors.toList()); for (int i = 0; i < template.basicBlockCount(); ++i) { BasicBlockReader templateBlock = template.basicBlockAt(i); blockIndex = i == 0 ? startBlock : substitutor.blockOffset + i; BasicBlock targetBlock = program.basicBlockAt(blockIndex); BasicBlockReader templateBlock = template.basicBlockAt(i); blockIndex = i == 0 ? startBlock : substitutor.blockOffset + i; BasicBlock targetBlock = program.basicBlockAt(blockIndex);
public static Program copy(ProgramReader program) { Program copy = new Program(); for (int i = 0; i < program.variableCount(); ++i) { Variable var = copy.createVariable(); var.setDebugName(program.variableAt(i).getDebugName()); var.setLabel(program.variableAt(i).getLabel()); } for (int i = 0; i < program.basicBlockCount(); ++i) { copy.createBasicBlock(); } for (int i = 0; i < program.basicBlockCount(); ++i) { BasicBlockReader block = program.basicBlockAt(i); BasicBlock blockCopy = copy.basicBlockAt(i); copyBasicBlock(block, blockCopy); } return copy; }
BasicBlockReader block = program.basicBlockAt(i); for (PhiReader phi : block.readPhis()) { for (IncomingReader incoming : phi.readIncomings()) {
arrayElemBuilder = new GraphBuilder(sz); for (int i = 0; i < program.basicBlockCount(); ++i) { BasicBlockReader block = program.basicBlockAt(i);
public void addLocationsOfProgram(ProgramReader program) { for (int i = 0; i < program.basicBlockCount(); ++i) { BasicBlockReader block = program.basicBlockAt(i); block.readAllInstructions(this); } }
BasicBlockReader block = program.basicBlockAt(i); sb.append(prefix).append("$").append(i).append("\n"); if (block == null) {
private boolean hasMonitor(MethodReader method) { if (method.hasModifier(ElementModifier.SYNCHRONIZED)) { return true; } ProgramReader program = method.getProgram(); AsyncInstructionReader insnReader = new AsyncInstructionReader(); for (int i = 0; i < program.basicBlockCount(); ++i) { program.basicBlockAt(i).readAllInstructions(insnReader); if (insnReader.async) { return true; } } return false; }
public Object interpret(ProgramReader program, Object[] parameters) throws InterpretException { variables = new Object[program.variableCount()]; System.arraycopy(parameters, 0, variables, 0, parameters.length); currentBlock = program.basicBlockAt(0); state = State.EXECUTING; BasicBlockReader block = program.basicBlockAt(i); for (PhiReader phi : block.readPhis()) { for (IncomingReader incoming : phi.readIncomings()) {
BasicBlockReader block = program.basicBlockAt(i); block.readAllInstructions(reader); for (PhiReader phi : block.readPhis()) {
public Collection<String> getUsedResources() { if (vm == null) { return Collections.emptyList(); } Set<String> resources = new HashSet<>(); ClassReaderSource classSource = vm.getDependencyClassSource(); InstructionLocationReader reader = new InstructionLocationReader(resources); for (MethodReference methodRef : vm.getMethods()) { ClassReader cls = classSource.get(methodRef.getClassName()); if (cls == null) { continue; } MethodReader method = cls.getMethod(methodRef.getDescriptor()); if (method == null) { continue; } ProgramReader program = method.getProgram(); if (program == null) { continue; } for (int i = 0; i < program.basicBlockCount(); ++i) { program.basicBlockAt(i).readAllInstructions(reader); } } return resources; }
.collect(Collectors.toList()); for (int i = 0; i < template.basicBlockCount(); ++i) { BasicBlockReader templateBlock = template.basicBlockAt(i); blockIndex = i == 0 ? startBlock : substitutor.blockOffset + i; BasicBlock targetBlock = program.basicBlockAt(blockIndex); BasicBlockReader templateBlock = template.basicBlockAt(i); blockIndex = i == 0 ? startBlock : substitutor.blockOffset + i; BasicBlock targetBlock = program.basicBlockAt(blockIndex);
public static Program copy(ProgramReader program) { Program copy = new Program(); for (int i = 0; i < program.variableCount(); ++i) { Variable var = copy.createVariable(); var.setDebugName(program.variableAt(i).getDebugName()); var.setLabel(program.variableAt(i).getLabel()); } for (int i = 0; i < program.basicBlockCount(); ++i) { copy.createBasicBlock(); } for (int i = 0; i < program.basicBlockCount(); ++i) { BasicBlockReader block = program.basicBlockAt(i); BasicBlock blockCopy = copy.basicBlockAt(i); copyBasicBlock(block, blockCopy); } return copy; }
BasicBlockReader block = program.basicBlockAt(i); for (PhiReader phi : block.readPhis()) { for (IncomingReader incoming : phi.readIncomings()) {
arrayElemBuilder = new GraphBuilder(sz); for (int i = 0; i < program.basicBlockCount(); ++i) { BasicBlockReader block = program.basicBlockAt(i);