Index: sdk/lib/_internal/compiler/implementation/lib/interceptors.dart |
=================================================================== |
--- sdk/lib/_internal/compiler/implementation/lib/interceptors.dart (revision 15265) |
+++ sdk/lib/_internal/compiler/implementation/lib/interceptors.dart (working copy) |
@@ -24,16 +24,28 @@ |
* defined in an interceptor class. |
*/ |
getInterceptor(object) { |
- if (object is String) return const JSString(); |
- if (isJsArray(object)) return const JSArray(); |
- if (object is int) return const JSInt(); |
- if (object is double) return const JSDouble(); |
- if (object is bool) return const JSBool(); |
- if (object == null) return const JSNull(); |
- if (JS('String', 'typeof #', object) == 'function') return const JSFunction(); |
- return const ObjectInterceptor(); |
+ if (object is String) return stringInterceptor; |
+ if (isJsArray(object)) return arrayInterceptor; |
+ if (object is int) return intInterceptor; |
+ if (object is double) return doubleInterceptor; |
+ if (object is bool) return boolInterceptor; |
+ if (object == null) return nullInterceptor; |
+ if (JS('String', 'typeof #', object) == 'function') { |
+ return functionInterceptor; |
+ } |
+ return objectInterceptor; |
} |
+final arrayInterceptor = const JSArray(); |
+final boolInterceptor = const JSBool(); |
+final doubleInterceptor = const JSDouble(); |
+final intInterceptor = const JSInt(); |
+final functionInterceptor = const JSFunction(); |
+final nullInterceptor = const JSNull(); |
+final numberInterceptor = const JSNumber(); |
+final stringInterceptor = const JSString(); |
+final objectInterceptor = const ObjectInterceptor(); |
+ |
/** |
* The interceptor class for tear-off static methods. Unlike |
* tear-off instance methods, tear-off static methods are just the JS |