Pseudocode: don't write full label name when jump on it

This commit is contained in:
Svetlana Isakova
2014-09-03 16:00:41 +04:00
parent 3a9b7bbade
commit 976d5ab030
89 changed files with 482 additions and 480 deletions
@@ -23,62 +23,62 @@ L0:
mark(1)
r(1) -> <v2>
magic[EQUALS_IN_WHEN_CONDITION](1|<v1>, <v2>) -> <v3>
jmp?(L4 [next 'when' entry]|<v3>) NEXT:[mark(in Collections.singleton(2) -> "2"), mark("1")]
jmp?(L4|<v3>) NEXT:[mark(in Collections.singleton(2) -> "2"), mark("1")]
L3 ['when' entry body]:
mark("1")
r("1") -> <v4>
jmp(L2 [after 'when' expression]) NEXT:[merge(when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null }|<v4>, <v8>, <v10>, <v14>, <v16>, <v17>) -> <v18>]
jmp(L2) NEXT:[merge(when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null }|<v4>, <v8>, <v10>, <v14>, <v16>, <v17>) -> <v18>]
L4 [next 'when' entry]:
mark(in Collections.singleton(2) -> "2") PREV:[jmp?(L4 [next 'when' entry]|<v3>)]
mark(in Collections.singleton(2) -> "2") PREV:[jmp?(L4|<v3>)]
mark(Collections.singleton(2))
r(2) -> <v5>
mark(singleton(2))
call(singleton(2), singleton|<v5>) -> <v6>
mark(in Collections.singleton(2))
call(in Collections.singleton(2), contains|<v6>, <v1>) -> <v7>
jmp?(L6 [next 'when' entry]|<v7>) NEXT:[mark(is Int -> "Int"), mark("2")]
jmp?(L6|<v7>) NEXT:[mark(is Int -> "Int"), mark("2")]
L5 ['when' entry body]:
mark("2")
r("2") -> <v8>
jmp(L2 [after 'when' expression]) NEXT:[merge(when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null }|<v4>, <v8>, <v10>, <v14>, <v16>, <v17>) -> <v18>]
jmp(L2) NEXT:[merge(when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null }|<v4>, <v8>, <v10>, <v14>, <v16>, <v17>) -> <v18>]
L6 [next 'when' entry]:
mark(is Int -> "Int") PREV:[jmp?(L6 [next 'when' entry]|<v7>)]
mark(is Int -> "Int") PREV:[jmp?(L6|<v7>)]
mark(is Int)
magic[IS](is Int|<v1>) -> <v9>
jmp?(L8 [next 'when' entry]|<v9>) NEXT:[mark(!in Collections.singleton(3) -> "!3"), mark("Int")]
jmp?(L8|<v9>) NEXT:[mark(!in Collections.singleton(3) -> "!3"), mark("Int")]
L7 ['when' entry body]:
mark("Int")
r("Int") -> <v10>
jmp(L2 [after 'when' expression]) NEXT:[merge(when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null }|<v4>, <v8>, <v10>, <v14>, <v16>, <v17>) -> <v18>]
jmp(L2) NEXT:[merge(when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null }|<v4>, <v8>, <v10>, <v14>, <v16>, <v17>) -> <v18>]
L8 [next 'when' entry]:
mark(!in Collections.singleton(3) -> "!3") PREV:[jmp?(L8 [next 'when' entry]|<v9>)]
mark(!in Collections.singleton(3) -> "!3") PREV:[jmp?(L8|<v9>)]
mark(Collections.singleton(3))
r(3) -> <v11>
mark(singleton(3))
call(singleton(3), singleton|<v11>) -> <v12>
mark(!in Collections.singleton(3))
call(!in Collections.singleton(3), contains|<v12>, <v1>) -> <v13>
jmp?(L10 [next 'when' entry]|<v13>) NEXT:[mark(!is Number -> "!Number"), mark("!3")]
jmp?(L10|<v13>) NEXT:[mark(!is Number -> "!Number"), mark("!3")]
L9 ['when' entry body]:
mark("!3")
r("!3") -> <v14>
jmp(L2 [after 'when' expression]) NEXT:[merge(when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null }|<v4>, <v8>, <v10>, <v14>, <v16>, <v17>) -> <v18>]
jmp(L2) NEXT:[merge(when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null }|<v4>, <v8>, <v10>, <v14>, <v16>, <v17>) -> <v18>]
L10 [next 'when' entry]:
mark(!is Number -> "!Number") PREV:[jmp?(L10 [next 'when' entry]|<v13>)]
mark(!is Number -> "!Number") PREV:[jmp?(L10|<v13>)]
mark(!is Number)
magic[IS](!is Number|<v1>) -> <v15>
jmp?(L12 [next 'when' entry]|<v15>) NEXT:[mark(else -> null), mark("!Number")]
jmp?(L12|<v15>) NEXT:[mark(else -> null), mark("!Number")]
L11 ['when' entry body]:
mark("!Number")
r("!Number") -> <v16>
jmp(L2 [after 'when' expression]) NEXT:[merge(when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null }|<v4>, <v8>, <v10>, <v14>, <v16>, <v17>) -> <v18>]
jmp(L2) NEXT:[merge(when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null }|<v4>, <v8>, <v10>, <v14>, <v16>, <v17>) -> <v18>]
L12 [next 'when' entry]:
mark(else -> null) PREV:[jmp?(L12 [next 'when' entry]|<v15>)]
mark(else -> null) PREV:[jmp?(L12|<v15>)]
L13 ['when' entry body]:
r(null) -> <v17>
jmp(L2 [after 'when' expression])
jmp(L2)
L2 [after 'when' expression]:
merge(when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null }|<v4>, <v8>, <v10>, <v14>, <v16>, <v17>) -> <v18> PREV:[jmp(L2 [after 'when' expression]), jmp(L2 [after 'when' expression]), jmp(L2 [after 'when' expression]), jmp(L2 [after 'when' expression]), jmp(L2 [after 'when' expression]), jmp(L2 [after 'when' expression])]
merge(when (a) { 1 -> "1" in Collections.singleton(2) -> "2" is Int -> "Int" !in Collections.singleton(3) -> "!3" !is Number -> "!Number" else -> null }|<v4>, <v8>, <v10>, <v14>, <v16>, <v17>) -> <v18> PREV:[jmp(L2), jmp(L2), jmp(L2), jmp(L2), jmp(L2), jmp(L2)]
w(t|<v18>)
L1:
1 <END> NEXT:[<SINK>]