2010-05-13 Maciej Stachowiak <mjs@apple.com>
[WebKit.git] / JavaScriptCore / runtime / StringPrototype.cpp
index b1c58ec7141d13bf6bb76a2f1021a39f301d5e36..b385e70dff3ef082b05262bb2cdef2d63b44c958 100644 (file)
@@ -245,8 +245,7 @@ public:
     int length;
 };
 
-JSValue jsSpliceSubstringsWithSeparators(ExecState* exec, JSString* sourceVal, const UString& source, const StringRange* substringRanges, int rangeCount, const UString* separators, int separatorCount);
-JSValue jsSpliceSubstringsWithSeparators(ExecState* exec, JSString* sourceVal, const UString& source, const StringRange* substringRanges, int rangeCount, const UString* separators, int separatorCount)
+static ALWAYS_INLINE JSValue jsSpliceSubstringsWithSeparators(ExecState* exec, JSString* sourceVal, const UString& source, const StringRange* substringRanges, int rangeCount, const UString* separators, int separatorCount)
 {
     if (rangeCount == 1 && separatorCount == 0) {
         int sourceSize = source.size();
@@ -754,21 +753,20 @@ JSValue JSC_HOST_CALL stringProtoFuncSubstring(ExecState* exec, JSObject*, JSVal
     JSValue a1 = args.at(1);
 
     double start = a0.toNumber(exec);
-    double end = a1.toNumber(exec);
-    if (isnan(start))
+    double end;
+    if (!(start >= 0)) // check for negative values or NaN
         start = 0;
-    if (isnan(end))
-        end = 0;
-    if (start < 0)
-        start = 0;
-    if (end < 0)
-        end = 0;
-    if (start > len)
+    else if (start > len)
         start = len;
-    if (end > len)
-        end = len;
     if (a1.isUndefined())
         end = len;
+    else { 
+        end = a1.toNumber(exec);
+        if (!(end >= 0)) // check for negative values or NaN
+            end = 0;
+        else if (end > len)
+            end = len;
+    }
     if (start > end) {
         double temp = end;
         end = start;