Mercurial > hg > graal-compiler
changeset 7752:388848bbe03d
Fixed resolve of generic execute type.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Fri, 08 Feb 2013 16:23:11 +0100 |
parents | ef1b41ea0a90 |
children | c17ee8823d72 |
files | graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeData.java |
diffstat | 1 files changed, 16 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeData.java Fri Feb 08 16:07:33 2013 +0100 +++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeData.java Fri Feb 08 16:23:11 2013 +0100 @@ -130,20 +130,25 @@ List<ExecutableTypeData> types = findGenericExecutableTypes(context); if (types.size() == 1) { return types.get(0); - } else { - ExecutableTypeData execType = null; - for (ExecutableTypeData type : types) { - TypeData returnType = type.getReturnType().getActualTypeData(getTypeSystem()); - if (!returnType.isVoid()) { - if (execType != null) { - // multiple generic types not allowed - return null; - } - execType = type; + } else if (types.size() == 2) { + if (types.get(0).getType().isVoid()) { + return types.get(1); + } else if (types.get(1).getType().isVoid()) { + return types.get(0); + } + } + + ExecutableTypeData execType = null; + for (ExecutableTypeData type : types) { + TypeData returnType = type.getReturnType().getActualTypeData(getTypeSystem()); + if (returnType.isGeneric()) { + if (execType != null) { + return null; } + execType = type; } - return execType; } + return execType; } private List<ExecutableTypeData> findGenericExecutableTypes(ProcessorContext context) {