8305688: jdk build --with-memory-size=1024 broken by JDK-8305100
Reviewed-by: martin
This commit is contained in:
parent
646b666a26
commit
2060c8ea14
@ -96,7 +96,7 @@ public class JavadocTokenizer extends JavaTokenizer {
|
|||||||
/**
|
/**
|
||||||
* StringBuilder used to extract the relevant portion of the Javadoc comment.
|
* StringBuilder used to extract the relevant portion of the Javadoc comment.
|
||||||
*/
|
*/
|
||||||
private final StringBuilder sb;
|
private StringBuilder sb;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates if newline is required.
|
* Indicates if newline is required.
|
||||||
@ -166,6 +166,8 @@ public class JavadocTokenizer extends JavaTokenizer {
|
|||||||
super.scanDocComment();
|
super.scanDocComment();
|
||||||
} finally {
|
} finally {
|
||||||
docComment = sb.toString();
|
docComment = sb.toString();
|
||||||
|
sb = null;
|
||||||
|
offsetMap.trim();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -310,6 +312,13 @@ public class JavadocTokenizer extends JavaTokenizer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reduce map to minimum size.
|
||||||
|
*/
|
||||||
|
void trim() {
|
||||||
|
map = Arrays.copyOf(map, size);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Binary search to find the entry for which the string index is less
|
* Binary search to find the entry for which the string index is less
|
||||||
* than pos. Since the map is a list of pairs of integers we must make
|
* than pos. Since the map is a list of pairs of integers we must make
|
||||||
|
@ -54,6 +54,11 @@ public class UnicodeReader {
|
|||||||
*/
|
*/
|
||||||
private final int length;
|
private final int length;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Virtual position offset in the original buffer.
|
||||||
|
*/
|
||||||
|
private final int offset;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Character buffer index of character currently being observed.
|
* Character buffer index of character currently being observed.
|
||||||
*/
|
*/
|
||||||
@ -115,7 +120,7 @@ public class UnicodeReader {
|
|||||||
* @param length length of meaningful content in buffer.
|
* @param length length of meaningful content in buffer.
|
||||||
*/
|
*/
|
||||||
protected UnicodeReader(Log log, char[] array, int length) {
|
protected UnicodeReader(Log log, char[] array, int length) {
|
||||||
this(log, array, 0, length);
|
this(log, array, 0, 0, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -127,9 +132,10 @@ public class UnicodeReader {
|
|||||||
* @param endPos end of meaningful content in buffer.
|
* @param endPos end of meaningful content in buffer.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("this-escape")
|
@SuppressWarnings("this-escape")
|
||||||
protected UnicodeReader(Log log, char[] array, int pos, int endPos) {
|
protected UnicodeReader(Log log, char[] array, int offset, int pos, int endPos) {
|
||||||
this.buffer = array;
|
this.buffer = array;
|
||||||
this.length = endPos;
|
this.length = endPos;
|
||||||
|
this.offset = offset;
|
||||||
this.position = pos;
|
this.position = pos;
|
||||||
this.width = 0;
|
this.width = 0;
|
||||||
this.character = '\0';
|
this.character = '\0';
|
||||||
@ -315,22 +321,22 @@ public class UnicodeReader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the current position in the character buffer.
|
* Return the virtual position in the character buffer.
|
||||||
*
|
*
|
||||||
* @return current position in the character buffer.
|
* @return virtual position in the character buffer.
|
||||||
*/
|
*/
|
||||||
protected int position() {
|
protected int position() {
|
||||||
return position;
|
return offset + position;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reset the reader to the specified position.
|
* Reset the reader to the specified virtual position.
|
||||||
* Warning: Do not use when previous character was an ASCII or unicode backslash.
|
* Warning: Do not use when previous character was an ASCII or unicode backslash.
|
||||||
* @param pos
|
* @param pos
|
||||||
*/
|
*/
|
||||||
protected void reset(int pos) {
|
protected void reset(int pos) {
|
||||||
position = pos;
|
position = pos - offset;
|
||||||
width = 0;
|
width = 0;
|
||||||
wasBackslash = false;
|
wasBackslash = false;
|
||||||
wasUnicodeEscape = false;
|
wasUnicodeEscape = false;
|
||||||
@ -474,7 +480,7 @@ public class UnicodeReader {
|
|||||||
int endPos = position;
|
int endPos = position;
|
||||||
accept('\r');
|
accept('\r');
|
||||||
accept('\n');
|
accept('\n');
|
||||||
return lineReader(pos, endPos);
|
return new UnicodeReader(log, buffer, offset, pos, endPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -487,7 +493,7 @@ public class UnicodeReader {
|
|||||||
* @return a new reader
|
* @return a new reader
|
||||||
*/
|
*/
|
||||||
protected UnicodeReader lineReader(int pos, int endPos) {
|
protected UnicodeReader lineReader(int pos, int endPos) {
|
||||||
return new UnicodeReader(log, buffer, pos, endPos);
|
return new UnicodeReader(log, buffer, offset, pos - offset, endPos - offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -561,7 +567,7 @@ public class UnicodeReader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Be prepared to retreat if not a match.
|
// Be prepared to retreat if not a match.
|
||||||
int savedPosition = position;
|
int savedPosition = position();
|
||||||
|
|
||||||
nextCodePoint();
|
nextCodePoint();
|
||||||
|
|
||||||
@ -695,7 +701,7 @@ public class UnicodeReader {
|
|||||||
* @param endPos end of meaningful content in buffer.
|
* @param endPos end of meaningful content in buffer.
|
||||||
*/
|
*/
|
||||||
protected PositionTrackingReader(UnicodeReader reader, int pos, int endPos) {
|
protected PositionTrackingReader(UnicodeReader reader, int pos, int endPos) {
|
||||||
super(reader.log, reader.buffer, pos, endPos);
|
super(reader.log, reader.getRawCharacters(pos, endPos), reader.offset + pos, 0, endPos - pos);
|
||||||
this.column = 0;
|
this.column = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user