Chromium Code Reviews| Index: dart/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart |
| diff --git a/dart/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart b/dart/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart |
| index 900823debae97ed865376b6903a98f92076cd5c0..ef845d98650e4f1f1ec695d9734420c995717d26 100644 |
| --- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart |
| +++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart |
| @@ -6,6 +6,9 @@ part of js_backend; |
| class NativeEmitter { |
| + final Map<Element, ClassBuilder> cachedBuilders = |
| + new HashMap<Element, ClassBuilder>.identity(); |
|
Johnni Winther
2014/06/19 09:22:32
Ditto.
|
| + |
| CodeEmitterTask emitter; |
| CodeBuffer nativeBuffer; |
| @@ -279,6 +282,16 @@ class NativeEmitter { |
| } |
| ClassBuilder generateNativeClass(ClassElement classElement) { |
| + ClassBuilder builder; |
| + if (compiler.hasIncrementalSupport) { |
| + builder = cachedBuilders[classElement]; |
| + if (builder != null) return builder; |
| + builder = new ClassBuilder(backend.namer); |
| + cachedBuilders[classElement] = builder; |
| + } else { |
| + builder = new ClassBuilder(backend.namer); |
| + } |
| + |
| // TODO(sra): Issue #13731- this is commented out as part of custom element |
| // constructor work. |
| //assert(!classElement.hasBackendMembers); |
| @@ -294,7 +307,6 @@ class NativeEmitter { |
| String superName = backend.namer.getNameOfClass(superclass); |
| - ClassBuilder builder = new ClassBuilder(backend.namer); |
| emitter.classEmitter.emitClassConstructor(classElement, builder); |
| bool hasFields = emitter.classEmitter.emitFields( |
| classElement, builder, superName, classIsNative: true); |