Match literals using |RegExp.prototype.test|

This is little faster than |String.prototype.match| in successful cases
since return value of |test| is just a boolean, not a special array as
with |match|.

Speed impact
------------
Before:     130.75 kB/s
After:      131.81 kB/s
Difference: 0.81%

Size impact
-----------
Before:     1059811 b
After:      1058371 b
Difference: -0.14%

(Measured by /tools/impact with Node.js v0.4.8 on x86_64 GNU/Linux.)
redux
David Majda 13 years ago
parent 2d4ee4fb23
commit 2fc877e875

@ -747,7 +747,7 @@ PEG.compiler.emitter = function(ast) {
}
return formatCode(
"if (input.substr(pos).match(${regexp}) !== null) {",
"if (${regexp}.test(input.substr(pos))) {",
" ${resultVar} = input.charAt(pos);",
" pos++;",
"} else {",

@ -1123,7 +1123,7 @@ PEG.parser = (function(){
var pos0;
if (input.substr(pos).match(/^[^{}]/) !== null) {
if (/^[^{}]/.test(input.substr(pos))) {
result0 = input.charAt(pos);
pos++;
} else {
@ -3023,7 +3023,7 @@ PEG.parser = (function(){
var pos0;
if (input.substr(pos).match(/^[0-9]/) !== null) {
if (/^[0-9]/.test(input.substr(pos))) {
result0 = input.charAt(pos);
pos++;
} else {
@ -3054,7 +3054,7 @@ PEG.parser = (function(){
var pos0;
if (input.substr(pos).match(/^[0-9a-fA-F]/) !== null) {
if (/^[0-9a-fA-F]/.test(input.substr(pos))) {
result0 = input.charAt(pos);
pos++;
} else {
@ -3112,7 +3112,7 @@ PEG.parser = (function(){
var pos0;
if (input.substr(pos).match(/^[a-z]/) !== null) {
if (/^[a-z]/.test(input.substr(pos))) {
result0 = input.charAt(pos);
pos++;
} else {
@ -3143,7 +3143,7 @@ PEG.parser = (function(){
var pos0;
if (input.substr(pos).match(/^[A-Z]/) !== null) {
if (/^[A-Z]/.test(input.substr(pos))) {
result0 = input.charAt(pos);
pos++;
} else {
@ -3571,7 +3571,7 @@ PEG.parser = (function(){
var pos0;
if (input.substr(pos).match(/^[\n\r\u2028\u2029]/) !== null) {
if (/^[\n\r\u2028\u2029]/.test(input.substr(pos))) {
result0 = input.charAt(pos);
pos++;
} else {
@ -3602,7 +3602,7 @@ PEG.parser = (function(){
var pos0;
reportFailures++;
if (input.substr(pos).match(/^[ \xA0\uFEFF\u1680\u180E\u2000-\u200A\u202F\u205F\u3000]/) !== null) {
if (/^[ \xA0\uFEFF\u1680\u180E\u2000-\u200A\u202F\u205F\u3000]/.test(input.substr(pos))) {
result0 = input.charAt(pos);
pos++;
} else {

Loading…
Cancel
Save