# HG changeset patch # User Christian Humer # Date 1407945978 -7200 # Node ID e8d9b3827d4b994cb0ee6617911cdcc902e75ee0 # Parent f3a1020472cf1b1def5c8ec8dd9ef105c9e863d3 Truffle-DSL: added hashing for type lookups. diff -r f3a1020472cf -r e8d9b3827d4b graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeData.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeData.java Wed Aug 13 18:06:18 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeData.java Wed Aug 13 18:06:18 2014 +0200 @@ -48,6 +48,10 @@ this.boxedType = boxedType; } + public int getIndex() { + return index; + } + @Override public Element getMessageElement() { return typeSystem.getMessageElement(); diff -r f3a1020472cf -r e8d9b3827d4b graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeSystemData.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeSystemData.java Wed Aug 13 18:06:18 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeSystemData.java Wed Aug 13 18:06:18 2014 +0200 @@ -35,6 +35,7 @@ private List types; private List primitiveTypeMirrors = new ArrayList<>(); private List boxedTypeMirrors = new ArrayList<>(); + private Map cachedTypes = new HashMap<>(); private List implicitCasts; private List casts; @@ -58,6 +59,7 @@ for (TypeData typeData : types) { primitiveTypeMirrors.add(typeData.getPrimitiveType()); boxedTypeMirrors.add(typeData.getBoxedType()); + cachedTypes.put(typeData.getPrimitiveType(), typeData); } } } @@ -152,10 +154,9 @@ } public int findType(TypeMirror type) { - for (int i = 0; i < types.size(); i++) { - if (ElementUtils.typeEquals(types.get(i).getPrimitiveType(), type)) { - return i; - } + TypeData data = cachedTypes.get(type); + if (data != null) { + return data.getIndex(); } return -1; }