From 79cbf362632c0735d576bb01511dcf849a07f613 Mon Sep 17 00:00:00 2001 From: Pavel Jbanov Date: Thu, 13 Jun 2013 12:04:37 -0700 Subject: [PATCH] A hack for slow reflectClass --- lib/mirrors.dart | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/mirrors.dart b/lib/mirrors.dart index d689be179..80909f5b2 100644 --- a/lib/mirrors.dart +++ b/lib/mirrors.dart @@ -1,5 +1,17 @@ part of angular; +Map _reflectionCache = new Map(); + +// A hack for slow reflectClass. +ClassMirror fastReflectClass(Type type) { + ClassMirror reflectee = _reflectionCache[type]; + if (reflectee == null) { + reflectee = reflectClass(type); + _reflectionCache[type] = reflectee; + } + return reflectee; +} + /** * A set of functions which build on top of dart:mirrors making them * easier to use. @@ -8,7 +20,7 @@ part of angular; // Return the value of a type's static field or null if it is not defined. reflectStaticField(Type type, String field) { Symbol fieldSym = new Symbol(field); - var reflection = reflectClass(type); + var reflection = fastReflectClass(type); if (!reflection.members.containsKey(fieldSym)) return null; if (!reflection.members[fieldSym].isStatic) return null;