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

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

Issue 829473003: dart2js: move native boilerplate code into a separate file. (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
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1ad8c6382e785678ae8fd44d0fc99e78a38d705e..5121465f30116663caba3272165b82768ab0a4a3 100644
--- a/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/old_emitter/emitter.dart
@@ -927,65 +927,6 @@ class OldEmitter implements Emitter {
[backend.emitter.staticFunctionAccess(isolateMain), mainAccess]);
}
- /**
- * Emits code that sets the `isolateTag embedded global to a unique string.
- */
- jsAst.Expression generateIsolateAffinityTagInitialization() {
- jsAst.Expression getIsolateTagAccess =
- generateEmbeddedGlobalAccess(embeddedNames.GET_ISOLATE_TAG);
- jsAst.Expression isolateTagAccess =
- generateEmbeddedGlobalAccess(embeddedNames.ISOLATE_TAG);
-
- return js('''
- !function() {
- // On V8, the 'intern' function converts a string to a symbol, which
- // makes property access much faster.
- function intern(s) {
- var o = {};
- o[s] = 1;
- return Object.keys(convertToFastObject(o))[0];
- }
-
- #getIsolateTag = function(name) {
- return intern("___dart_" + name + #isolateTag);
- };
-
- // To ensure that different programs loaded into the same context (page)
- // use distinct dispatch properies, we place an object on `Object` to
- // contain the names already in use.
- var tableProperty = "___dart_isolate_tags_";
- var usedProperties = Object[tableProperty] ||
- (Object[tableProperty] = Object.create(null));
-
- var rootProperty = "_${generateIsolateTagRoot()}";
- for (var i = 0; ; i++) {
- var property = intern(rootProperty + "_" + i + "_");
- if (!(property in usedProperties)) {
- usedProperties[property] = 1;
- #isolateTag = property;
- break;
- }
- }
- }()
- ''',
- {'getIsolateTag': getIsolateTagAccess, 'isolateTag': isolateTagAccess});
- }
-
- jsAst.Expression generateDispatchPropertyNameInitialization() {
- jsAst.Expression dispatchPropertyNameAccess =
- generateEmbeddedGlobalAccess(embeddedNames.DISPATCH_PROPERTY_NAME);
- jsAst.Expression getIsolateTagAccess =
- generateEmbeddedGlobalAccess(embeddedNames.GET_ISOLATE_TAG);
- return js('# = #("dispatch_record")',
- [dispatchPropertyNameAccess,
- getIsolateTagAccess]);
- }
-
- String generateIsolateTagRoot() {
- // TODO(sra): MD5 of contributing source code or URIs?
- return 'ZxYxX';
- }
-
emitMain(CodeBuffer buffer) {
if (compiler.isMockCompilation) return;
Element main = compiler.mainFunction;
@@ -1002,16 +943,20 @@ class OldEmitter implements Emitter {
mainCallClosure = backend.emitter.staticFunctionAccess(main);
}
+ NativeGenerator nativeGenerator =
+ new NativeGenerator(generateEmbeddedGlobalAccess);
if (backend.needToInitializeIsolateAffinityTag) {
buffer.write(
- jsAst.prettyPrint(generateIsolateAffinityTagInitialization(),
- compiler, monitor: compiler.dumpInfoTask));
+ jsAst.prettyPrint(
+ nativeGenerator.generateIsolateAffinityTagInitialization(),
+ compiler, monitor: compiler.dumpInfoTask));
buffer.write(N);
}
if (backend.needToInitializeDispatchProperty) {
assert(backend.needToInitializeIsolateAffinityTag);
buffer.write(
- jsAst.prettyPrint(generateDispatchPropertyNameInitialization(),
+ jsAst.prettyPrint(
+ nativeGenerator.generateDispatchPropertyNameInitialization(),
compiler, monitor: compiler.dumpInfoTask));
buffer.write(N);
}
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/new_emitter/model_emitter.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698