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

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

Issue 1421003004: Add CoreClasses (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comment. Created 5 years, 1 month 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
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 part of dart2js.js_emitter; 5 part of dart2js.js_emitter;
6 6
7 class InterceptorStubGenerator { 7 class InterceptorStubGenerator {
8 final Compiler compiler; 8 final Compiler compiler;
9 final Namer namer; 9 final Namer namer;
10 final JavaScriptBackend backend; 10 final JavaScriptBackend backend;
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 if (hasNative) { 141 if (hasNative) {
142 statements.add(js.statement(r'''{ 142 statements.add(js.statement(r'''{
143 if (typeof receiver != "object") { 143 if (typeof receiver != "object") {
144 if (typeof receiver == "function" ) return #; 144 if (typeof receiver == "function" ) return #;
145 return receiver; 145 return receiver;
146 } 146 }
147 if (receiver instanceof #) return receiver; 147 if (receiver instanceof #) return receiver;
148 return #(receiver); 148 return #(receiver);
149 }''', [ 149 }''', [
150 interceptorFor(backend.jsJavaScriptFunctionClass), 150 interceptorFor(backend.jsJavaScriptFunctionClass),
151 backend.emitter.constructorAccess(compiler.objectClass), 151 backend.emitter.constructorAccess(compiler.coreClasses.objectClass),
152 backend.emitter 152 backend.emitter
153 .staticFunctionAccess(backend.getNativeInterceptorMethod)])); 153 .staticFunctionAccess(backend.getNativeInterceptorMethod)]));
154 154
155 } else { 155 } else {
156 ClassElement jsUnknown = backend.jsUnknownJavaScriptObjectClass; 156 ClassElement jsUnknown = backend.jsUnknownJavaScriptObjectClass;
157 if (compiler.codegenWorld 157 if (compiler.codegenWorld
158 .directlyInstantiatedClasses.contains(jsUnknown)) { 158 .directlyInstantiatedClasses.contains(jsUnknown)) {
159 statements.add( 159 statements.add(
160 js.statement('if (!(receiver instanceof #)) return #;', 160 js.statement('if (!(receiver instanceof #)) return #;',
161 [backend.emitter.constructorAccess(compiler.objectClass), 161 [backend.emitter.constructorAccess(
162 compiler.coreClasses.objectClass),
162 interceptorFor(jsUnknown)])); 163 interceptorFor(jsUnknown)]));
163 } 164 }
164 165
165 statements.add(js.statement('return receiver')); 166 statements.add(js.statement('return receiver'));
166 } 167 }
167 168
168 return js('''function(receiver) { #; }''', new jsAst.Block(statements)); 169 return js('''function(receiver) { #; }''', new jsAst.Block(statements));
169 } 170 }
170 171
171 // Returns a statement that takes care of performance critical 172 // Returns a statement that takes care of performance critical
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 368
368 var map = new jsAst.ObjectInitializer(properties); 369 var map = new jsAst.ObjectInitializer(properties);
369 elements.add(map); 370 elements.add(map);
370 } 371 }
371 } 372 }
372 } 373 }
373 374
374 return new jsAst.ArrayInitializer(elements); 375 return new jsAst.ArrayInitializer(elements);
375 } 376 }
376 } 377 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698