Mercurial > hg > graal-compiler
comparison graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java @ 7794:b891ec348f8a
Made the usage of generic types more flexible for short circuits and generic specializations.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Fri, 15 Feb 2013 19:32:58 +0100 |
parents | ca51efac4d57 |
children | 5ecf528d4131 |
comparison
equal
deleted
inserted
replaced
7793:8b48c8ebdff4 | 7794:b891ec348f8a |
---|---|
745 } | 745 } |
746 } | 746 } |
747 | 747 |
748 private void buildGenericValueExecute(CodeTreeBuilder builder, SpecializationData specialization, NodeFieldData field, NodeFieldData exceptionSpec) { | 748 private void buildGenericValueExecute(CodeTreeBuilder builder, SpecializationData specialization, NodeFieldData field, NodeFieldData exceptionSpec) { |
749 ActualParameter specParameter = specialization.findParameter(field.getName()); | 749 ActualParameter specParameter = specialization.findParameter(field.getName()); |
750 | 750 NodeData node = specialization.getNode(); |
751 boolean shortCircuit = startShortCircuit(builder, specialization, field, exceptionSpec); | 751 boolean shortCircuit = startShortCircuit(builder, specialization, field, exceptionSpec); |
752 | 752 |
753 builder.startStatement(); | 753 builder.startStatement(); |
754 if (!shortCircuit) { | 754 if (!shortCircuit) { |
755 builder.type(specialization.getNode().getTypeSystem().getGenericType()); | 755 builder.type(specialization.getNode().getTypeSystem().getGenericType()); |
756 builder.string(" "); | 756 builder.string(" "); |
757 } | 757 } |
758 | 758 |
759 builder.string(valueName(specialization, specParameter)); | 759 builder.string(valueName(specialization, specParameter)); |
760 builder.string(" = "); | 760 builder.string(" = "); |
761 ExecutableTypeData genericExecutableType = field.getNodeData().findGenericExecutableType(getContext()); | 761 ExecutableTypeData genericExecutableType = field.getNodeData().findGenericExecutableType(getContext(), specParameter.getActualTypeData(node.getTypeSystem())); |
762 if (genericExecutableType == null) { | 762 if (genericExecutableType == null) { |
763 throw new AssertionError("Must have generic executable type. Parser validation most likely failed. " + Arrays.toString(field.getNodeData().getExecutableTypes())); | 763 throw new AssertionError("Must have generic executable type. Parser validation most likely failed. " + Arrays.toString(field.getNodeData().getExecutableTypes())); |
764 } | 764 } |
765 buildExecute(builder, field, genericExecutableType); | 765 buildExecute(builder, field, genericExecutableType); |
766 builder.end(); | 766 builder.end(); |