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

Side by Side Diff: pkg/compiler/lib/src/js_backend/native_data.dart

Issue 2978613002: Convert data objects eagerly from K to J (Closed)
Patch Set: Created 3 years, 5 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
« no previous file with comments | « no previous file | pkg/compiler/lib/src/js_backend/runtime_types.dart » ('j') | 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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 js_backend.native_data; 5 library js_backend.native_data;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common_elements.dart' show ElementEnvironment; 8 import '../common_elements.dart' show ElementEnvironment;
9 import '../elements/entities.dart'; 9 import '../elements/entities.dart';
10 import '../native/behavior.dart' show NativeBehavior; 10 import '../native/behavior.dart' show NativeBehavior;
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 nativeMemberName, 364 nativeMemberName,
365 nativeMethodBehavior, 365 nativeMethodBehavior,
366 nativeFieldLoadBehavior, 366 nativeFieldLoadBehavior,
367 nativeFieldStoreBehavior, 367 nativeFieldStoreBehavior,
368 jsInteropLibraryNames, 368 jsInteropLibraryNames,
369 anonymousJsInteropClasses, 369 anonymousJsInteropClasses,
370 jsInteropClassNames, 370 jsInteropClassNames,
371 jsInteropMemberNames); 371 jsInteropMemberNames);
372 } 372 }
373 373
374 class NativeDataImpl implements NativeData { 374 class NativeDataImpl implements NativeData, NativeBasicDataImpl {
375 /// Prefix used to escape JS names that are not valid Dart names 375 /// Prefix used to escape JS names that are not valid Dart names
376 /// when using JSInterop. 376 /// when using JSInterop.
377 static const String _jsInteropEscapePrefix = r'JS$'; 377 static const String _jsInteropEscapePrefix = r'JS$';
378 378
379 final NativeBasicData _nativeBasicData; 379 final NativeBasicDataImpl _nativeBasicData;
380 380
381 /// The JavaScript names for native JavaScript elements implemented. 381 /// The JavaScript names for native JavaScript elements implemented.
382 final Map<MemberEntity, String> nativeMemberName; 382 final Map<MemberEntity, String> nativeMemberName;
383 383
384 /// Cache for [NativeBehavior]s for calling native methods. 384 /// Cache for [NativeBehavior]s for calling native methods.
385 final Map<FunctionEntity, NativeBehavior> nativeMethodBehavior; 385 final Map<FunctionEntity, NativeBehavior> nativeMethodBehavior;
386 386
387 /// Cache for [NativeBehavior]s for reading from native fields. 387 /// Cache for [NativeBehavior]s for reading from native fields.
388 final Map<MemberEntity, NativeBehavior> nativeFieldLoadBehavior; 388 final Map<MemberEntity, NativeBehavior> nativeFieldLoadBehavior;
389 389
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 return nativeFieldStoreBehavior[field]; 596 return nativeFieldStoreBehavior[field];
597 } 597 }
598 598
599 /// Apply JS$ escaping scheme to convert possible escaped Dart names into 599 /// Apply JS$ escaping scheme to convert possible escaped Dart names into
600 /// JS names. 600 /// JS names.
601 String computeUnescapedJSInteropName(String name) { 601 String computeUnescapedJSInteropName(String name) {
602 return name.startsWith(_jsInteropEscapePrefix) 602 return name.startsWith(_jsInteropEscapePrefix)
603 ? name.substring(_jsInteropEscapePrefix.length) 603 ? name.substring(_jsInteropEscapePrefix.length)
604 : name; 604 : name;
605 } 605 }
606
607 @override
608 Set<ClassEntity> get jsInteropClasses => _nativeBasicData.jsInteropClasses;
609
610 @override
611 Set<LibraryEntity> get jsInteropLibraries =>
612 _nativeBasicData.jsInteropLibraries;
613
614 @override
615 Map<ClassEntity, NativeClassTag> get nativeClassTagInfo =>
616 _nativeBasicData.nativeClassTagInfo;
617
618 @override
619 ElementEnvironment get _env => _nativeBasicData._env;
606 } 620 }
607 621
608 class NativeClassTag { 622 class NativeClassTag {
609 final List<String> names; 623 final List<String> names;
610 final bool isNonLeaf; 624 final bool isNonLeaf;
611 625
612 factory NativeClassTag(String tagText) { 626 factory NativeClassTag(String tagText) {
613 List<String> tags = tagText.split(','); 627 List<String> tags = tagText.split(',');
614 List<String> names = tags.where((s) => !s.startsWith('!')).toList(); 628 List<String> names = tags.where((s) => !s.startsWith('!')).toList();
615 bool isNonLeaf = tags.contains('!nonleaf'); 629 bool isNonLeaf = tags.contains('!nonleaf');
(...skipping 17 matching lines...) Expand all
633 int get hashCode => Hashing.listHash(names, isNonLeaf.hashCode); 647 int get hashCode => Hashing.listHash(names, isNonLeaf.hashCode);
634 648
635 bool operator ==(other) { 649 bool operator ==(other) {
636 if (identical(this, other)) return true; 650 if (identical(this, other)) return true;
637 if (other is! NativeClassTag) return false; 651 if (other is! NativeClassTag) return false;
638 return equalElements(names, other.names) && isNonLeaf == other.isNonLeaf; 652 return equalElements(names, other.names) && isNonLeaf == other.isNonLeaf;
639 } 653 }
640 654
641 String toString() => text; 655 String toString() => text;
642 } 656 }
OLDNEW
« no previous file with comments | « no previous file | pkg/compiler/lib/src/js_backend/runtime_types.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698