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) {
|
||||
if (token.type == term)
|
||||
{
|
||||
return StringNode.EMPTY; // goto end_of_token
|
||||
return StringNode.createEmpty(); // goto end_of_token
|
||||
}
|
||||
|
||||
Node node = null;
|
||||
@ -461,7 +461,7 @@ class Parser extends Lexer {
|
||||
switch(token.type) {
|
||||
case ALT:
|
||||
case EOT:
|
||||
return StringNode.EMPTY; // end_of_token:, node_new_empty
|
||||
return StringNode.createEmpty(); // end_of_token:, node_new_empty
|
||||
|
||||
case SUBEXP_OPEN:
|
||||
node = parseEnclose(TokenType.SUBEXP_CLOSE);
|
||||
@ -569,7 +569,7 @@ class Parser extends Lexer {
|
||||
if (syntax.contextInvalidRepeatOps()) {
|
||||
throw new SyntaxException(ERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED);
|
||||
}
|
||||
node = StringNode.EMPTY; // node_new_empty
|
||||
node = StringNode.createEmpty(); // node_new_empty
|
||||
} else {
|
||||
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_BUF_SIZE = 24;
|
||||
public static final StringNode EMPTY = new StringNode(null, Integer.MAX_VALUE, Integer.MAX_VALUE);
|
||||
|
||||
public char[] chars;
|
||||
public int p;
|
||||
@ -36,7 +35,13 @@ public final class StringNode extends Node implements StringType {
|
||||
public int flag;
|
||||
|
||||
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) {
|
||||
@ -51,6 +56,13 @@ public final class StringNode extends Node implements StringType {
|
||||
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
|
||||
* (assumes that the node is not shared)
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user