Mercurial > hg > truffle
changeset 16811:e8d9b3827d4b
Truffle-DSL: added hashing for type lookups.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Wed, 13 Aug 2014 18:06:18 +0200 |
parents | f3a1020472cf |
children | c22fc3f48c60 |
files | graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeData.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeSystemData.java |
diffstat | 2 files changed, 9 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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();
--- 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<TypeData> types; private List<TypeMirror> primitiveTypeMirrors = new ArrayList<>(); private List<TypeMirror> boxedTypeMirrors = new ArrayList<>(); + private Map<TypeMirror, TypeData> cachedTypes = new HashMap<>(); private List<ImplicitCastData> implicitCasts; private List<TypeCastData> 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; }