# HG changeset patch # User Christian Humer # Date 1363263029 -3600 # Node ID 97ee911c4c748203491b0e69249597592de862d2 # Parent b81f4216009341daf5515b1c18826a89d97ad510 Fixed behaviour of useSpecializations for Generic specializations. diff -r b81f42160093 -r 97ee911c4c74 graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java --- 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 createGeneratedGenericMethod(NodeData node) { TypeMirror genericReturnType = node.getGenericSpecialization().getReturnType().getActualType(); - if (node.getGenericSpecialization().isUseSpecializationsForGeneric() && node.needsRewrites(context)) { + if (node.needsRewrites(context)) { List methods = new ArrayList<>(); List 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(); diff -r b81f42160093 -r 97ee911c4c74 graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/WriteLocalNode.java --- 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;