Mercurial > hg > truffle
comparison graal/GraalCompiler/src/com/sun/c1x/ir/Invoke.java @ 2825:9ba6a8abe894
Fix Invoke bci problem
author | Gilles Duboscq <gilles.duboscq@oracle.com> |
---|---|
date | Mon, 30 May 2011 18:01:32 +0200 |
parents | 9bc0c2eb00d6 |
children | d6f3dbb4e3b5 |
comparison
equal
deleted
inserted
replaced
2824:244921d7cf50 | 2825:9ba6a8abe894 |
---|---|
79 } | 79 } |
80 | 80 |
81 public final int opcode; | 81 public final int opcode; |
82 public final RiMethod target; | 82 public final RiMethod target; |
83 public final RiType returnType; | 83 public final RiType returnType; |
84 public final int bci; // XXX needed because we can not compute the bci from the sateBefore bci of this Invoke was optimized from INVOKEINTERFACE to INVOKESPECIAL | |
84 | 85 |
85 /** | 86 /** |
86 * Constructs a new Invoke instruction. | 87 * Constructs a new Invoke instruction. |
87 * | 88 * |
88 * @param opcode the opcode of the invoke | 89 * @param opcode the opcode of the invoke |
90 * @param args the list of instructions producing arguments to the invocation, including the receiver object | 91 * @param args the list of instructions producing arguments to the invocation, including the receiver object |
91 * @param isStatic {@code true} if this call is static (no receiver object) | 92 * @param isStatic {@code true} if this call is static (no receiver object) |
92 * @param target the target method being called | 93 * @param target the target method being called |
93 * @param stateBefore the state before executing the invocation | 94 * @param stateBefore the state before executing the invocation |
94 */ | 95 */ |
95 public Invoke(int opcode, CiKind result, Value[] args, RiMethod target, RiType returnType, Graph graph) { | 96 public Invoke(int opcode, CiKind result, Value[] args, RiMethod target, RiType returnType, Graph graph, int bci) { |
96 super(result, args.length, SUCCESSOR_COUNT, graph); | 97 super(result, args.length, SUCCESSOR_COUNT, graph); |
97 this.opcode = opcode; | 98 this.opcode = opcode; |
98 this.target = target; | 99 this.target = target; |
99 this.returnType = returnType; | 100 this.returnType = returnType; |
101 this.bci = bci; | |
100 | 102 |
101 this.argumentCount = args.length; | 103 this.argumentCount = args.length; |
102 for (int i = 0; i < args.length; i++) { | 104 for (int i = 0; i < args.length; i++) { |
103 setArgument(i, args[i]); | 105 setArgument(i, args[i]); |
104 } | 106 } |