Index: src/string.js |
diff --git a/src/string.js b/src/string.js |
index 1db65bb0bad25b677c7fa38144976c6a39f4ca18..8d2b1f42ddc394ce07a0bae68593c734f16db400 100644 |
--- a/src/string.js |
+++ b/src/string.js |
@@ -15,8 +15,6 @@ var GlobalRegExp = global.RegExp; |
var GlobalString = global.String; |
var InternalArray = utils.InternalArray; |
var InternalPackedArray = utils.InternalPackedArray; |
-var MathMax; |
-var MathMin; |
var RegExpExec; |
var RegExpExecNoTests; |
var RegExpLastMatchInfo; |
@@ -27,8 +25,6 @@ var ToString; |
utils.Import(function(from) { |
ArrayIndexOf = from.ArrayIndexOf; |
ArrayJoin = from.ArrayJoin; |
- MathMax = from.MathMax; |
- MathMin = from.MathMin; |
RegExpExec = from.RegExpExec; |
RegExpExecNoTests = from.RegExpExecNoTests; |
RegExpLastMatchInfo = from.RegExpLastMatchInfo; |
@@ -986,18 +982,27 @@ function StringStartsWith(searchString /* position */) { // length == 1 |
var ss = TO_STRING_INLINE(searchString); |
var pos = 0; |
if (%_ArgumentsLength() > 1) { |
- pos = %_Arguments(1); // position |
- pos = $toInteger(pos); |
+ var arg = %_Arguments(1); // position |
+ if (!IS_UNDEFINED(arg)) { |
+ pos = $toInteger(arg); |
+ } |
} |
var s_len = s.length; |
- var start = MathMin(MathMax(pos, 0), s_len); |
+ if (pos < 0) pos = 0; |
+ if (pos > s_len) pos = s_len; |
var ss_len = ss.length; |
- if (ss_len + start > s_len) { |
+ |
+ if (ss_len + pos > s_len) { |
return false; |
} |
- return %_SubString(s, start, start + ss_len) === ss; |
+ for (var i = 0; i < ss_len; i++) { |
+ if (%_StringCharCodeAt(s, pos + i) !== %_StringCharCodeAt(ss, i)) |
+ return false; |
Jakob Kummerow
2015/09/08 09:46:10
nit: {} for multi-line ifs
|
+ } |
+ |
+ return true; |
} |
@@ -1021,14 +1026,21 @@ function StringEndsWith(searchString /* position */) { // length == 1 |
} |
} |
- var end = MathMin(MathMax(pos, 0), s_len); |
+ if (pos < 0) pos = 0; |
+ if (pos > s_len) pos = s_len; |
var ss_len = ss.length; |
- var start = end - ss_len; |
- if (start < 0) { |
+ pos = pos - ss_len; |
+ |
+ if (pos < 0) { |
return false; |
} |
- return %_SubString(s, start, start + ss_len) === ss; |
+ for (var i = 0; i < ss_len; i++) { |
+ if (%_StringCharCodeAt(s, pos + i) !== %_StringCharCodeAt(ss, i)) |
+ return false; |
Jakob Kummerow
2015/09/08 09:46:10
nit: {} for multi-line ifs
|
+ } |
+ |
+ return true; |
} |