@Override public void visit(InvokeDynamicInstruction insn) { if (insn.getReceiver() != null && !used[insn.getReceiver().getIndex()]) { insn.setReceiver(null); } }
@Override public void visit(InvokeDynamicInstruction insn) { List<Variable> args = insn.getArguments(); for (int i = 0; i < args.size(); ++i) { args.set(i, use(args.get(i))); } if (insn.getInstance() != null) { insn.setInstance(use(insn.getInstance())); } if (insn.getReceiver() != null) { insn.setReceiver(define(insn.getReceiver())); } }
@Override public void invokeDynamic(VariableReader receiver, VariableReader instance, MethodDescriptor method, List<? extends VariableReader> arguments, MethodHandle bootstrapMethod, List<RuntimeConstant> bootstrapArguments) { InvokeDynamicInstruction insn = new InvokeDynamicInstruction(); insn.setBootstrapMethod(bootstrapMethod); insn.setInstance(var(instance)); insn.setReceiver(var(receiver)); insn.setMethod(method); insn.getArguments().addAll(arguments.stream().map(this::var).collect(Collectors.toList())); insn.getBootstrapArguments().addAll(bootstrapArguments); add(insn); }
@Override public void invokeDynamic(VariableReader receiver, VariableReader instance, MethodDescriptor method, List<? extends VariableReader> arguments, MethodHandle bootstrapMethod, List<RuntimeConstant> bootstrapArguments) { InvokeDynamicInstruction insnCopy = new InvokeDynamicInstruction(); insnCopy.setMethod(method); insnCopy.setBootstrapMethod(bootstrapMethod); insnCopy.getBootstrapArguments().addAll(bootstrapArguments); if (instance != null) { insnCopy.setInstance(copyVar(instance)); } insnCopy.getArguments().addAll(arguments.stream().map(this::copyVar).collect(Collectors.toList())); insnCopy.setReceiver(receiver != null ? copyVar(receiver) : null); copy = insnCopy; copy.setLocation(location); }
@Override public void visit(InvokeDynamicInstruction insn) { if (insn.getReceiver() != null) { insn.setReceiver(map(insn.getReceiver())); } if (insn.getInstance() != null) { insn.setInstance(map(insn.getInstance())); } for (int i = 0; i < insn.getArguments().size(); ++i) { insn.getArguments().set(i, map(insn.getArguments().get(i))); } }
insn.setReceiver(getVariable(returnType.getSize() == 2 ? pushDouble() : pushSingle()));
short receiver = input.readShort(); short instance = input.readShort(); insn.setReceiver(receiver >= 0 ? program.variableAt(receiver) : null); insn.setInstance(instance >= 0 ? program.variableAt(instance) : null); insn.setMethod(parseMethodDescriptor(symbolTable.at(input.readInt())));
@Override public void visit(InvokeDynamicInstruction insn) { if (insn.getReceiver() != null && !used[insn.getReceiver().getIndex()]) { insn.setReceiver(null); } }
@Override public void visit(InvokeDynamicInstruction insn) { List<Variable> args = insn.getArguments(); for (int i = 0; i < args.size(); ++i) { args.set(i, use(args.get(i))); } if (insn.getInstance() != null) { insn.setInstance(use(insn.getInstance())); } if (insn.getReceiver() != null) { insn.setReceiver(define(insn.getReceiver())); } }
@Override public void invokeDynamic(VariableReader receiver, VariableReader instance, MethodDescriptor method, List<? extends VariableReader> arguments, MethodHandle bootstrapMethod, List<RuntimeConstant> bootstrapArguments) { InvokeDynamicInstruction insn = new InvokeDynamicInstruction(); insn.setBootstrapMethod(bootstrapMethod); insn.setInstance(var(instance)); insn.setReceiver(var(receiver)); insn.setMethod(method); insn.getArguments().addAll(arguments.stream().map(this::var).collect(Collectors.toList())); insn.getBootstrapArguments().addAll(bootstrapArguments); add(insn); }
@Override public void invokeDynamic(VariableReader receiver, VariableReader instance, MethodDescriptor method, List<? extends VariableReader> arguments, MethodHandle bootstrapMethod, List<RuntimeConstant> bootstrapArguments) { InvokeDynamicInstruction insnCopy = new InvokeDynamicInstruction(); insnCopy.setMethod(method); insnCopy.setBootstrapMethod(bootstrapMethod); insnCopy.getBootstrapArguments().addAll(bootstrapArguments); if (instance != null) { insnCopy.setInstance(copyVar(instance)); } insnCopy.getArguments().addAll(arguments.stream().map(this::copyVar).collect(Collectors.toList())); insnCopy.setReceiver(receiver != null ? copyVar(receiver) : null); copy = insnCopy; copy.setLocation(location); }
@Override public void visit(InvokeDynamicInstruction insn) { if (insn.getReceiver() != null) { insn.setReceiver(map(insn.getReceiver())); } if (insn.getInstance() != null) { insn.setInstance(map(insn.getInstance())); } for (int i = 0; i < insn.getArguments().size(); ++i) { insn.getArguments().set(i, map(insn.getArguments().get(i))); } }
insn.setReceiver(getVariable(returnType.getSize() == 2 ? pushDouble() : pushSingle()));
short receiver = input.readShort(); short instance = input.readShort(); insn.setReceiver(receiver >= 0 ? program.variableAt(receiver) : null); insn.setInstance(instance >= 0 ? program.variableAt(instance) : null); insn.setMethod(MethodDescriptor.parse(symbolTable.at(input.readInt())));