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

Side by Side Diff: pkg/compiler/lib/src/js_emitter/new_emitter/emitter.dart

Issue 836753002: dart2js: First part of native support in the new emitter. (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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dart2js.new_js_emitter.emitter; 5 library dart2js.new_js_emitter.emitter;
6 6
7 import '../model.dart'; 7 import '../model.dart';
8 import 'model_emitter.dart'; 8 import 'model_emitter.dart';
9 import '../../common.dart'; 9 import '../../common.dart';
10 import '../../elements/elements.dart' show FieldElement; 10 import '../../elements/elements.dart' show FieldElement;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 // which compresses a tiny bit better. 62 // which compresses a tiny bit better.
63 int r = namer.constantLongName(a).compareTo(namer.constantLongName(b)); 63 int r = namer.constantLongName(a).compareTo(namer.constantLongName(b));
64 if (r != 0) return r; 64 if (r != 0) return r;
65 // Resolve collisions in the long name by using the constant name (i.e. JS 65 // Resolve collisions in the long name by using the constant name (i.e. JS
66 // name) which is unique. 66 // name) which is unique.
67 return namer.constantName(a).compareTo(namer.constantName(b)); 67 return namer.constantName(a).compareTo(namer.constantName(b));
68 } 68 }
69 69
70 @override 70 @override
71 js.Expression generateEmbeddedGlobalAccess(String global) { 71 js.Expression generateEmbeddedGlobalAccess(String global) {
72 // TODO(floitsch): We should not use "init" for globals. 72 return _emitter.generateEmbeddedGlobalAccess(global);
73 return js.js("init.$global");
74 } 73 }
75 74
76 @override 75 @override
77 js.Expression constantReference(ConstantValue value) { 76 js.Expression constantReference(ConstantValue value) {
78 return _emitter.constantEmitter.reference(value); 77 return _emitter.constantEmitter.reference(value);
79 } 78 }
80 79
81 js.PropertyAccess _globalPropertyAccess(Element element) { 80 js.PropertyAccess _globalPropertyAccess(Element element) {
82 String name = namer.getNameX(element); 81 String name = namer.getNameX(element);
83 js.PropertyAccess pa = new js.PropertyAccess.field( 82 js.PropertyAccess pa = new js.PropertyAccess.field(
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 @override 129 @override
131 js.Expression typeAccess(Element element) { 130 js.Expression typeAccess(Element element) {
132 // TODO(floitsch): minify 'ensureResolved'. 131 // TODO(floitsch): minify 'ensureResolved'.
133 // TODO(floitsch): don't emit `ensureResolved` for eager classes. 132 // TODO(floitsch): don't emit `ensureResolved` for eager classes.
134 return js.js('#.ensureResolved()', _globalPropertyAccess(element)); 133 return js.js('#.ensureResolved()', _globalPropertyAccess(element));
135 } 134 }
136 135
137 @override 136 @override
138 void invalidateCaches() {} 137 void invalidateCaches() {}
139 } 138 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698