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

Side by Side Diff: dart/sdk/lib/_internal/compiler/implementation/lib/mirrors_patch.dart

Issue 16135004: Rename JS_CURRENT_ISOLATE to JS_CURRENT_ISOLATE_CONTEXT. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 6 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 // Patch library for dart:mirrors. 5 // Patch library for dart:mirrors.
6 6
7 import 'dart:_foreign_helper' show JS; 7 import 'dart:_foreign_helper' show JS, JS_CURRENT_ISOLATE;
8 import 'dart:_collection-dev' as _symbol_dev; 8 import 'dart:_collection-dev' as _symbol_dev;
9 import 'dart:_js_helper' show createInvocationMirror; 9 import 'dart:_js_helper' show createInvocationMirror;
10 import 'dart:_interceptors' show Interceptor; 10 import 'dart:_interceptors' show Interceptor;
11 11
12 patch class MirrorSystem { 12 patch class MirrorSystem {
13 patch static String getName(Symbol symbol) => _n(symbol); 13 patch static String getName(Symbol symbol) => _n(symbol);
14 } 14 }
15 15
16 class _MirrorSystem implements MirrorSystem { 16 class _MirrorSystem implements MirrorSystem {
17 TypeMirror get dynamicType => _dynamicType; 17 TypeMirror get dynamicType => _dynamicType;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 Symbol symbol = _s(_classes[i]); 65 Symbol symbol = _s(_classes[i]);
66 _ClassMirror cls = _reflectClass(symbol, _classes[i + 1]); 66 _ClassMirror cls = _reflectClass(symbol, _classes[i + 1]);
67 result[symbol] = cls; 67 result[symbol] = cls;
68 cls._owner = this; 68 cls._owner = this;
69 } 69 }
70 return result; 70 return result;
71 } 71 }
72 72
73 InstanceMirror setField(Symbol fieldName, Object arg) { 73 InstanceMirror setField(Symbol fieldName, Object arg) {
74 // TODO(ahe): This is extremely dangerous!!! 74 // TODO(ahe): This is extremely dangerous!!!
75 JS('void', r'$[#] = #', _n(fieldName), arg); 75 JS('void', '#[#] = #', JS_CURRENT_ISOLATE(), _n(fieldName), arg);
76 return _reflect(arg); 76 return _reflect(arg);
77 } 77 }
78 78
79 InstanceMirror getField(Symbol fieldName) { 79 InstanceMirror getField(Symbol fieldName) {
80 // TODO(ahe): This is extremely dangerous!!! 80 // TODO(ahe): This is extremely dangerous!!!
81 return _reflect(JS('', r'$[#]', _n(fieldName))); 81 return _reflect(JS('', '#[#]', JS_CURRENT_ISOLATE(), _n(fieldName)));
82 } 82 }
83 83
84 Map<Symbol, MethodMirror> get functions { 84 Map<Symbol, MethodMirror> get functions {
85 var result = new Map<Symbol, MethodMirror>(); 85 var result = new Map<Symbol, MethodMirror>();
86 for (int i = 0; i < _functions.length; i++) { 86 for (int i = 0; i < _functions.length; i++) {
87 String name = _functions[i]; 87 String name = _functions[i];
88 Symbol symbol = _s(name); 88 Symbol symbol = _s(name);
89 int parameterCount = null; // TODO(ahe): Compute this. 89 int parameterCount = null; // TODO(ahe): Compute this.
90 _MethodMirror mirror = 90 _MethodMirror mirror =
91 // TODO(ahe): Create accessor for accessing $. It is also 91 // TODO(ahe): Create accessor for accessing $. It is also
92 // used in js_helper. 92 // used in js_helper.
93 new _MethodMirror(symbol, JS('', r'$[#]', name), parameterCount); 93 new _MethodMirror(
94 symbol, JS('', '#[#]', JS_CURRENT_ISOLATE(), name), parameterCount );
94 // TODO(ahe): Cache mirrors. 95 // TODO(ahe): Cache mirrors.
95 result[symbol] = mirror; 96 result[symbol] = mirror;
96 mirror._owner = this; 97 mirror._owner = this;
97 } 98 }
98 return result; 99 return result;
99 } 100 }
100 101
101 Map<Symbol, MethodMirror> get getters { 102 Map<Symbol, MethodMirror> get getters {
102 var result = new Map<Symbol, MethodMirror>(); 103 var result = new Map<Symbol, MethodMirror>();
103 // TODO(ahe): Implement this. 104 // TODO(ahe): Implement this.
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 result[key] = value; 300 result[key] = value;
300 } 301 }
301 getters.forEach(addToResult); 302 getters.forEach(addToResult);
302 setters.forEach(addToResult); 303 setters.forEach(addToResult);
303 variables.forEach(addToResult); 304 variables.forEach(addToResult);
304 return result; 305 return result;
305 } 306 }
306 307
307 InstanceMirror setField(Symbol fieldName, Object arg) { 308 InstanceMirror setField(Symbol fieldName, Object arg) {
308 // TODO(ahe): This is extremely dangerous!!! 309 // TODO(ahe): This is extremely dangerous!!!
309 JS('void', r'$[#] = #', '${_n(simpleName)}_${_n(fieldName)}', arg); 310 JS('void', '#[#] = #', JS_CURRENT_ISOLATE(),
311 '${_n(simpleName)}_${_n(fieldName)}', arg);
310 return _reflect(arg); 312 return _reflect(arg);
311 } 313 }
312 314
313 InstanceMirror getField(Symbol fieldName) { 315 InstanceMirror getField(Symbol fieldName) {
314 // TODO(ahe): This is extremely dangerous!!! 316 // TODO(ahe): This is extremely dangerous!!!
315 return _reflect( 317 return _reflect(
316 JS('', r'$[#]', '${_n(simpleName)}_${_n(fieldName)}')); 318 JS('', '#[#]', JS_CURRENT_ISOLATE(),
319 '${_n(simpleName)}_${_n(fieldName)}'));
317 } 320 }
318 321
319 InstanceMirror newInstance(Symbol constructorName, 322 InstanceMirror newInstance(Symbol constructorName,
320 List positionalArguments, 323 List positionalArguments,
321 [Map<Symbol,dynamic> namedArguments]) { 324 [Map<Symbol,dynamic> namedArguments]) {
322 if (namedArguments != null && !namedArguments.isEmpty) { 325 if (namedArguments != null && !namedArguments.isEmpty) {
323 throw new UnsupportedError('Named arguments are not implemented'); 326 throw new UnsupportedError('Named arguments are not implemented');
324 } 327 }
325 String constructorName = '${_n(simpleName)}\$${_n(constructorName)}'; 328 String constructorName = '${_n(simpleName)}\$${_n(constructorName)}';
326 return _reflect(JS('', r'$[#].apply($, #)', constructorName, 329 return _reflect(JS('', r'#[#].apply(#, #)', JS_CURRENT_ISOLATE(),
330 constructorName,
331 JS_CURRENT_ISOLATE(),
327 new List.from(positionalArguments))); 332 new List.from(positionalArguments)));
328 } 333 }
329 334
330 Future<InstanceMirror> newInstanceAsync( 335 Future<InstanceMirror> newInstanceAsync(
331 Symbol constructorName, 336 Symbol constructorName,
332 List positionalArguments, 337 List positionalArguments,
333 [Map<Symbol, dynamic> namedArguments]) { 338 [Map<Symbol, dynamic> namedArguments]) {
334 if (namedArguments != null && !namedArguments.isEmpty) { 339 if (namedArguments != null && !namedArguments.isEmpty) {
335 throw new UnsupportedError('Named arguments are not implemented'); 340 throw new UnsupportedError('Named arguments are not implemented');
336 } 341 }
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 462
458 Symbol get qualifiedName => _computeQualifiedName(owner, simpleName); 463 Symbol get qualifiedName => _computeQualifiedName(owner, simpleName);
459 } 464 }
460 465
461 Symbol _computeQualifiedName(DeclarationMirror owner, Symbol simpleName) { 466 Symbol _computeQualifiedName(DeclarationMirror owner, Symbol simpleName) {
462 if (owner == null) return simpleName; 467 if (owner == null) return simpleName;
463 String ownerName = _n(owner.qualifiedName); 468 String ownerName = _n(owner.qualifiedName);
464 if (ownerName == '') return simpleName; 469 if (ownerName == '') return simpleName;
465 return _s('$ownerName.${_n(simpleName)}'); 470 return _s('$ownerName.${_n(simpleName)}');
466 } 471 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698