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

Unified Diff: dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart

Issue 72383004: Version 1.0.0.7 (Closed) Base URL: http://dart.googlecode.com/svn/trunk/
Patch Set: Created 7 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 side-by-side diff with in-line comments
Download patch
Index: dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
===================================================================
--- dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart (revision 30333)
+++ dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart (working copy)
@@ -231,6 +231,8 @@
TypeMask extendableArrayType;
TypeMask nonNullType;
+ /// Maps special classes to their implementation (JSXxx) class.
+ Map<ClassElement, ClassElement> implementationClasses;
Element getNativeInterceptorMethod;
bool needToInitializeDispatchProperty = false;
@@ -578,6 +580,14 @@
compiler.findInterceptor('UnknownJavaScriptObject'),
];
+ implementationClasses = <ClassElement, ClassElement>{};
+ implementationClasses[compiler.intClass] = jsIntClass;
+ implementationClasses[compiler.boolClass] = jsBoolClass;
+ implementationClasses[compiler.numClass] = jsNumberClass;
+ implementationClasses[compiler.doubleClass] = jsDoubleClass;
+ implementationClasses[compiler.stringClass] = jsStringClass;
+ implementationClasses[compiler.listClass] = jsArrayClass;
+
jsIndexableClass = compiler.findInterceptor('JSIndexable');
jsMutableIndexableClass = compiler.findInterceptor('JSMutableIndexable');
@@ -1280,22 +1290,22 @@
}
}
+ Element getDartClass(Element element) {
+ for (ClassElement dartClass in implementationClasses.keys) {
+ if (element == implementationClasses[dartClass]) {
+ return dartClass;
+ }
+ }
+ return element;
+ }
+
Element getImplementationClass(Element element) {
- if (element == compiler.intClass) {
- return jsIntClass;
- } else if (element == compiler.boolClass) {
- return jsBoolClass;
- } else if (element == compiler.numClass) {
- return jsNumberClass;
- } else if (element == compiler.doubleClass) {
- return jsDoubleClass;
- } else if (element == compiler.stringClass) {
- return jsStringClass;
- } else if (element == compiler.listClass) {
- return jsArrayClass;
- } else {
- return element;
+ for (ClassElement dartClass in implementationClasses.keys) {
+ if (element == dartClass) {
+ return implementationClasses[dartClass];
+ }
}
+ return element;
}
/**
@@ -1715,6 +1725,7 @@
* need to access it.
*/
bool isNeededForReflection(Element element) {
+ element = getDartClass(element);
if (hasInsufficientMirrorsUsed) return isTreeShakingDisabled;
/// Record the name of [element] in [symbolsUsed]. Return true for
/// convenience.
« no previous file with comments | « dart/samples/third_party/angular_todo/main.dart ('k') | dart/tests/compiler/dart2js_extra/mirrors_used_native_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698