Skip to content

Commit

Permalink
Appendix. Typo that wasn't covered by the test suite.
Browse files Browse the repository at this point in the history
  • Loading branch information
hubertp committed May 8, 2012
1 parent 3769f4d commit ee26aca
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 62 deletions.
2 changes: 1 addition & 1 deletion src/compiler/scala/tools/nsc/transform/LazyVals.scala
Expand Up @@ -12,7 +12,7 @@ abstract class LazyVals extends Transform with TypingTransformers with ast.TreeD
import CODE._

val phaseName: String = "lazyvals"
private val FLAGS_PER_BYTE: Int = 32 // Byte
private val FLAGS_PER_BYTE: Int = 8 // Byte
private def bitmapKind = ByteClass

def newTransformer(unit: CompilationUnit): Transformer =
Expand Down
41 changes: 16 additions & 25 deletions test/files/run/lazy-locals.check
Expand Up @@ -36,30 +36,19 @@ forced lazy val t02
forced lazy val t01
forced lazy val t00
Sum is: 496
forced lazy val t32
forced lazy val t31
forced lazy val t30
forced lazy val t29
forced lazy val t28
forced lazy val t27
forced lazy val t26
forced lazy val t25
forced lazy val t24
forced lazy val t23
forced lazy val t22
forced lazy val t21
forced lazy val t20
forced lazy val t19
forced lazy val t18
forced lazy val t17
forced lazy val t16
forced lazy val t15
forced lazy val t14
forced lazy val t13
forced lazy val t12
forced lazy val t11
forced lazy val t10
forced lazy val t09
Sum again is: 496
Sum again again is: 496
forced lazy val t07
forced lazy val t06
forced lazy val t05
forced lazy val t04
forced lazy val t03
forced lazy val t02
forced lazy val t01
forced lazy val t00
Sum is: 28
Sum again is: 28
Sum again again is: 28
forced lazy val t08
forced lazy val t07
forced lazy val t06
Expand All @@ -69,7 +58,9 @@ forced lazy val t03
forced lazy val t02
forced lazy val t01
forced lazy val t00
Sum is: 528
Sum is: 36
Sum again is: 36
Sum again again is: 36
forced lazy val t at n = 0
42
forced lazy val t at n = 0
Expand Down
85 changes: 49 additions & 36 deletions test/files/run/lazy-locals.scala
Expand Up @@ -13,7 +13,7 @@ object Test extends App {
1 + t + t
}

