# HG changeset patch # User Christian Humer # Date 1360336991 -3600 # Node ID 388848bbe03d0456297d400e8f4f74d0df651674 # Parent ef1b41ea0a90d258279e418efd730bd55f0831d7 Fixed resolve of generic execute type. diff -r ef1b41ea0a90 -r 388848bbe03d graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeData.java --- 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 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 findGenericExecutableTypes(ProcessorContext context) {