summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/scala-compiler.jar.desired.sha12
-rw-r--r--lib/scala-library-src.jar.desired.sha12
-rw-r--r--lib/scala-library.jar.desired.sha12
-rw-r--r--src/compiler/scala/tools/nsc/symtab/classfile/PickleBuffer.scala26
-rw-r--r--src/compiler/scala/tools/nsc/symtab/classfile/PickleFormat.scala2
-rw-r--r--src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala2
-rw-r--r--src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala2
-rw-r--r--src/compiler/scala/tools/nsc/util/ShowPickled.scala4
8 files changed, 27 insertions, 15 deletions
diff --git a/lib/scala-compiler.jar.desired.sha1 b/lib/scala-compiler.jar.desired.sha1
index 24f7769f4d..edebb217fe 100644
--- a/lib/scala-compiler.jar.desired.sha1
+++ b/lib/scala-compiler.jar.desired.sha1
@@ -1 +1 @@
-5a086d35cec67cd01e0054c6a2b6e689546db80e ?scala-compiler.jar
+c7471d4447c6f75b47dd5cfce530ab4d5f549c5c ?scala-compiler.jar
diff --git a/lib/scala-library-src.jar.desired.sha1 b/lib/scala-library-src.jar.desired.sha1
index cc19cb9ea3..82ebe8fea4 100644
--- a/lib/scala-library-src.jar.desired.sha1
+++ b/lib/scala-library-src.jar.desired.sha1
@@ -1 +1 @@
-665f83b00093269bd8666b625b8ba58d407a9167 ?scala-library-src.jar
+d0b0dbf85cd746b3a04b989109f065939cfe47c0 ?scala-library-src.jar
diff --git a/lib/scala-library.jar.desired.sha1 b/lib/scala-library.jar.desired.sha1
index 32c30ee5b6..d28ca79a64 100644
--- a/lib/scala-library.jar.desired.sha1
+++ b/lib/scala-library.jar.desired.sha1
@@ -1 +1 @@
-5ccd5cfc187313ac414dfafc48de0fc3aa1f65a7 ?scala-library.jar
+d8acf15f498d0f9bd3de3762b2bea863369927a9 ?scala-library.jar
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/PickleBuffer.scala b/src/compiler/scala/tools/nsc/symtab/classfile/PickleBuffer.scala
index 23dc22e100..c09a2c797c 100644
--- a/src/compiler/scala/tools/nsc/symtab/classfile/PickleBuffer.scala
+++ b/src/compiler/scala/tools/nsc/symtab/classfile/PickleBuffer.scala
@@ -40,15 +40,25 @@ class PickleBuffer(data: Array[Byte], from: Int, to: Int) {
/** Write a natural number in big endian format, base 128.
* All but the last digits have bit 0x80 set.
*/
- def writeNat(x: Int) {
- def writeNatPrefix(x: Int) {
+ def writeNat(x: Int) =
+ writeLongNat(x.asInstanceOf[Long] & 0x00000000FFFFFFFFL)
+
+ /**
+ * Like writeNat, but for longs. This is not the same as
+ * writeLong, which writes in base 256. Note that the
+ * binary representation of LongNat is identical to Nat
+ * if the long value is in the range Int.MIN_VALUE to
+ * Int.MAX_VALUE.
+ */
+ def writeLongNat(x: Long) {
+ def writeNatPrefix(x: Long) {
val y = x >>> 7
if (y != 0) writeNatPrefix(y)
- writeByte((x & 0x7f) | 0x80)
+ writeByte(((x & 0x7f) | 0x80).asInstanceOf[Int])
}
val y = x >>> 7
if (y != 0) writeNatPrefix(y)
- writeByte(x & 0x7f)
+ writeByte((x & 0x7f).asInstanceOf[Int])
}
/** Write a natural number <code>x</code> at position <code>pos</code>.
@@ -93,9 +103,11 @@ class PickleBuffer(data: Array[Byte], from: Int, to: Int) {
/** Read a natural number in big endian format, base 128.
* All but the last digits have bit 0x80 set.*/
- def readNat(): Int = {
- var b = 0
- var x = 0
+ def readNat(): Int = readLongNat().asInstanceOf[Int]
+
+ def readLongNat(): Long = {
+ var b = 0L
+ var x = 0L
do {
b = readByte()
x = (x << 7) + (b & 0x7f)
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/PickleFormat.scala b/src/compiler/scala/tools/nsc/symtab/classfile/PickleFormat.scala
index db634f6092..0b74201a96 100644
--- a/src/compiler/scala/tools/nsc/symtab/classfile/PickleFormat.scala
+++ b/src/compiler/scala/tools/nsc/symtab/classfile/PickleFormat.scala
@@ -111,7 +111,7 @@ object PickleFormat {
* | 70 PosCLASSsym len_Nat pos_Nat SymbolInfo [thistype_Ref]
* | 71 PosMODULEsym len_Nat pos_Nat SymbolInfo
* | 72 PosVALsym len_Nat pos_Nat SymbolInfo [alias_Ref]
- * SymbolInfo = name_Ref owner_Ref flags_Nat [privateWithin_Ref] info_Ref
+ * SymbolInfo = name_Ref owner_Ref flags_LongNat [privateWithin_Ref] info_Ref
* NameInfo = <character sequence of length len_Nat in Utf8 format>
* NumInfo = <len_Nat-byte signed number in big endian format>
* Ref = Nat
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala b/src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala
index 7a721c52de..eb23571053 100644
--- a/src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala
+++ b/src/compiler/scala/tools/nsc/symtab/classfile/Pickler.scala
@@ -471,7 +471,7 @@ abstract class Pickler extends SubComponent {
var posOffset = 0
writeRef(sym.name)
writeRef(normalizedOwner(sym))
- writeNat((rawFlagsToPickled(sym.flags & PickledFlags)).asInstanceOf[Int])
+ writeLongNat((rawFlagsToPickled(sym.flags & PickledFlags)))
if (sym.privateWithin != NoSymbol) writeRef(sym.privateWithin)
writeRef(sym.info)
posOffset
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala b/src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala
index 0b76104433..82df45dd2d 100644
--- a/src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala
+++ b/src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala
@@ -182,7 +182,7 @@ abstract class UnPickler {
}
val name = readNameRef()
val owner = readSymbolRef()
- val flags = pickledToRawFlags(readNat())
+ val flags = pickledToRawFlags(readLongNat())
var privateWithin: Symbol = NoSymbol
var inforef = readNat()
if (isSymbolRef(inforef)) {
diff --git a/src/compiler/scala/tools/nsc/util/ShowPickled.scala b/src/compiler/scala/tools/nsc/util/ShowPickled.scala
index fa7c1b5941..633fa5adf5 100644
--- a/src/compiler/scala/tools/nsc/util/ShowPickled.scala
+++ b/src/compiler/scala/tools/nsc/util/ShowPickled.scala
@@ -7,7 +7,7 @@
package scala.tools.nsc.util
import java.io.{File, FileInputStream, PrintStream, IOException}
-import java.lang.Integer.toHexString
+import java.lang.Long.toHexString
import java.lang.Float.intBitsToFloat
import java.lang.Double.longBitsToDouble
@@ -84,7 +84,7 @@ object ShowPickled extends Names {
def printSymInfo() {
printNameRef()
printSymbolRef()
- val pflags = buf.readNat()
+ val pflags = buf.readLongNat()
out.print(" " + toHexString(pflags) +
"[" + Flags.flagsToString(Flags.pickledToRawFlags(pflags)) + "] ")
printTypeRef()