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

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

Issue 883703002: dart2js: Not all interceptor accesses are safe. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 '../program_builder.dart' show ProgramBuilder; 7 import '../program_builder.dart' show ProgramBuilder;
8 import '../model.dart'; 8 import '../model.dart';
9 import 'model_emitter.dart'; 9 import 'model_emitter.dart';
10 import '../../common.dart'; 10 import '../../common.dart';
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 121
122 @override 122 @override
123 js.PropertyAccess prototypeAccess(ClassElement element, 123 js.PropertyAccess prototypeAccess(ClassElement element,
124 bool hasBeenInstantiated) { 124 bool hasBeenInstantiated) {
125 js.Expression constructor = 125 js.Expression constructor =
126 hasBeenInstantiated ? constructorAccess(element) : typeAccess(element); 126 hasBeenInstantiated ? constructorAccess(element) : typeAccess(element);
127 return js.js('#.prototype', constructor); 127 return js.js('#.prototype', constructor);
128 } 128 }
129 129
130 @override 130 @override
131 js.PropertyAccess interceptorClassAccess(ClassElement element) { 131 js.Expression interceptorClassAccess(ClassElement element) {
132 // Interceptors are eagerly constructed. It's safe to just access them. 132 // Some interceptors are eagerly constructed. However, native interceptors
133 return _globalPropertyAccess(element); 133 // aren't.
134 return js.js('#.ensureResolved()', _globalPropertyAccess(element));
134 } 135 }
135 136
136 @override 137 @override
137 js.Expression typeAccess(Element element) { 138 js.Expression typeAccess(Element element) {
138 // TODO(floitsch): minify 'ensureResolved'. 139 // TODO(floitsch): minify 'ensureResolved'.
139 // TODO(floitsch): don't emit `ensureResolved` for eager classes. 140 // TODO(floitsch): don't emit `ensureResolved` for eager classes.
140 return js.js('#.ensureResolved()', _globalPropertyAccess(element)); 141 return js.js('#.ensureResolved()', _globalPropertyAccess(element));
141 } 142 }
142 143
143 @override 144 @override
144 void invalidateCaches() {} 145 void invalidateCaches() {}
145 } 146 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698