Created
November 28, 2011 16:08
-
-
Save adriaanm/1400910 to your computer and use it in GitHub Desktop.
virtpatmat compilation of a match and various hand-coded optimizations
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import improving.benchmark.Benchmark.Race | |
val list = List(1, 3, 4, 7) | |
val race = Race(() => fastMatch(list), () => virtMatch_no_option(list))(100000).converge() | |
def fastMatch(x1: List[Int]) = { | |
x1 match { | |
case 1 :: 3 :: 4 :: 5 :: x => println("nope") | |
case 1 :: 3 :: 4 :: 6 :: x => println("nope") // only need to test whether the previous case failed due to the third element not being 5, and whether third element is 6 | |
case 1 :: 3 :: 4 :: 7 :: x => 1 | |
} | |
} | |
// getting rid of Option, as suggested by Tiark | |
def virtMatch_no_option(x1: List[Int]) = { | |
val zero49: Option[Nothing] = MatchingStrategy.OptionMatchingStrategy.zero; | |
var matchRes13: Any = null; | |
var keepGoing14: Boolean = true; | |
{ | |
{ | |
if (x1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x4: collection.immutable.::[Int] = x1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x4.ne(null)) | |
if (1.==(x4.hd$1)) | |
{ | |
val x37: Int = x4.hd$1; | |
if (x4.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x7: collection.immutable.::[Int] = x4.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x7.ne(null)) | |
if (3.==(x7.hd$1)) | |
{ | |
val x38: Int = x7.hd$1; | |
if (x7.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x10: collection.immutable.::[Int] = x7.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x10.ne(null)) | |
if (4.==(x10.hd$1)) | |
{ | |
val x39: Int = x10.hd$1; | |
if (x10.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x12: collection.immutable.::[Int] = x10.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x12.ne(null)) | |
if (5.==(x12.hd$1)) | |
{ | |
val x40: Int = x12.hd$1; | |
{ | |
matchRes13 = Predef.println("nope").asInstanceOf[Unit]; | |
keepGoing14 = false | |
} | |
} | |
else | |
zero49 | |
else | |
zero49 | |
} | |
else | |
zero49 | |
} | |
else | |
zero49 | |
else | |
zero49 | |
} | |
else | |
zero49 | |
} | |
else | |
zero49 | |
else | |
zero49 | |
} | |
else | |
zero49 | |
} | |
else | |
zero49 | |
else | |
zero49 | |
} | |
else | |
zero49; | |
if (keepGoing14) | |
if (x1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x17: collection.immutable.::[Int] = x1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x17.ne(null)) | |
if (1.==(x17.hd$1)) | |
{ | |
val x41: Int = x17.hd$1; | |
if (x17.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x20: collection.immutable.::[Int] = x17.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x20.ne(null)) | |
if (3.==(x20.hd$1)) | |
{ | |
val x42: Int = x20.hd$1; | |
if (x20.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x23: collection.immutable.::[Int] = x20.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x23.ne(null)) | |
if (4.==(x23.hd$1)) | |
{ | |
val x43: Int = x23.hd$1; | |
if (x23.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x25: collection.immutable.::[Int] = x23.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x25.ne(null)) | |
if (6.==(x25.hd$1)) | |
{ | |
val x44: Int = x25.hd$1; | |
{ | |
matchRes13 = Predef.println("nope").asInstanceOf[Unit]; | |
keepGoing14 = false | |
} | |
} | |
else | |
zero49 | |
else | |
zero49 | |
} | |
else | |
zero49 | |
} | |
else | |
zero49 | |
else | |
zero49 | |
} | |
else | |
zero49 | |
} | |
else | |
zero49 | |
else | |
zero49 | |
} | |
else | |
zero49 | |
} | |
else | |
zero49 | |
else | |
zero49 | |
} | |
else | |
zero49 | |
else | |
zero49 | |
}; | |
if (keepGoing14) | |
if (x1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x28: collection.immutable.::[Int] = x1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x28.ne(null)) | |
if (1.==(x28.hd$1)) | |
{ | |
val x45: Int = x28.hd$1; | |
if (x28.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x31: collection.immutable.::[Int] = x28.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x31.ne(null)) | |
if (3.==(x31.hd$1)) | |
{ | |
val x46: Int = x31.hd$1; | |
if (x31.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x34: collection.immutable.::[Int] = x31.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x34.ne(null)) | |
if (4.==(x34.hd$1)) | |
{ | |
val x47: Int = x34.hd$1; | |
if (x34.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x36: collection.immutable.::[Int] = x34.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x36.ne(null)) | |
if (7.==(x36.hd$1)) | |
{ | |
val x48: Int = x36.hd$1; | |
{ | |
matchRes13 = 1.asInstanceOf[Int]; | |
keepGoing14 = false | |
} | |
} | |
else | |
zero49 | |
else | |
zero49 | |
} | |
else | |
zero49 | |
} | |
else | |
zero49 | |
else | |
zero49 | |
} | |
else | |
zero49 | |
} | |
else | |
zero49 | |
else | |
zero49 | |
} | |
else | |
zero49 | |
} | |
else | |
zero49 | |
else | |
zero49 | |
} | |
else | |
zero49 | |
else | |
zero49 | |
}; | |
if (keepGoing14) | |
throw new MatchError(x1) | |
else | |
matchRes13 | |
} | |
// hand-coded sharing | |
def virtMatch_sharing(x1: List[Int]) = { | |
var sharing = false | |
var shared1: Int = 0 | |
var res: Any = null | |
var keepGoing = true | |
if (x1.isInstanceOf[collection.immutable.::[Int]]) { | |
val x4: collection.immutable.::[Int] = x1.asInstanceOf[collection.immutable.::[Int]]; | |
if (1.==(x4.hd$1)) { | |
if (x4.tl$1.isInstanceOf[collection.immutable.::[Int]]) { | |
val x7: collection.immutable.::[Int] = x4.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (3.==(x7.hd$1)) { | |
if (x7.tl$1.isInstanceOf[collection.immutable.::[Int]]) { | |
val x10: collection.immutable.::[Int] = x7.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (4.==(x10.hd$1)) { | |
if (x10.tl$1.isInstanceOf[collection.immutable.::[Int]]) { | |
val x12: collection.immutable.::[Int] = x10.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
sharing = true // the nested if's need not be repeated for the following cases since they test exactly the same thing | |
shared1 = (x12.hd$1) // save captured variables (by the conceptual closure of the dependent sub-patterns) | |
if (5 == shared1) { | |
res = println("nope") | |
keepGoing = false | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
if(keepGoing && sharing && 6 == shared1 ) { | |
res = println("nope") | |
keepGoing = false | |
} | |
if (keepGoing && sharing && 7 == shared1) { | |
res = 1 | |
keepGoing = false | |
} | |
if (keepGoing) {throw new MatchError("meh")} | |
else res | |
} | |
// hand-coded inlined runOrElse | |
def virtMatch_inline_runOrElse(x1: List[Int]) = { | |
import MatchingStrategy.OptionMatchingStrategy._ | |
val res = { | |
val o48: Option[AnyVal] = { | |
val o47: Option[AnyVal] = if (x1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x4: collection.immutable.::[Int] = x1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x4.ne(null)) | |
if (1.==(x4.hd$1)) | |
{ | |
val x35: Int = x4.hd$1; | |
if (x4.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x7: collection.immutable.::[Int] = x4.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x7.ne(null)) | |
if (3.==(x7.hd$1)) | |
{ | |
val x36: Int = x7.hd$1; | |
if (x7.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x10: collection.immutable.::[Int] = x7.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x10.ne(null)) | |
if (4.==(x10.hd$1)) | |
{ | |
val x37: Int = x10.hd$1; | |
if (x10.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x12: collection.immutable.::[Int] = x10.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x12.ne(null)) | |
if (5.==(x12.hd$1)) | |
{ | |
val x38: Int = x12.hd$1; | |
MatchingStrategy.OptionMatchingStrategy.caseResult[Unit](println("nope")) | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero; | |
if (o47.isEmpty) | |
if (x1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x15: collection.immutable.::[Int] = x1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x15.ne(null)) | |
if (1.==(x15.hd$1)) | |
{ | |
val x39: Int = x15.hd$1; | |
if (x15.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x18: collection.immutable.::[Int] = x15.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x18.ne(null)) | |
if (3.==(x18.hd$1)) | |
{ | |
val x40: Int = x18.hd$1; | |
if (x18.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x21: collection.immutable.::[Int] = x18.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x21.ne(null)) | |
if (4.==(x21.hd$1)) | |
{ | |
val x41: Int = x21.hd$1; | |
if (x21.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x23: collection.immutable.::[Int] = x21.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x23.ne(null)) | |
if (6.==(x23.hd$1)) | |
{ | |
val x42: Int = x23.hd$1; | |
MatchingStrategy.OptionMatchingStrategy.caseResult[Unit](println("nope")) | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
o47 | |
}; | |
if (o48.isEmpty) | |
if (x1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x26: collection.immutable.::[Int] = x1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x26.ne(null)) | |
if (1.==(x26.hd$1)) | |
{ | |
val x43: Int = x26.hd$1; | |
if (x26.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x29: collection.immutable.::[Int] = x26.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x29.ne(null)) | |
if (3.==(x29.hd$1)) | |
{ | |
val x44: Int = x29.hd$1; | |
if (x29.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x32: collection.immutable.::[Int] = x29.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x32.ne(null)) | |
if (4.==(x32.hd$1)) | |
{ | |
val x45: Int = x32.hd$1; | |
if (x32.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x34: collection.immutable.::[Int] = x32.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x34.ne(null)) | |
if (7.==(x34.hd$1)) | |
{ | |
val x46: Int = x34.hd$1; | |
MatchingStrategy.OptionMatchingStrategy.caseResult[Int](1) | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
o48 | |
} | |
res.getOrElse {throw new MatchError("meh")} | |
} | |
// hand-coded mutable var for orElse | |
def virtMatch_var_orElse(x1: List[Int]) = { | |
import MatchingStrategy.OptionMatchingStrategy._ | |
var res: Option[AnyVal] = None | |
if (x1.isInstanceOf[collection.immutable.::[Int]]) { | |
val x4: collection.immutable.::[Int] = x1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x4.ne(null)) | |
if (1.==(x4.hd$1)) | |
{ | |
val x35: Int = x4.hd$1; | |
if (x4.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x7: collection.immutable.::[Int] = x4.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x7.ne(null)) | |
if (3.==(x7.hd$1)) | |
{ | |
val x36: Int = x7.hd$1; | |
if (x7.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x10: collection.immutable.::[Int] = x7.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x10.ne(null)) | |
if (4.==(x10.hd$1)) | |
{ | |
val x37: Int = x10.hd$1; | |
if (x10.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x12: collection.immutable.::[Int] = x10.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x12.ne(null)) | |
if (5.==(x12.hd$1)) | |
{ | |
val x38: Int = x12.hd$1; | |
res = MatchingStrategy.OptionMatchingStrategy.caseResult[Unit](println("nope")) | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}; | |
if (res.isEmpty) | |
if (x1.isInstanceOf[collection.immutable.::[Int]]) { | |
val x15: collection.immutable.::[Int] = x1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x15.ne(null)) | |
if (1.==(x15.hd$1)) | |
{ | |
val x39: Int = x15.hd$1; | |
if (x15.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x18: collection.immutable.::[Int] = x15.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x18.ne(null)) | |
if (3.==(x18.hd$1)) | |
{ | |
val x40: Int = x18.hd$1; | |
if (x18.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x21: collection.immutable.::[Int] = x18.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x21.ne(null)) | |
if (4.==(x21.hd$1)) | |
{ | |
val x41: Int = x21.hd$1; | |
if (x21.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x23: collection.immutable.::[Int] = x21.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x23.ne(null)) | |
if (6.==(x23.hd$1)) | |
{ | |
val x42: Int = x23.hd$1; | |
res = MatchingStrategy.OptionMatchingStrategy.caseResult[Unit](println("nope")) | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
if (res.isEmpty) | |
if (x1.isInstanceOf[collection.immutable.::[Int]]) { | |
val x26: collection.immutable.::[Int] = x1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x26.ne(null)) | |
if (1.==(x26.hd$1)) | |
{ | |
val x43: Int = x26.hd$1; | |
if (x26.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x29: collection.immutable.::[Int] = x26.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x29.ne(null)) | |
if (3.==(x29.hd$1)) | |
{ | |
val x44: Int = x29.hd$1; | |
if (x29.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x32: collection.immutable.::[Int] = x29.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x32.ne(null)) | |
if (4.==(x32.hd$1)) | |
{ | |
val x45: Int = x32.hd$1; | |
if (x32.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x34: collection.immutable.::[Int] = x32.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x34.ne(null)) | |
if (7.==(x34.hd$1)) | |
{ | |
val x46: Int = x34.hd$1; | |
res = MatchingStrategy.OptionMatchingStrategy.caseResult[Int](1) | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
res.getOrElse {throw new MatchError("meh")} | |
} | |
// what -Yvirtpatmat generates with scalac compiled from http://github.com/adriaanm/scala-dev/commit/7068e28f6ccaa14d87677c3329e096c0a7ed55b5 | |
def virtMatch(x1: List[Int]): AnyVal = MatchingStrategy.OptionMatchingStrategy.runOrElse[List[Int], AnyVal](x1)(((x1: List[Int]) => { | |
val o48: Option[AnyVal] = { | |
val o47: Option[AnyVal] = if (x1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x4: collection.immutable.::[Int] = x1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x4.ne(null)) | |
if (1.==(x4.hd$1)) | |
{ | |
val x35: Int = x4.hd$1; | |
if (x4.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x7: collection.immutable.::[Int] = x4.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x7.ne(null)) | |
if (3.==(x7.hd$1)) | |
{ | |
val x36: Int = x7.hd$1; | |
if (x7.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x10: collection.immutable.::[Int] = x7.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x10.ne(null)) | |
if (4.==(x10.hd$1)) | |
{ | |
val x37: Int = x10.hd$1; | |
if (x10.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x12: collection.immutable.::[Int] = x10.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x12.ne(null)) | |
if (5.==(x12.hd$1)) | |
{ | |
val x38: Int = x12.hd$1; | |
MatchingStrategy.OptionMatchingStrategy.caseResult[Unit](Predef.println("nope").asInstanceOf[Unit]) | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero; | |
if (o47.isEmpty) | |
if (x1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x15: collection.immutable.::[Int] = x1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x15.ne(null)) | |
if (1.==(x15.hd$1)) | |
{ | |
val x39: Int = x15.hd$1; | |
if (x15.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x18: collection.immutable.::[Int] = x15.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x18.ne(null)) | |
if (3.==(x18.hd$1)) | |
{ | |
val x40: Int = x18.hd$1; | |
if (x18.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x21: collection.immutable.::[Int] = x18.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x21.ne(null)) | |
if (4.==(x21.hd$1)) | |
{ | |
val x41: Int = x21.hd$1; | |
if (x21.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x23: collection.immutable.::[Int] = x21.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x23.ne(null)) | |
if (6.==(x23.hd$1)) | |
{ | |
val x42: Int = x23.hd$1; | |
MatchingStrategy.OptionMatchingStrategy.caseResult[Unit](Predef.println("nope").asInstanceOf[Unit]) | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
o47 | |
}; | |
if (o48.isEmpty) | |
if (x1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x26: collection.immutable.::[Int] = x1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x26.ne(null)) | |
if (1.==(x26.hd$1)) | |
{ | |
val x43: Int = x26.hd$1; | |
if (x26.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x29: collection.immutable.::[Int] = x26.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x29.ne(null)) | |
if (3.==(x29.hd$1)) | |
{ | |
val x44: Int = x29.hd$1; | |
if (x29.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x32: collection.immutable.::[Int] = x29.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x32.ne(null)) | |
if (4.==(x32.hd$1)) | |
{ | |
val x45: Int = x32.hd$1; | |
if (x32.tl$1.isInstanceOf[collection.immutable.::[Int]]) | |
{ | |
val x34: collection.immutable.::[Int] = x32.tl$1.asInstanceOf[collection.immutable.::[Int]]; | |
if (x34.ne(null)) | |
if (7.==(x34.hd$1)) | |
{ | |
val x46: Int = x34.hd$1; | |
MatchingStrategy.OptionMatchingStrategy.caseResult[Int](1) | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
} | |
else | |
MatchingStrategy.OptionMatchingStrategy.zero | |
else | |
o48 | |
})) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment