OpenJDK / graal / graal-jvmci-8
changeset 8277:97ee911c4c74
Fixed behaviour of useSpecializations for Generic specializations.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Thu, 14 Mar 2013 13:10:29 +0100 |
parents | b81f42160093 |
children | a219e2a5a92f |
files | graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/WriteLocalNode.java |
diffstat | 2 files changed, 11 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java Wed Mar 13 21:11:03 2013 +0100 +++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java Thu Mar 14 13:10:29 2013 +0100 @@ -189,7 +189,7 @@ return prefix; } - if (!specialization.getNode().getGenericSpecialization().isUseSpecializationsForGeneric() || !specialization.getNode().needsRewrites(context)) { + if (!specialization.getNode().needsRewrites(context)) { return prefix; } @@ -939,7 +939,7 @@ private List<CodeExecutableElement> createGeneratedGenericMethod(NodeData node) { TypeMirror genericReturnType = node.getGenericSpecialization().getReturnType().getActualType(); - if (node.getGenericSpecialization().isUseSpecializationsForGeneric() && node.needsRewrites(context)) { + if (node.needsRewrites(context)) { List<CodeExecutableElement> methods = new ArrayList<>(); List<SpecializationData> specializations = node.getSpecializations(); @@ -1219,7 +1219,14 @@ if (specialization.getMethod() == null && !node.needsRewrites(context)) { emitEncounteredSynthetic(builder); } else if (specialization.isUninitialized() || specialization.isGeneric()) { - builder.startReturn().startCall(factoryClassName(node), generatedGenericMethodName(null)); + String genericMethodName; + if (!specialization.isUseSpecializationsForGeneric()) { + genericMethodName = generatedGenericMethodName(specialization); + } else { + genericMethodName = generatedGenericMethodName(null); + } + + builder.startReturn().startCall(factoryClassName(node), genericMethodName); builder.string("this"); addValueParameterNames(builder, specialization, null, true, true); builder.end().end();
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/WriteLocalNode.java Wed Mar 13 21:11:03 2013 +0100 +++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/WriteLocalNode.java Thu Mar 14 13:10:29 2013 +0100 @@ -64,7 +64,7 @@ return right; } - @Generic + @Generic(useSpecializations = false) public Object writeGeneric(VirtualFrame frame, Object right) { frame.setObject(slot, right); return right;