diff options
author | enevill <none@none> | 2015-02-03 16:48:19 +0000 |
---|---|---|
committer | enevill <none@none> | 2015-02-03 16:48:19 +0000 |
commit | cd862a5fea8bc2c71e8da66c27817f4f34b147c7 (patch) | |
tree | f62e65140522a8cc885ad4a7a7b3967c3ac9cec8 | |
parent | bb613032bd0763a0f6acefd89e9291ec663a6aa0 (diff) | |
parent | 45919293c1eff2bdb704d0f5e12b02e7465f0a3e (diff) |
Merge up to jdk8u40-b23
-rw-r--r-- | .hgtags | 34 | ||||
-rw-r--r-- | THIRD_PARTY_README | 2 | ||||
-rw-r--r-- | src/com/sun/org/apache/bcel/internal/classfile/DescendingVisitor.java | 4 | ||||
-rw-r--r-- | src/com/sun/org/apache/bcel/internal/generic/MethodGen.java | 100 | ||||
-rw-r--r-- | src/com/sun/org/apache/xerces/internal/impl/XML11EntityScanner.java | 42 | ||||
-rw-r--r-- | src/com/sun/org/apache/xerces/internal/impl/XMLEntityScanner.java | 21 |
6 files changed, 178 insertions, 25 deletions
@@ -323,6 +323,8 @@ d6ded60cfdc53861ae7d1a010f95b5036d610e80 jdk8u20-b23 dd09d8b9edefb5684941941e5d9b35c84ee066f3 jdk8u20-b24 dd09d8b9edefb5684941941e5d9b35c84ee066f3 jdk8u20-b25 938b9d502c2b0f9684151e1b1f47cf7052db1502 jdk8u20-b26 +f734649a3f89316d84fc669fdbf7bbff92e7291a jdk8u20-b31 +d791a17744d50a456d60ee5118d8cb9633bb36d2 jdk8u20-b32 65e5ee249ebc81c0ccfff23946a0a2a6d4becdcc jdk8u25-b00 b29277565edfdece4e3928b135d4fd86ae141e4f jdk8u25-b01 09df5bda467090041090873f71d418eebcadf516 jdk8u25-b02 @@ -342,6 +344,21 @@ f5ac2e242bb95be0a3deddf37362178202086137 jdk8u25-b15 df68b132a471ed1e825a79bd1d8acb47d2bcc04f jdk8u25-b16 7a721e57b38ff6c1d34af0b86f6482540a815d90 jdk8u25-b17 fddbc00bde281d7d437b052262e921ed51de8b9a jdk8u25-b18 +30420a31a81f21e363f412ae9801b7467c8cc908 jdk8u25-b31 +19b6e16343925a4bf27879795b530d4f64e5d262 jdk8u31-b00 +469792d179304c9b3218930112547577e1aecb77 jdk8u31-b01 +adbd3e31ef1a95b3f80a77dfbb843d52c053c6d3 jdk8u31-b02 +d7961ca9afbc744674eb3ffda8ef2003158f3ea6 jdk8u31-b03 +3bcd38c92f216e6e0fd74742720b6f786301953e jdk8u31-b04 +17bca3fe325b353929e0eda3f1aaa7cc2806b93d jdk8u31-b05 +a1ab81b8cc36b156f272b20da62922d7f8aa6fe9 jdk8u31-b06 +573b761785f798a8b5366a87aceb7324b312f747 jdk8u31-b07 +43f0821902a71c1fccc99be36a0b205b1ae79183 jdk8u31-b08 +630b05fb2ddcdaeda6269ddb74357f651b73d6d7 jdk8u31-b09 +b5165ac3556e95c42a295d3cbeef8cd6e5607b25 jdk8u31-b10 +f475dbc70345904bda6b520af43955e244292886 jdk8u31-b11 +6563e438377f2086253577e08593b1ddfb901eff jdk8u31-b12 +1dd828fd98f1b84de5dcadb904322b711e7489ff jdk8u31-b13 3a1bba8076da4e54882123e98e219eab1c31ccef jdk8u40-b00 f219da378d0768ff042d77221e5d20676ecc16f0 jdk8u40-b01 28b875efa43d8c19a3a209d37b791872d1f36d6c jdk8u40-b02 @@ -354,6 +371,23 @@ b2210de1587b16ca1d1d781b55e19bc70724c62b jdk8u40-b07 c45c0ee4160026207cef1850c215c2691d43a97d jdk8u40-b09 1f5248bc0714a45160525d48bfcf455b9cdf86a3 jdk8u40-b10 0bf6dbb6ac4e2258d4d832bb949cb1be2402a899 jdk8u40-b11 +d73144ee471d4d4c49db94b3cc8990479961499a jdk8u40-b03 +23c1a41d75adc6fc57f69528c2c804079f449d94 jdk8u40-b04 +8d60cebf6a0c1cf1a5669e49deb795a1445e826b jdk8u40-b05 +50a2adfa57fcbbe1587991d53f58d227070a24db jdk8u40-b06 +b2210de1587b16ca1d1d781b55e19bc70724c62b jdk8u40-b07 +641eb6543c7186d1c2c26eaf96803b1e6b411d9a jdk8u40-b08 +c45c0ee4160026207cef1850c215c2691d43a97d jdk8u40-b09 +1f5248bc0714a45160525d48bfcf455b9cdf86a3 jdk8u40-b10 +0bf6dbb6ac4e2258d4d832bb949cb1be2402a899 jdk8u40-b11 3d2b6fdd9fade1ae372fc141dde7a31072d280ce jdk8u40-b12-aarch64 e5b6e5b8b16b604bbfbe240ed709176cf8042430 jdk8u40-b12-aarch64-1262 7252d7fdc0edacea3e89fb279274def6116a14b5 jdk8u40-b12-aarch64-1263 +ed46c05af2570feed5ea264eca02f223055109e9 jdk8u40-b15 +cda81fbeec94b31dba27a043fbf58f442524cdf5 jdk8u40-b16 +cb63029168a52d62d82c3325f1092405c318e78c jdk8u40-b17 +6103f5a8119a85937ae006f18b8dfc04f73315d0 jdk8u40-b18 +3b73732d6886dc8155f0c1fbb125ca60d9e2fd2b jdk8u40-b19 +7bfc889330e0ec1fd495990eaa0d7f0c390b7304 jdk8u40-b20 +78d90db9de2801eec010ccb9f0db3caf969dfc3b jdk8u40-b21 +54a13451ce243f2159ed3996e6efcf374a5750ca jdk8u40-b22 diff --git a/THIRD_PARTY_README b/THIRD_PARTY_README index 6d1c60f..c34ce6b 100644 --- a/THIRD_PARTY_README +++ b/THIRD_PARTY_README @@ -3385,7 +3385,7 @@ with JRE 8, JDK 8, and OpenJDK 8. included with JRE 8, JDK 8, and OpenJDK 8. Apache Commons Math 3.2 - Apache Derby 10.10.1.3 + Apache Derby 10.11.1.2 Apache Jakarta BCEL 5.1 Apache Jakarta Regexp 1.4 Apache Santuario XML Security for Java 1.5.4 diff --git a/src/com/sun/org/apache/bcel/internal/classfile/DescendingVisitor.java b/src/com/sun/org/apache/bcel/internal/classfile/DescendingVisitor.java index fe35197..763eca6 100644 --- a/src/com/sun/org/apache/bcel/internal/classfile/DescendingVisitor.java +++ b/src/com/sun/org/apache/bcel/internal/classfile/DescendingVisitor.java @@ -213,6 +213,10 @@ public class DescendingVisitor implements Visitor { public void visitLocalVariableTypeTable(LocalVariableTypeTable obj) { stack.push(obj); obj.accept(visitor); + + LocalVariable[] vars = obj.getLocalVariableTypeTable(); + for(int i=0; i < vars.length; i++) + vars[i].accept(this); stack.pop(); } diff --git a/src/com/sun/org/apache/bcel/internal/generic/MethodGen.java b/src/com/sun/org/apache/bcel/internal/generic/MethodGen.java index 34da007..6934582 100644 --- a/src/com/sun/org/apache/bcel/internal/generic/MethodGen.java +++ b/src/com/sun/org/apache/bcel/internal/generic/MethodGen.java @@ -87,6 +87,7 @@ public class MethodGen extends FieldGenOrMethodGen { private boolean strip_attributes; private ArrayList variable_vec = new ArrayList(); + private ArrayList type_vec = new ArrayList(); private ArrayList line_number_vec = new ArrayList(); private ArrayList exception_vec = new ArrayList(); private ArrayList throws_vec = new ArrayList(); @@ -260,7 +261,7 @@ public class MethodGen extends FieldGenOrMethodGen { } } else if (a instanceof LocalVariableTypeTable) { LocalVariable[] lv = ((LocalVariableTypeTable) a).getLocalVariableTypeTable(); - removeLocalVariables(); + removeLocalVariableTypes(); for (int k = 0; k < lv.length; k++) { LocalVariable l = lv[k]; InstructionHandle start = il.findHandle(l.getStartPC()); @@ -272,7 +273,7 @@ public class MethodGen extends FieldGenOrMethodGen { if (null == end) { end = il.getEnd(); } - addLocalVariable(l.getName(), Type.getType(l.getSignature()), l + addLocalVariableType(l.getName(), Type.getType(l.getSignature()), l .getIndex(), start, end); } } else @@ -406,6 +407,31 @@ public class MethodGen extends FieldGenOrMethodGen { return lg; } + /* + * If the range of the variable has not been set yet, it will be set to be + * val id from the start to the end of the instruction list. + * + * @return array of declared local variable types sorted by index + */ + private LocalVariableGen[] getLocalVariableTypes() { + int size = type_vec.size(); + LocalVariableGen[] lg = new LocalVariableGen[size]; + type_vec.toArray(lg); + + for(int i=0; i < size; i++) { + if(lg[i].getStart() == null) + lg[i].setStart(il.getStart()); + + if(lg[i].getEnd() == null) + lg[i].setEnd(il.getEnd()); + } + + if(size > 1) + sort(lg, 0, size - 1); + + return lg; + } + /** * @return `LocalVariableTable' attribute of all the local variables of this method. */ @@ -422,6 +448,68 @@ public class MethodGen extends FieldGenOrMethodGen { } /** + * @return `LocalVariableTypeTable' attribute of all the local variable + * types of this method. + */ + public LocalVariableTypeTable getLocalVariableTypeTable(ConstantPoolGen cp) { + LocalVariableGen[] lg = getLocalVariableTypes(); + int size = lg.length; + LocalVariable[] lv = new LocalVariable[size]; + + for(int i=0; i < size; i++) + lv[i] = lg[i].getLocalVariable(cp); + + return new LocalVariableTypeTable(cp.addUtf8("LocalVariableTypeTable"), + 2 + lv.length * 10, lv, cp.getConstantPool()); + } + + /** + * Adds a local variable type to this method. + * + * @param name variable name + * @param type variable type + * @param slot the index of the local variable, if type is long or double, the next available + * index is slot+2 + * @param start from where the variable is valid + * @param end until where the variable is valid + * @return new local variable object + * @see LocalVariable + */ + private LocalVariableGen addLocalVariableType(String name, Type type, int slot, + InstructionHandle start, + InstructionHandle end) { + byte t = type.getType(); + + if(t != Constants.T_ADDRESS) { + int add = type.getSize(); + + if(slot + add > max_locals) + max_locals = slot + add; + + LocalVariableGen l = new LocalVariableGen(slot, name, type, start, end); + int i; + + if((i = type_vec.indexOf(l)) >= 0) // Overwrite if necessary + type_vec.set(i, l); + else + type_vec.add(l); + + return l; + } else { + throw new IllegalArgumentException("Can not use " + type + + " as type for local variable"); + + } + } + + /** + * Remove all local variable types. + */ + private void removeLocalVariableTypes() { + type_vec.clear(); + } + + /** * Give an instruction a line number corresponding to the source code line. * * @param ih instruction to tag @@ -637,12 +725,17 @@ public class MethodGen extends FieldGenOrMethodGen { LineNumberTable lnt = null; LocalVariableTable lvt = null; + LocalVariableTypeTable lvtt = null; - /* Create LocalVariableTable and LineNumberTable attributes (for debuggers, e.g.) + /* Create LocalVariableTable, LocalvariableTypeTable, and LineNumberTable + * attributes (for debuggers, e.g.) */ if((variable_vec.size() > 0) && !strip_attributes) addCodeAttribute(lvt = getLocalVariableTable(cp)); + if((type_vec.size() > 0) && !strip_attributes) + addCodeAttribute(lvtt = getLocalVariableTypeTable(cp)); + if((line_number_vec.size() > 0) && !strip_attributes) addCodeAttribute(lnt = getLineNumberTable(cp)); @@ -691,6 +784,7 @@ public class MethodGen extends FieldGenOrMethodGen { // Undo effects of adding attributes if(lvt != null) removeCodeAttribute(lvt); + if(lvtt != null) removeCodeAttribute(lvtt); if(lnt != null) removeCodeAttribute(lnt); if(code != null) removeAttribute(code); if(et != null) removeAttribute(et); diff --git a/src/com/sun/org/apache/xerces/internal/impl/XML11EntityScanner.java b/src/com/sun/org/apache/xerces/internal/impl/XML11EntityScanner.java index 518c09a..c293551 100644 --- a/src/com/sun/org/apache/xerces/internal/impl/XML11EntityScanner.java +++ b/src/com/sun/org/apache/xerces/internal/impl/XML11EntityScanner.java @@ -147,8 +147,9 @@ public class XML11EntityScanner fCurrentEntity.lineNumber++; fCurrentEntity.columnNumber = 1; if (fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(1); fCurrentEntity.ch[0] = (char)c; - load(1, false, true); + load(1, false, false); } if (c == '\r' && external) { int cc = fCurrentEntity.ch[fCurrentEntity.position++]; @@ -306,9 +307,10 @@ public class XML11EntityScanner if (XML11Char.isXML11NameStart(ch)) { if (++fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(1); fCurrentEntity.ch[0] = ch; offset = 0; - if (load(1, false, true)) { + if (load(1, false, false)) { fCurrentEntity.columnNumber++; String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1); return symbol; @@ -317,9 +319,10 @@ public class XML11EntityScanner } else if (XML11Char.isXML11NameHighSurrogate(ch)) { if (++fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(1); fCurrentEntity.ch[0] = ch; offset = 0; - if (load(1, false, true)) { + if (load(1, false, false)) { --fCurrentEntity.position; --fCurrentEntity.startPosition; return null; @@ -332,10 +335,11 @@ public class XML11EntityScanner return null; } if (++fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(2); fCurrentEntity.ch[0] = ch; fCurrentEntity.ch[1] = ch2; offset = 0; - if (load(2, false, true)) { + if (load(2, false, false)) { fCurrentEntity.columnNumber += 2; String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 2); return symbol; @@ -464,9 +468,10 @@ public class XML11EntityScanner if (XML11Char.isXML11NCNameStart(ch)) { if (++fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(1); fCurrentEntity.ch[0] = ch; offset = 0; - if (load(1, false, true)) { + if (load(1, false, false)) { fCurrentEntity.columnNumber++; String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1); return symbol; @@ -475,9 +480,10 @@ public class XML11EntityScanner } else if (XML11Char.isXML11NameHighSurrogate(ch)) { if (++fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(1); fCurrentEntity.ch[0] = ch; offset = 0; - if (load(1, false, true)) { + if (load(1, false, false)) { --fCurrentEntity.position; --fCurrentEntity.startPosition; return null; @@ -490,10 +496,11 @@ public class XML11EntityScanner return null; } if (++fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(2); fCurrentEntity.ch[0] = ch; fCurrentEntity.ch[1] = ch2; offset = 0; - if (load(2, false, true)) { + if (load(2, false, false)) { fCurrentEntity.columnNumber += 2; String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 2); return symbol; @@ -628,9 +635,10 @@ public class XML11EntityScanner if (XML11Char.isXML11NCNameStart(ch)) { if (++fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(1); fCurrentEntity.ch[0] = ch; offset = 0; - if (load(1, false, true)) { + if (load(1, false, false)) { fCurrentEntity.columnNumber++; String name = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1); qname.setValues(null, name, name, null); @@ -640,9 +648,10 @@ public class XML11EntityScanner } else if (XML11Char.isXML11NameHighSurrogate(ch)) { if (++fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(1); fCurrentEntity.ch[0] = ch; offset = 0; - if (load(1, false, true)) { + if (load(1, false, false)) { --fCurrentEntity.startPosition; --fCurrentEntity.position; return false; @@ -655,10 +664,11 @@ public class XML11EntityScanner return false; } if (++fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(2); fCurrentEntity.ch[0] = ch; fCurrentEntity.ch[1] = ch2; offset = 0; - if (load(2, false, true)) { + if (load(2, false, false)) { fCurrentEntity.columnNumber += 2; String name = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 2); qname.setValues(null, name, name, null); @@ -835,8 +845,9 @@ public class XML11EntityScanner load(0, true, true); } else if (fCurrentEntity.position == fCurrentEntity.count - 1) { + invokeListeners(0); fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1]; - load(1, false, true); + load(1, false, false); fCurrentEntity.position = 0; fCurrentEntity.startPosition = 0; } @@ -976,8 +987,9 @@ public class XML11EntityScanner load(0, true, true); } else if (fCurrentEntity.position == fCurrentEntity.count - 1) { + invokeListeners(0); fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1]; - load(1, false, true); + load(1, false, false); fCurrentEntity.startPosition = 0; fCurrentEntity.position = 0; } @@ -1346,8 +1358,9 @@ public class XML11EntityScanner else if (c == '\n' && (cc == '\r' ) && fCurrentEntity.isExternal()) { // handle newlines if (fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(1); fCurrentEntity.ch[0] = (char)cc; - load(1, false, true); + load(1, false, false); } int ccc = fCurrentEntity.ch[++fCurrentEntity.position]; if (ccc == '\n' || ccc == 0x85) { @@ -1408,8 +1421,9 @@ public class XML11EntityScanner fCurrentEntity.lineNumber++; fCurrentEntity.columnNumber = 1; if (fCurrentEntity.position == fCurrentEntity.count - 1) { + invokeListeners(0); fCurrentEntity.ch[0] = (char)c; - entityChanged = load(1, true, true); + entityChanged = load(1, true, false); if (!entityChanged) { // the load change the position to be 1, // need to restore it when entity not changed diff --git a/src/com/sun/org/apache/xerces/internal/impl/XMLEntityScanner.java b/src/com/sun/org/apache/xerces/internal/impl/XMLEntityScanner.java index 9e5dba5..768118d 100644 --- a/src/com/sun/org/apache/xerces/internal/impl/XMLEntityScanner.java +++ b/src/com/sun/org/apache/xerces/internal/impl/XMLEntityScanner.java @@ -538,8 +538,9 @@ public class XMLEntityScanner implements XMLLocator { fCurrentEntity.lineNumber++; fCurrentEntity.columnNumber = 1; if (fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(1); fCurrentEntity.ch[0] = (char)c; - load(1, false, true); + load(1, false, false); } if (c == '\r' && isExternal) { if (fCurrentEntity.ch[fCurrentEntity.position++] != '\n') { @@ -670,9 +671,10 @@ public class XMLEntityScanner implements XMLLocator { int offset = fCurrentEntity.position; if (XMLChar.isNameStart(fCurrentEntity.ch[offset])) { if (++fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(1); fCurrentEntity.ch[0] = fCurrentEntity.ch[offset]; offset = 0; - if (load(1, false, true)) { + if (load(1, false, false)) { fCurrentEntity.columnNumber++; String symbol = fSymbolTable.addSymbol(fCurrentEntity.ch, 0, 1); @@ -776,10 +778,11 @@ public class XMLEntityScanner implements XMLLocator { if (XMLChar.isNameStart(fCurrentEntity.ch[offset])) { if (++fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(1); fCurrentEntity.ch[0] = fCurrentEntity.ch[offset]; offset = 0; - if (load(1, false, true)) { + if (load(1, false, false)) { fCurrentEntity.columnNumber++; //adding into symbol table. //XXX We are trying to add single character in SymbolTable?????? @@ -906,8 +909,9 @@ public class XMLEntityScanner implements XMLLocator { if (fCurrentEntity.position == fCurrentEntity.count) { load(0, true, true); } else if (fCurrentEntity.position == fCurrentEntity.count - 1) { + invokeListeners(0); fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1]; - load(1, false, true); + load(1, false, false); fCurrentEntity.position = 0; } @@ -1054,8 +1058,9 @@ public class XMLEntityScanner implements XMLLocator { if (fCurrentEntity.position == fCurrentEntity.count) { load(0, true, true); } else if (fCurrentEntity.position == fCurrentEntity.count - 1) { + invokeListeners(0); fCurrentEntity.ch[0] = fCurrentEntity.ch[fCurrentEntity.count - 1]; - load(1, false, true); + load(1, false, false); fCurrentEntity.position = 0; } @@ -1427,8 +1432,9 @@ public class XMLEntityScanner implements XMLLocator { } else if (c == '\n' && cc == '\r' && isExternal) { // handle newlines if (fCurrentEntity.position == fCurrentEntity.count) { + invokeListeners(1); fCurrentEntity.ch[0] = (char)cc; - load(1, false, true); + load(1, false, false); } fCurrentEntity.position++; if (fCurrentEntity.ch[fCurrentEntity.position] == '\n') { @@ -1502,8 +1508,9 @@ public class XMLEntityScanner implements XMLLocator { fCurrentEntity.lineNumber++; fCurrentEntity.columnNumber = 1; if (fCurrentEntity.position == fCurrentEntity.count - 1) { + invokeListeners(0); fCurrentEntity.ch[0] = (char)c; - entityChanged = load(1, true, true); + entityChanged = load(1, true, false); if (!entityChanged){ // the load change the position to be 1, // need to restore it when entity not changed |