Mercurial > hg > openjdk > jdk8u > nashorn
changeset 2516:0a00f1ccd7e9 jdk8u262-b01
Merge
author | andrew |
---|---|
date | Fri, 24 Apr 2020 03:58:56 +0100 |
parents | 5d64c42ac763 (current diff) 13db9dac5175 (diff) |
children | 60239ecaefa2 |
files | .hgtags |
diffstat | 4 files changed, 22 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgtags Mon Dec 16 11:28:28 2019 -0500 +++ b/.hgtags Fri Apr 24 03:58:56 2020 +0100 @@ -1070,3 +1070,5 @@ b988f627520c45015f0b91d2ee35e69531300770 jdk8u252-b06 0666ec7fe2b45353dc0e09c1f6f386bdf763eeb4 jdk8u252-b07 95d61d0f326bbfaddc2cbd29e67b12c00041caaa jdk8u252-b08 +2f5ad880fd3372eb5c2e5ac5ee82c705a1b6ac07 jdk8u252-b09 +2f5ad880fd3372eb5c2e5ac5ee82c705a1b6ac07 jdk8u252-ga
--- a/src/jdk/nashorn/internal/runtime/regexp/RegExpScanner.java Mon Dec 16 11:28:28 2019 -0500 +++ b/src/jdk/nashorn/internal/runtime/regexp/RegExpScanner.java Fri Apr 24 03:58:56 2020 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -141,14 +141,14 @@ throw new PatternSyntaxException(e.getMessage(), string, scanner.position); } - scanner.processForwardReferences(); - // Throw syntax error unless we parsed the entire JavaScript regexp without syntax errors if (scanner.position != string.length()) { final String p = scanner.getStringBuilder().toString(); throw new PatternSyntaxException(string, p, p.length() + 1); } + scanner.processForwardReferences(); + return scanner; }
--- a/src/jdk/nashorn/internal/runtime/regexp/joni/Parser.java Mon Dec 16 11:28:28 2019 -0500 +++ b/src/jdk/nashorn/internal/runtime/regexp/joni/Parser.java Fri Apr 24 03:58:56 2020 +0100 @@ -452,7 +452,7 @@ 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 @@ 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 @@ 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 }
--- a/src/jdk/nashorn/internal/runtime/regexp/joni/ast/StringNode.java Mon Dec 16 11:28:28 2019 -0500 +++ b/src/jdk/nashorn/internal/runtime/regexp/joni/ast/StringNode.java Fri Apr 24 03:58:56 2020 +0100 @@ -27,7 +27,6 @@ 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 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 @@ 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) */