| Index: dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
|
| diff --git a/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart b/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
|
| index 21e7b5ca20fb720a8661c077e3daa58b0f9b5429..02a8b4c0c4f37d36bcd0705cb71ada21574fe96e 100644
|
| --- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
|
| +++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
|
| @@ -879,6 +879,10 @@ class CodeEmitterTask extends CompilerTask {
|
|
|
| js('str += "}\\n"'),
|
|
|
| + js('var Constants = #', js.fun('', [])),
|
| + // Install 'C' as a prototype to ensure it has a hidden class.
|
| + js('Constants.prototype = ${namer.globalObjectForConstant(null)}'),
|
| +
|
| js('var newIsolate = new Function(str)'),
|
| js('newIsolate.prototype = isolatePrototype'),
|
| js('isolatePrototype.constructor = newIsolate'),
|
| @@ -2683,6 +2687,7 @@ class CodeEmitterTask extends CompilerTask {
|
| List<Constant> constants = handler.getConstantsForEmission(
|
| compareConstants);
|
| bool addedMakeConstantList = false;
|
| + eagerBuffer.write('var ${namer.globalObjectForConstant(null)}$_=$_{}$N');
|
| for (Constant constant in constants) {
|
| if (isConstantInlinedOrAlreadyEmitted(constant)) continue;
|
| String name = namer.constantName(constant);
|
| @@ -2691,7 +2696,8 @@ class CodeEmitterTask extends CompilerTask {
|
| emitMakeConstantList(eagerBuffer);
|
| }
|
| CodeBuffer buffer = bufferForConstant(constant, eagerBuffer);
|
| - jsAst.Expression init = js('$isolateProperties.$name = #',
|
| + jsAst.Expression init = js(
|
| + '${namer.globalObjectForConstant(constant)}.$name = #',
|
| constantInitializerExpression(constant));
|
| buffer.write(jsAst.prettyPrint(init, compiler));
|
| buffer.write('$N');
|
|
|