Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(408)

Unified Diff: pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart

Issue 878553002: dart2js: native classes go through the normal code path. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebase Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
index 2126c10a412f33034bbe42d34b0a50eeb8b4e3cf..1c7f2114f2277ff6e441ed0ee0595b8e6f0a2dd8 100644
--- a/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
@@ -47,7 +47,6 @@ class OldEmitter implements Emitter {
=> task.outputClassLists;
Map<OutputUnit, List<ConstantValue>> get outputConstantLists
=> task.outputConstantLists;
- List<ClassElement> get nativeClasses => task.nativeClasses;
final Map<String, String> mangledFieldNames = <String, String>{};
final Map<String, String> mangledGlobalFieldNames = <String, String>{};
final Set<String> recordedMangledNames = new Set<String>();
@@ -448,7 +447,7 @@ class OldEmitter implements Emitter {
return js(r'var inheritFrom = #', [result]);
}
- jsAst.Statement buildFinishClass() {
+ jsAst.Statement buildFinishClass(bool hasNativeClasses) {
String specProperty = '"${namer.nativeSpecProperty}"'; // "%"
jsAst.Expression finishedClassesAccess =
@@ -555,7 +554,7 @@ class OldEmitter implements Emitter {
}
}''', {'finishedClassesAccess': finishedClassesAccess,
'needsMixinSupport': needsMixinSupport,
- 'hasNativeClasses': nativeClasses.isNotEmpty,
+ 'hasNativeClasses': hasNativeClasses,
'nativeSuperclassTagName': embeddedNames.NATIVE_SUPERCLASS_TAG_NAME,
'interceptorsByTagAccess': interceptorsByTagAccess,
'leafTagsAccess': leafTagsAccess,
@@ -1374,8 +1373,7 @@ class OldEmitter implements Emitter {
}
void emitMainOutputUnit(Program program,
- Map<OutputUnit, String> deferredLoadHashes,
- CodeBuffer nativeBuffer) {
+ Map<OutputUnit, String> deferredLoadHashes) {
Fragment mainFragment = program.fragments.first;
OutputUnit mainOutputUnit = mainFragment.outputUnit;
@@ -1488,10 +1486,11 @@ class OldEmitter implements Emitter {
elementDescriptors.remove(library);
}
+ bool hasNativeClasses = program.outputContainsNativeClasses;
mainOutput
..addBuffer(
jsAst.prettyPrint(
- getReflectionDataParser(this, backend),
+ getReflectionDataParser(this, backend, hasNativeClasses),
compiler))
..add(n);
@@ -1530,7 +1529,6 @@ class OldEmitter implements Emitter {
emitLazilyInitializedStaticFields(mainOutput);
mainOutput.add('\n');
- mainOutput.addBuffer(nativeBuffer);
metadataEmitter.emitMetadata(mainOutput);
@@ -1764,28 +1762,6 @@ function(originalDescriptor, name, holder, isStatic, globalFunctionsAccess) {
return emitDeferredCode(program, outputBuffers);
}
- CodeBuffer buildNativesBuffer(Program program) {
- // Emit native classes on [nativeBuffer].
- // TODO(johnniwinther): Avoid creating a [CodeBuffer].
- final CodeBuffer nativeBuffer = new CodeBuffer();
-
- if (program.nativeClasses.isEmpty) return nativeBuffer;
-
-
- addComment('Native classes', nativeBuffer);
-
- for (Class cls in program.nativeClasses) {
- assert(cls.isNative);
- ClassBuilder enclosingBuilder = getElementDescriptor(cls.element);
- emitClass(cls, enclosingBuilder);
- }
-
- nativeEmitter.finishGenerateNativeClasses();
- nativeEmitter.assembleCode(nativeBuffer);
-
- return nativeBuffer;
- }
-
int emitProgram(ProgramBuilder programBuilder) {
Program program = programBuilder.buildProgram(
storeFunctionTypesInMetadata: true);
@@ -1802,8 +1778,7 @@ function(originalDescriptor, name, holder, isStatic, globalFunctionsAccess) {
// itself.
Map<OutputUnit, String> deferredLoadHashes =
emitDeferredOutputUnits(program);
- CodeBuffer nativeBuffer = buildNativesBuffer(program);
- emitMainOutputUnit(program, deferredLoadHashes, nativeBuffer);
+ emitMainOutputUnit(program, deferredLoadHashes);
if (backend.requiresPreamble &&
!backend.htmlLibraryIsLoaded) {

Powered by Google App Engine
This is Rietveld 408576698