8223904: Improve Nashorn matching
Reviewed-by: jlaskey, sundar, mschoene, rhalade
This commit is contained in:
parent
3bbc499f06
commit
3dd1fd2964
@ -452,7 +452,7 @@ class Parser extends Lexer {
|
|||||||
private Node parseExp(final TokenType term) {
|
private Node parseExp(final TokenType term) {
|
||||||
if (token.type == term)
|
if (token.type == term)
|
||||||
{
|
{
|
||||||
return StringNode.EMPTY; // goto end_of_token
|
return StringNode.createEmpty(); // goto end_of_token
|
||||||
}
|
}
|
||||||
|
|
||||||
Node node = null;
|
Node node = null;
|
||||||
@ -461,7 +461,7 @@ class Parser extends Lexer {
|
|||||||
switch(token.type) {
|
switch(token.type) {
|
||||||
case ALT:
|
case ALT:
|
||||||
case EOT:
|
case EOT:
|
||||||
return StringNode.EMPTY; // end_of_token:, node_new_empty
|
return StringNode.createEmpty(); // end_of_token:, node_new_empty
|
||||||
|
|
||||||
case SUBEXP_OPEN:
|
case SUBEXP_OPEN:
|
||||||
node = parseEnclose(TokenType.SUBEXP_CLOSE);
|
node = parseEnclose(TokenType.SUBEXP_CLOSE);
|
||||||
@ -569,7 +569,7 @@ class Parser extends Lexer {
|
|||||||
if (syntax.contextInvalidRepeatOps()) {
|
if (syntax.contextInvalidRepeatOps()) {
|
||||||
throw new SyntaxException(ERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED);
|
throw new SyntaxException(ERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED);
|
||||||
}
|
}
|
||||||
node = StringNode.EMPTY; // node_new_empty
|
node = StringNode.createEmpty(); // node_new_empty
|
||||||
} else {
|
} else {
|
||||||
return parseExpTkByte(group); // goto tk_byte
|
return parseExpTkByte(group); // goto tk_byte
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,6 @@ public final class StringNode extends Node implements StringType {
|
|||||||
|
|
||||||
private static final int NODE_STR_MARGIN = 16;
|
private static final int NODE_STR_MARGIN = 16;
|
||||||
private static final int NODE_STR_BUF_SIZE = 24;
|
private static final int NODE_STR_BUF_SIZE = 24;
|
||||||
public static final StringNode EMPTY = new StringNode(null, Integer.MAX_VALUE, Integer.MAX_VALUE);
|
|
||||||
|
|
||||||
public char[] chars;
|
public char[] chars;
|
||||||
public int p;
|
public int p;
|
||||||
@ -36,7 +35,13 @@ public final class StringNode extends Node implements StringType {
|
|||||||
public int flag;
|
public int flag;
|
||||||
|
|
||||||
public StringNode() {
|
public StringNode() {
|
||||||
this.chars = new char[NODE_STR_BUF_SIZE];
|
this(NODE_STR_BUF_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private StringNode(int size) {
|
||||||
|
this.chars = new char[size];
|
||||||
|
this.p = 0;
|
||||||
|
this.end = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public StringNode(final char[] chars, final int p, final int end) {
|
public StringNode(final char[] chars, final int p, final int end) {
|
||||||
@ -51,6 +56,13 @@ public final class StringNode extends Node implements StringType {
|
|||||||
chars[end++] = c;
|
chars[end++] = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new empty StringNode.
|
||||||
|
*/
|
||||||
|
public static StringNode createEmpty() {
|
||||||
|
return new StringNode(0);
|
||||||
|
}
|
||||||
|
|
||||||
/* Ensure there is ahead bytes available in node's buffer
|
/* Ensure there is ahead bytes available in node's buffer
|
||||||
* (assumes that the node is not shared)
|
* (assumes that the node is not shared)
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user