Mercurial > hg > graal-compiler
comparison graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/template/TemplateMethod.java @ 11193:6879565ee10b
Truffle-DSL: Fixed the second specialization is unreachable if two specializations have the exactly same signature (also guards) and are ordered next to each other.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Thu, 01 Aug 2013 20:52:03 +0200 |
parents | b8fe1fe004ec |
children | efe58aa92f86 |
comparison
equal
deleted
inserted
replaced
11192:0460c44aef60 | 11193:6879565ee10b |
---|---|
214 } | 214 } |
215 } | 215 } |
216 return signature; | 216 return signature; |
217 } | 217 } |
218 | 218 |
219 public ActualParameter getSignatureParameter(int searchIndex) { | |
220 int index = 0; | |
221 for (ActualParameter parameter : getParameters()) { | |
222 if (!parameter.getSpecification().isSignature()) { | |
223 continue; | |
224 } | |
225 if (index == searchIndex) { | |
226 return parameter; | |
227 } | |
228 index++; | |
229 } | |
230 return null; | |
231 } | |
232 | |
219 public void updateSignature(Signature signature) { | 233 public void updateSignature(Signature signature) { |
220 assert signature.size() >= 1; | 234 assert signature.size() >= 1; |
221 int signatureIndex = 0; | 235 int signatureIndex = 0; |
222 for (ActualParameter parameter : getReturnTypeAndParameters()) { | 236 for (ActualParameter parameter : getReturnTypeAndParameters()) { |
223 if (!parameter.getSpecification().isSignature()) { | 237 if (!parameter.getSpecification().isSignature()) { |
362 } else { | 376 } else { |
363 signature.types.add(genericSignature.types.get(i)); | 377 signature.types.add(genericSignature.types.get(i)); |
364 } | 378 } |
365 } | 379 } |
366 return signature; | 380 return signature; |
381 } | |
382 | |
383 public boolean equalsParameters(Signature other) { | |
384 if (size() != other.size()) { | |
385 return false; | |
386 } | |
387 return types.subList(1, types.size()).equals(other.types.subList(1, other.types.size())); | |
367 } | 388 } |
368 | 389 |
369 @Override | 390 @Override |
370 public boolean equals(Object obj) { | 391 public boolean equals(Object obj) { |
371 if (obj instanceof Signature) { | 392 if (obj instanceof Signature) { |