Mercurial > hg > graal-jvmci-8
comparison graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeCodeGenerator.java @ 9848:a5d3e0973e83
Fixed @Specialization#executeWith order was ignored.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Mon, 03 Jun 2013 20:28:50 +0200 |
parents | 476cbd115289 |
children | 746fa60be266 |
comparison
equal
deleted
inserted
replaced
9847:931f9ced42ad | 9848:a5d3e0973e83 |
---|---|
1841 builder.string("."); | 1841 builder.string("."); |
1842 } | 1842 } |
1843 | 1843 |
1844 builder.startCall(execType.getMethodName()); | 1844 builder.startCall(execType.getMethodName()); |
1845 | 1845 |
1846 List<ActualParameter> signatureParameters = getModel().getSignatureParameters(); | |
1847 int index = 0; | 1846 int index = 0; |
1848 for (ActualParameter parameter : execType.getParameters()) { | 1847 for (ActualParameter parameter : execType.getParameters()) { |
1849 | 1848 |
1850 if (!parameter.getSpecification().isSignature()) { | 1849 if (!parameter.getSpecification().isSignature()) { |
1851 builder.string(parameter.getLocalName()); | 1850 builder.string(parameter.getLocalName()); |
1852 } else { | 1851 } else { |
1853 if (index < signatureParameters.size()) { | 1852 if (index < targetField.getExecuteWith().size()) { |
1854 ActualParameter specializationParam = signatureParameters.get(index); | 1853 NodeChildData child = targetField.getExecuteWith().get(index); |
1854 | |
1855 ParameterSpec spec = getModel().getSpecification().findParameterSpec(child.getName()); | |
1856 List<ActualParameter> specializationParams = getModel().findParameters(spec); | |
1857 | |
1858 if (specializationParams.isEmpty()) { | |
1859 builder.defaultValue(parameter.getType()); | |
1860 continue; | |
1861 } | |
1862 | |
1863 ActualParameter specializationParam = specializationParams.get(0); | |
1855 | 1864 |
1856 TypeData targetType = parameter.getTypeSystemType(); | 1865 TypeData targetType = parameter.getTypeSystemType(); |
1857 TypeData sourceType = specializationParam.getTypeSystemType(); | 1866 TypeData sourceType = specializationParam.getTypeSystemType(); |
1858 String localName = specializationParam.getLocalName(); | 1867 String localName = specializationParam.getLocalName(); |
1868 | |
1859 if (unexpectedParameter != null && unexpectedParameter.getLocalName().equals(specializationParam.getLocalName())) { | 1869 if (unexpectedParameter != null && unexpectedParameter.getLocalName().equals(specializationParam.getLocalName())) { |
1860 localName = "ex.getResult()"; | 1870 localName = "ex.getResult()"; |
1861 sourceType = getModel().getNode().getTypeSystem().getGenericTypeData(); | 1871 sourceType = getModel().getNode().getTypeSystem().getGenericTypeData(); |
1862 } | 1872 } |
1863 | 1873 |