Index: sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
=================================================================== |
--- sdk/lib/_internal/compiler/implementation/js_backend/backend.dart (revision 30666) |
+++ sdk/lib/_internal/compiler/implementation/js_backend/backend.dart (working copy) |
@@ -194,6 +194,8 @@ |
ClassElement jsMutableArrayClass; |
ClassElement jsFixedArrayClass; |
ClassElement jsExtendableArrayClass; |
+ ClassElement jsUInt32Class; |
+ ClassElement jsUInt31Class; |
Element jsIndexableLength; |
Element jsArrayTypedConstructor; |
@@ -227,6 +229,8 @@ |
TypeMask get stringType => compiler.typesTask.stringType; |
TypeMask get doubleType => compiler.typesTask.doubleType; |
TypeMask get intType => compiler.typesTask.intType; |
+ TypeMask get uint32Type => compiler.typesTask.uint32Type; |
+ TypeMask get uint31Type => compiler.typesTask.uint31Type; |
TypeMask get numType => compiler.typesTask.numType; |
TypeMask get boolType => compiler.typesTask.boolType; |
TypeMask get dynamicType => compiler.typesTask.dynamicType; |
@@ -576,6 +580,8 @@ |
// The int class must be before the double class, because the |
// emitter relies on this list for the order of type checks. |
jsIntClass = compiler.findInterceptor('JSInt'), |
+ jsUInt32Class = compiler.findInterceptor('JSUInt32'), |
+ jsUInt31Class = compiler.findInterceptor('JSUInt31'), |
jsDoubleClass = compiler.findInterceptor('JSDouble'), |
jsNumberClass = compiler.findInterceptor('JSNumber'), |
jsNullClass = compiler.findInterceptor('JSNull'), |
@@ -847,6 +853,8 @@ |
addInterceptors(jsExtendableArrayClass, enqueuer, elements); |
} else if (cls == compiler.intClass || cls == jsIntClass) { |
addInterceptors(jsIntClass, enqueuer, elements); |
+ addInterceptors(jsUInt32Class, enqueuer, elements); |
+ addInterceptors(jsUInt31Class, enqueuer, elements); |
addInterceptors(jsNumberClass, enqueuer, elements); |
} else if (cls == compiler.doubleClass || cls == jsDoubleClass) { |
addInterceptors(jsDoubleClass, enqueuer, elements); |
@@ -857,6 +865,8 @@ |
addInterceptors(jsNullClass, enqueuer, elements); |
} else if (cls == compiler.numClass || cls == jsNumberClass) { |
addInterceptors(jsIntClass, enqueuer, elements); |
+ addInterceptors(jsUInt32Class, enqueuer, elements); |
+ addInterceptors(jsUInt31Class, enqueuer, elements); |
addInterceptors(jsDoubleClass, enqueuer, elements); |
addInterceptors(jsNumberClass, enqueuer, elements); |
} else if (cls == jsPlainJavaScriptObjectClass) { |
@@ -1415,7 +1425,8 @@ |
return typeCast |
? 'boolTypeCast' |
: 'boolTypeCheck'; |
- } else if (element == jsIntClass || element == compiler.intClass) { |
+ } else if (element == jsIntClass || element == compiler.intClass |
+ || element == jsUInt32Class || element == jsUInt31Class) { |
if (nativeCheckOnly) return null; |
return typeCast |
? 'intTypeCast' |
@@ -1633,6 +1644,8 @@ |
} |
ClassElement get intImplementation => jsIntClass; |
+ ClassElement get uint32Implementation => jsUInt32Class; |
+ ClassElement get uint31Implementation => jsUInt31Class; |
ClassElement get doubleImplementation => jsDoubleClass; |
ClassElement get numImplementation => jsNumberClass; |
ClassElement get stringImplementation => jsStringClass; |