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