Skip to content
Permalink
Browse files
8223904: Improve Nashorn matching
Reviewed-by: jlaskey, sundar, mschoene, rhalade
  • Loading branch information
hns committed Nov 15, 2019
1 parent 3bbc499 commit 3dd1fd2964394328447e36df13eb087c545593b9
Showing 2 changed files with 17 additions and 5 deletions.
@@ -452,7 +452,7 @@ private Node parseEnclose(final TokenType term) {
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 @@ private Node parseExp(final TokenType term) {
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 @@ private Node parseExp(final TokenType term) {
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 StringNode(final char 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
* (assumes that the node is not shared)
*/

0 comments on commit 3dd1fd2

Please sign in to comment.