Mercurial > hg > graal-jvmci-8
diff graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java @ 7679:5f3cba05c2fa
Cleanup and improved error messages.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Thu, 31 Jan 2013 16:21:46 +0100 |
parents | 5e3d1a68664e |
children | c5a4c817fe1c |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java Thu Jan 31 11:32:14 2013 +0100 +++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java Thu Jan 31 16:21:46 2013 +0100 @@ -149,7 +149,7 @@ nodeData.setExecutableTypes(executableTypes.toArray(new ExecutableTypeData[executableTypes.size()])); parsedNodes.put(Utils.getQualifiedName(type), nodeData); // node fields will resolve node - // types, to avoid endless loops +// types, to avoid endless loops NodeFieldData[] fields = parseFields(nodeData, elements, typeHierarchy); if (fields == null) { @@ -319,6 +319,19 @@ filteredExecutableTypes.add(t1); } } + + Collections.sort(filteredExecutableTypes, new Comparator<ExecutableTypeData>() { + + @Override + public int compare(ExecutableTypeData o1, ExecutableTypeData o2) { + int index1 = o1.getTypeSystem().findType(o1.getType()); + int index2 = o2.getTypeSystem().findType(o2.getType()); + if (index1 == -1 || index2 == -1) { + return 0; + } + return index1 - index2; + } + }); return filteredExecutableTypes; } @@ -425,7 +438,8 @@ context.getLog().error(errorElement, "Node type '%s' is invalid.", Utils.getQualifiedName(nodeType)); return null; } else if (fieldNodeData.findGenericExecutableType(context) == null) { - context.getLog().error(errorElement, "No executable generic type found for node '%s'.", Utils.getQualifiedName(nodeType)); + // TODO better error handling for (no or multiple?) + context.getLog().error(errorElement, "No or multiple executable generic types found for node '%s'.", Utils.getQualifiedName(nodeType)); return null; } } @@ -684,6 +698,11 @@ SpecializationData targetSpecialization = specializationMap.get(throwsData.getTransitionToName()); AnnotationValue value = Utils.getAnnotationValue(throwsData.getAnnotationMirror(), "transitionTo"); + if (targetSpecialization != null) { + log.error("Specialization throws current %s target %s compare %s.", sourceSpecialization.getMethodName(), targetSpecialization.getMethodName(), + compareSpecialization(typeSystem, sourceSpecialization, targetSpecialization)); + } + if (targetSpecialization == null) { log.error(throwsData.getSpecialization().getMethod(), throwsData.getAnnotationMirror(), value, "Specialization with name '%s' not found.", throwsData.getTransitionToName()); valid = false;