/** test 32 lazy vals, which fills one bitmap int. */
/** test 32 lazy vals, which should spill over multiple byte bitmaps. */
def testLazy32 = {
lazy val t00 = { Console.println("forced lazy val t00"); 0 }
lazy val t01 = { Console.println("forced lazy val t01"); 1 }
Expand Down Expand Up @@ -51,12 +51,25 @@ object Test extends App {
val sum = t31 + t30 + t29 + t28 + t27 + t26 + t25 + t24 + t23 +
t22 + t21 + t20 + t19 + t18 + t17 + t16 + t15 + t14 +
t13 + t12 + t11 + t10 + t09 + t08 + t07 + t06 + t05 +
t04 + t03 + t02 + t01 + t00;
println("Sum is: " + sum);
t04 + t03 + t02 + t01 + t00
val sum2 = t31 + t30 + t29 + t28 + t27 + t26 + t25 + t24 + t23 +
t22 + t21 + t20 + t19 + t18 + t17 + t16 + t15 + t14 +
t13 + t12 + t11 + t10 + t09 + t08 + t07 + t06 + t05 +
t04 + t03 + t02 + t01 + t00
val sum3 = t00 + t01 + t02 + t03 + t04 + t05 + t06 + t07 + t08 +
t09 + t10 + t11 + t12 + t13 + t14 + t15 + t16 + t17 +
t18 + t19 + t20 + t21 + t22 + t23 + t24 + t25 + t26 +
t27 + t28 + t29 + t30 + t31



println("Sum is: " + sum)
println("Sum again is: " + sum2)
println("Sum again again is: " + sum3)
}

/** test 32 lazy vals, which needs two bitmap ints. */
def testLazy33 = {
/** test 8 lazy vals, which should fit one byte bitmap. */
def testLazy8 = {
lazy val t00 = { Console.println("forced lazy val t00"); 0 }
lazy val t01 = { Console.println("forced lazy val t01"); 1 }
lazy val t02 = { Console.println("forced lazy val t02"); 2 }
Expand All @@ -65,39 +78,38 @@ object Test extends App {
lazy val t05 = { Console.println("forced lazy val t05"); 5 }
lazy val t06 = { Console.println("forced lazy val t06"); 6 }
lazy val t07 = { Console.println("forced lazy val t07"); 7 }
lazy val t08 = { Console.println("forced lazy val t08"); 8 }
lazy val t09 = { Console.println("forced lazy val t09"); 9 }
lazy val t10 = { Console.println("forced lazy val t10"); 10 }
lazy val t11 = { Console.println("forced lazy val t11"); 11 }
lazy val t12 = { Console.println("forced lazy val t12"); 12 }
lazy val t13 = { Console.println("forced lazy val t13"); 13 }
lazy val t14 = { Console.println("forced lazy val t14"); 14 }
lazy val t15 = { Console.println("forced lazy val t15"); 15 }
lazy val t16 = { Console.println("forced lazy val t16"); 16 }
lazy val t17 = { Console.println("forced lazy val t17"); 17 }
lazy val t18 = { Console.println("forced lazy val t18"); 18 }
lazy val t19 = { Console.println("forced lazy val t19"); 19 }
lazy val t20 = { Console.println("forced lazy val t20"); 20 }
lazy val t21 = { Console.println("forced lazy val t21"); 21 }
lazy val t22 = { Console.println("forced lazy val t22"); 22 }
lazy val t23 = { Console.println("forced lazy val t23"); 23 }
lazy val t24 = { Console.println("forced lazy val t24"); 24 }
lazy val t25 = { Console.println("forced lazy val t25"); 25 }
lazy val t26 = { Console.println("forced lazy val t26"); 26 }
lazy val t27 = { Console.println("forced lazy val t27"); 27 }
lazy val t28 = { Console.println("forced lazy val t28"); 28 }
lazy val t29 = { Console.println("forced lazy val t29"); 29 }
lazy val t30 = { Console.println("forced lazy val t30"); 30 }
lazy val t31 = { Console.println("forced lazy val t31"); 31 }
lazy val t32 = { Console.println("forced lazy val t32"); 32 }

val sum = t32 + t31 + t30 + t29 + t28 + t27 + t26 + t25 + t24 + t23 +
t22 + t21 + t20 + t19 + t18 + t17 + t16 + t15 + t14 +
t13 + t12 + t11 + t10 + t09 + t08 + t07 + t06 + t05 +
t04 + t03 + t02 + t01 + t00;
println("Sum is: " + sum);
val sum = t07 + t06 + t05 + t04 + t03 + t02 + t01 + t00
val sum2 = t07 + t06 + t05 + t04 + t03 + t02 + t01 + t00
val sum3 = t00 + t01 + t02 + t03 + t04 + t05 + t06 + t07



println("Sum is: " + sum)
println("Sum again is: " + sum2)
println("Sum again again is: " + sum3)
}

/** test 9 lazy vals, which should spill over two bitmaps. */
def testLazy9 = {
lazy val t00 = { Console.println("forced lazy val t00"); 0 }
lazy val t01 = { Console.println("forced lazy val t01"); 1 }
lazy val t02 = { Console.println("forced lazy val t02"); 2 }
lazy val t03 = { Console.println("forced lazy val t03"); 3 }
lazy val t04 = { Console.println("forced lazy val t04"); 4 }
lazy val t05 = { Console.println("forced lazy val t05"); 5 }
lazy val t06 = { Console.println("forced lazy val t06"); 6 }
lazy val t07 = { Console.println("forced lazy val t07"); 7 }
lazy val t08 = { Console.println("forced lazy val t08"); 8 }

val sum = t08 + t07 + t06 + t05 + t04 + t03 + t02 + t01 + t00
val sum2 = t08 + t07 + t06 + t05 + t04 + t03 + t02 + t01 + t00
val sum3 = t00 + t01 + t02 + t03 + t04 + t05 + t06 + t07 + t08

println("Sum is: " + sum)
println("Sum again is: " + sum2)
println("Sum again again is: " + sum3)
}

/** test recursive method with lazy vals and a single forced */
def testLazyRec(n: Int): Int = {
Expand Down Expand Up @@ -185,7 +197,8 @@ object Test extends App {

println(testLazy)
testLazy32
testLazy33
testLazy8
testLazy9
println(testLazyRec(5))
println(testLazyRecMany(5))
testRecVal
Expand Down

0 comments on commit ee26aca

Please sign in to comment.