Index: src/regexp.js |
diff --git a/src/regexp.js b/src/regexp.js |
index 6470f29ed9cbebcb350d8ea5858ca9146795f80b..a0d7094e026181f8071015658582319cdca6b0c9 100644 |
--- a/src/regexp.js |
+++ b/src/regexp.js |
@@ -2,9 +2,6 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-var $regexpExec; |
-var $regexpExecNoTests; |
-var $regexpLastMatchInfo; |
var $regexpLastMatchInfoOverride; |
var harmony_regexps = false; |
var harmony_unicode_regexps = false; |
@@ -22,12 +19,12 @@ var InternalPackedArray = utils.InternalPackedArray; |
// ------------------------------------------------------------------- |
// Property of the builtins object for recording the result of the last |
-// regexp match. The property $regexpLastMatchInfo includes the matchIndices |
+// regexp match. The property RegExpLastMatchInfo includes the matchIndices |
// array of the last successful regexp match (an array of start/end index |
// pairs for the match and all the captured substrings), the invariant is |
// that there are at least two capture indeces. The array also contains |
// the subject string for the last successful match. |
-$regexpLastMatchInfo = new InternalPackedArray( |
+var RegExpLastMatchInfo = new InternalPackedArray( |
2, // REGEXP_NUMBER_OF_CAPTURES |
"", // Last subject. |
UNDEFINED, // Last input - settable with RegExpSetInput. |
@@ -104,7 +101,7 @@ function RegExpCompileJS(pattern, flags) { |
function DoRegExpExec(regexp, string, index) { |
- var result = %_RegExpExec(regexp, string, index, $regexpLastMatchInfo); |
+ var result = %_RegExpExec(regexp, string, index, RegExpLastMatchInfo); |
if (result !== null) $regexpLastMatchInfoOverride = null; |
return result; |
} |
@@ -138,7 +135,7 @@ endmacro |
function RegExpExecNoTests(regexp, string, start) { |
// Must be called with RegExp, string and positive integer as arguments. |
- var matchInfo = %_RegExpExec(regexp, string, start, $regexpLastMatchInfo); |
+ var matchInfo = %_RegExpExec(regexp, string, start, RegExpLastMatchInfo); |
if (matchInfo !== null) { |
$regexpLastMatchInfoOverride = null; |
RETURN_NEW_RESULT_FROM_MATCH_INFO(matchInfo, string); |
@@ -171,8 +168,8 @@ function RegExpExecJS(string) { |
i = 0; |
} |
- // matchIndices is either null or the $regexpLastMatchInfo array. |
- var matchIndices = %_RegExpExec(this, string, i, $regexpLastMatchInfo); |
+ // matchIndices is either null or the RegExpLastMatchInfo array. |
+ var matchIndices = %_RegExpExec(this, string, i, RegExpLastMatchInfo); |
if (IS_NULL(matchIndices)) { |
this.lastIndex = 0; |
@@ -182,7 +179,7 @@ function RegExpExecJS(string) { |
// Successful match. |
$regexpLastMatchInfoOverride = null; |
if (updateLastIndex) { |
- this.lastIndex = $regexpLastMatchInfo[CAPTURE1]; |
+ this.lastIndex = RegExpLastMatchInfo[CAPTURE1]; |
} |
RETURN_NEW_RESULT_FROM_MATCH_INFO(matchIndices, string); |
} |
@@ -214,14 +211,14 @@ function RegExpTest(string) { |
this.lastIndex = 0; |
return false; |
} |
- // matchIndices is either null or the $regexpLastMatchInfo array. |
- var matchIndices = %_RegExpExec(this, string, i, $regexpLastMatchInfo); |
+ // matchIndices is either null or the RegExpLastMatchInfo array. |
+ var matchIndices = %_RegExpExec(this, string, i, RegExpLastMatchInfo); |
if (IS_NULL(matchIndices)) { |
this.lastIndex = 0; |
return false; |
} |
$regexpLastMatchInfoOverride = null; |
- this.lastIndex = $regexpLastMatchInfo[CAPTURE1]; |
+ this.lastIndex = RegExpLastMatchInfo[CAPTURE1]; |
return true; |
} else { |
// Non-global, non-sticky regexp. |
@@ -235,8 +232,8 @@ function RegExpTest(string) { |
%_StringCharCodeAt(regexp.source, 2) != 63) { // '?' |
regexp = TrimRegExp(regexp); |
} |
- // matchIndices is either null or the $regexpLastMatchInfo array. |
- var matchIndices = %_RegExpExec(regexp, string, 0, $regexpLastMatchInfo); |
+ // matchIndices is either null or the RegExpLastMatchInfo array. |
+ var matchIndices = %_RegExpExec(regexp, string, 0, RegExpLastMatchInfo); |
if (IS_NULL(matchIndices)) { |
this.lastIndex = 0; |
return false; |
@@ -281,10 +278,10 @@ function RegExpGetLastMatch() { |
if ($regexpLastMatchInfoOverride !== null) { |
return OVERRIDE_MATCH($regexpLastMatchInfoOverride); |
} |
- var regExpSubject = LAST_SUBJECT($regexpLastMatchInfo); |
+ var regExpSubject = LAST_SUBJECT(RegExpLastMatchInfo); |
return %_SubString(regExpSubject, |
- $regexpLastMatchInfo[CAPTURE0], |
- $regexpLastMatchInfo[CAPTURE1]); |
+ RegExpLastMatchInfo[CAPTURE0], |
+ RegExpLastMatchInfo[CAPTURE1]); |
} |
@@ -294,14 +291,14 @@ function RegExpGetLastParen() { |
if (override.length <= 3) return ''; |
return override[override.length - 3]; |
} |
- var length = NUMBER_OF_CAPTURES($regexpLastMatchInfo); |
+ var length = NUMBER_OF_CAPTURES(RegExpLastMatchInfo); |
if (length <= 2) return ''; // There were no captures. |
// We match the SpiderMonkey behavior: return the substring defined by the |
// last pair (after the first pair) of elements of the capture array even if |
// it is empty. |
- var regExpSubject = LAST_SUBJECT($regexpLastMatchInfo); |
- var start = $regexpLastMatchInfo[CAPTURE(length - 2)]; |
- var end = $regexpLastMatchInfo[CAPTURE(length - 1)]; |
+ var regExpSubject = LAST_SUBJECT(RegExpLastMatchInfo); |
+ var start = RegExpLastMatchInfo[CAPTURE(length - 2)]; |
+ var end = RegExpLastMatchInfo[CAPTURE(length - 1)]; |
if (start != -1 && end != -1) { |
return %_SubString(regExpSubject, start, end); |
} |
@@ -313,8 +310,8 @@ function RegExpGetLeftContext() { |
var start_index; |
var subject; |
if (!$regexpLastMatchInfoOverride) { |
- start_index = $regexpLastMatchInfo[CAPTURE0]; |
- subject = LAST_SUBJECT($regexpLastMatchInfo); |
+ start_index = RegExpLastMatchInfo[CAPTURE0]; |
+ subject = LAST_SUBJECT(RegExpLastMatchInfo); |
} else { |
var override = $regexpLastMatchInfoOverride; |
start_index = OVERRIDE_POS(override); |
@@ -328,8 +325,8 @@ function RegExpGetRightContext() { |
var start_index; |
var subject; |
if (!$regexpLastMatchInfoOverride) { |
- start_index = $regexpLastMatchInfo[CAPTURE1]; |
- subject = LAST_SUBJECT($regexpLastMatchInfo); |
+ start_index = RegExpLastMatchInfo[CAPTURE1]; |
+ subject = LAST_SUBJECT(RegExpLastMatchInfo); |
} else { |
var override = $regexpLastMatchInfoOverride; |
subject = OVERRIDE_SUBJECT(override); |
@@ -352,11 +349,11 @@ function RegExpMakeCaptureGetter(n) { |
return ''; |
} |
var index = n * 2; |
- if (index >= NUMBER_OF_CAPTURES($regexpLastMatchInfo)) return ''; |
- var matchStart = $regexpLastMatchInfo[CAPTURE(index)]; |
- var matchEnd = $regexpLastMatchInfo[CAPTURE(index + 1)]; |
+ if (index >= NUMBER_OF_CAPTURES(RegExpLastMatchInfo)) return ''; |
+ var matchStart = RegExpLastMatchInfo[CAPTURE(index)]; |
+ var matchEnd = RegExpLastMatchInfo[CAPTURE(index + 1)]; |
if (matchStart == -1 || matchEnd == -1) return ''; |
- return %_SubString(LAST_SUBJECT($regexpLastMatchInfo), matchStart, matchEnd); |
+ return %_SubString(LAST_SUBJECT(RegExpLastMatchInfo), matchStart, matchEnd); |
}; |
} |
@@ -367,7 +364,7 @@ function RegExpMakeCaptureGetter(n) { |
GlobalRegExp.prototype, 'constructor', GlobalRegExp, DONT_ENUM); |
%SetCode(GlobalRegExp, RegExpConstructor); |
-$installFunctions(GlobalRegExp.prototype, DONT_ENUM, [ |
+utils.InstallFunctions(GlobalRegExp.prototype, DONT_ENUM, [ |
"exec", RegExpExecJS, |
"test", RegExpTest, |
"toString", RegExpToString, |
@@ -381,11 +378,11 @@ $installFunctions(GlobalRegExp.prototype, DONT_ENUM, [ |
// value is set the value it is set to is coerced to a string. |
// Getter and setter for the input. |
var RegExpGetInput = function() { |
- var regExpInput = LAST_INPUT($regexpLastMatchInfo); |
+ var regExpInput = LAST_INPUT(RegExpLastMatchInfo); |
return IS_UNDEFINED(regExpInput) ? "" : regExpInput; |
}; |
var RegExpSetInput = function(string) { |
- LAST_INPUT($regexpLastMatchInfo) = $toString(string); |
+ LAST_INPUT(RegExpLastMatchInfo) = $toString(string); |
}; |
%OptimizeObjectForAddingMultipleProperties(GlobalRegExp, 22); |
@@ -443,7 +440,13 @@ for (var i = 1; i < 10; ++i) { |
} |
%ToFastProperties(GlobalRegExp); |
-$regexpExecNoTests = RegExpExecNoTests; |
-$regexpExec = DoRegExpExec; |
+// ------------------------------------------------------------------- |
+// Exports |
+ |
+utils.Export(function(to) { |
+ to.RegExpExec = DoRegExpExec; |
+ to.RegExpExecNoTests = RegExpExecNoTests; |
+ to.RegExpLastMatchInfo = RegExpLastMatchInfo; |
+}); |
}) |