Index: sdk/lib/_internal/compiler/js_lib/js_helper.dart |
diff --git a/sdk/lib/_internal/compiler/js_lib/js_helper.dart b/sdk/lib/_internal/compiler/js_lib/js_helper.dart |
index 7c881729b7e11d0c7e1cc41cb6b937d12c4e0f0e..1c6183d4f32f67fa48e559fe73df982f09ffb73f 100644 |
--- a/sdk/lib/_internal/compiler/js_lib/js_helper.dart |
+++ b/sdk/lib/_internal/compiler/js_lib/js_helper.dart |
@@ -1388,41 +1388,23 @@ class JsCache { |
* for example, if a non-integer index is given to an optimized |
* indexed access. |
*/ |
-@NoInline() |
iae(argument) { |
throw _argumentError(argument); |
} |
/** |
- * Called by generated code to throw an index-out-of-range exception, for |
- * example, if a bounds check fails in an optimized indexed access. This may |
- * also be called when the index is not an integer, in which case it throws an |
- * illegal-argument exception instead, like [iae], or when the receiver is null. |
+ * Called by generated code to throw an index-out-of-range exception, |
+ * for example, if a bounds check fails in an optimized indexed |
+ * access. This may also be called when the index is not an integer, in |
+ * which case it throws an illegal-argument exception instead, like |
+ * [iae], or when the receiver is null. |
*/ |
-@NoInline() |
ioore(receiver, index) { |
if (receiver == null) receiver.length; // Force a NoSuchMethodError. |
- throw diagnoseIndexError(receiver, index); |
-} |
- |
-/** |
- * Diagnoses an indexing error. Returns the ArgumentError or RangeError that |
- * describes the problem. |
- */ |
-@NoInline() |
-Error diagnoseIndexError(indexable, index) { |
- if (index is !int) return new ArgumentError.value(index, 'index'); |
- int length = indexable.length; |
- // The following returns the same error that would be thrown by calling |
- // [RangeError.checkValidIndex] with no optional parameters provided. |
- if (index < 0 || index >= length) { |
- return new RangeError.index(index, indexable, 'index', null, length); |
- } |
- // The above should always match, but if it does not, use the following. |
- return new RangeError.value(index, 'index'); |
+ if (index is !int) iae(index); |
+ throw new RangeError.value(index); |
} |
- |
stringLastIndexOfUnchecked(receiver, element, start) |
=> JS('int', r'#.lastIndexOf(#, #)', receiver, element, start); |
@@ -2033,14 +2015,10 @@ unwrapException(ex) { |
return new StackOverflowError(); |
} |
- // In general, a RangeError is thrown when trying to pass a number as an |
- // argument to a function that does not allow a range that includes that |
- // number. Translate to a Dart RangeError with the same message. |
- String message = tryStringifyException(ex); |
- if (message is String) { |
- message = JS('String', r'#.replace(/^RangeError:\s*/, "")', message); |
- } |
- return saveStackTrace(new RangeError(message)); |
+ // In general, a RangeError is thrown when trying to pass a number |
+ // as an argument to a function that does not allow a range that |
+ // includes that number. |
+ return saveStackTrace(new ArgumentError()); |
} |
// Check for the Firefox specific stack overflow signal. |
@@ -2058,20 +2036,6 @@ unwrapException(ex) { |
return ex; |
} |
-String tryStringifyException(ex) { |
- // Since this function is called from [unwrapException] which is called from |
- // code injected into a catch-clause, use JavaScript try-catch to avoid a |
- // potential loop if stringifying crashes. |
- return JS('String', r''' |
- (function(ex) { |
- try { |
- return String(ex); |
- } catch (e) {} |
- return null; |
- })(#) |
- ''', ex); |
-} |
- |
/** |
* Called by generated code to fetch the stack trace from an |
* exception. Should never return null. |