| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'sexpr_unstringifier.dart'; | 5 import 'sexpr_unstringifier.dart'; |
| 6 import "package:expect/expect.dart"; | 6 import "package:expect/expect.dart"; |
| 7 import 'package:compiler/src/cps_ir/cps_ir_nodes.dart'; | 7 import 'package:compiler/src/cps_ir/cps_ir_nodes.dart'; |
| 8 import 'package:compiler/src/cps_ir/cps_ir_nodes_sexpr.dart'; | 8 import 'package:compiler/src/cps_ir/cps_ir_nodes_sexpr.dart'; |
| 9 import 'package:compiler/src/cps_ir/optimizers.dart'; | 9 import 'package:compiler/src/cps_ir/optimizers.dart'; |
| 10 | 10 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 (LetPrim (v4 (Constant (Null))) | 29 (LetPrim (v4 (Constant (Null))) |
| 30 (InvokeContinuation return (v4)))) | 30 (InvokeContinuation return (v4)))) |
| 31 (k2 () | 31 (k2 () |
| 32 (LetCont | 32 (LetCont |
| 33 ((k3 (v5) | 33 ((k3 (v5) |
| 34 (LetCont | 34 (LetCont |
| 35 ((k4 (v6) | 35 ((k4 (v6) |
| 36 (LetPrim (v7 (Constant (Int 1))) | 36 (LetPrim (v7 (Constant (Int 1))) |
| 37 (LetCont | 37 (LetCont |
| 38 ((k5 (v8) | 38 ((k5 (v8) |
| 39 (InvokeContinuation* k0 (v2 v8)))) | 39 (InvokeContinuation rec k0 (v2 v8)))) |
| 40 (InvokeMethod v3 + (v7) k5))))) | 40 (InvokeMethod v3 + (v7) k5))))) |
| 41 (InvokeStatic print (v5) k4)))) | 41 (InvokeStatic print (v5) k4)))) |
| 42 (InvokeMethod v2 toString () k3)))) | 42 (InvokeMethod v2 toString () k3)))) |
| 43 (LetPrim (v9 (Constant (Int 2))) | 43 (LetPrim (v9 (Constant (Int 2))) |
| 44 (LetCont | 44 (LetCont |
| 45 ((k6 (v10) | 45 ((k6 (v10) |
| 46 (Branch (IsTrue v10) k2 k1))) | 46 (Branch (IsTrue v10) k2 k1))) |
| 47 (InvokeMethod v3 < (v9) k6)))))) | 47 (InvokeMethod v3 < (v9) k6)))))) |
| 48 (InvokeContinuation k0 (v0 v1)))))) | 48 (InvokeContinuation k0 (v0 v1)))))) |
| 49 """; | 49 """; |
| 50 | 50 |
| 51 String READ_IN_LOOP_OUT = """ | 51 String READ_IN_LOOP_OUT = """ |
| 52 (FunctionDefinition main () return () | 52 (FunctionDefinition main () return () |
| 53 (LetPrim (v0 (Constant (Int 42))) | 53 (LetPrim (v0 (Constant (Int 42))) |
| 54 (LetPrim (v1 (Constant (Int 0))) | 54 (LetPrim (v1 (Constant (Int 0))) |
| 55 (LetCont | 55 (LetCont |
| 56 ((rec k0 (v2) | 56 ((rec k0 (v2) |
| 57 (LetCont | 57 (LetCont |
| 58 ((k1 () | 58 ((k1 () |
| 59 (LetPrim (v3 (Constant (Null))) | 59 (LetPrim (v3 (Constant (Null))) |
| 60 (InvokeContinuation return (v3)))) | 60 (InvokeContinuation return (v3)))) |
| 61 (k2 () | 61 (k2 () |
| 62 (LetCont | 62 (LetCont |
| 63 ((k3 (v4) | 63 ((k3 (v4) |
| 64 (LetCont | 64 (LetCont |
| 65 ((k4 (v5) | 65 ((k4 (v5) |
| 66 (LetPrim (v6 (Constant (Int 1))) | 66 (LetPrim (v6 (Constant (Int 1))) |
| 67 (LetCont | 67 (LetCont |
| 68 ((k5 (v7) | 68 ((k5 (v7) |
| 69 (InvokeContinuation* k0 (v7)))) | 69 (InvokeContinuation rec k0 (v7)))) |
| 70 (InvokeMethod v2 + (v6) k5))))) | 70 (InvokeMethod v2 + (v6) k5))))) |
| 71 (InvokeStatic print (v4) k4)))) | 71 (InvokeStatic print (v4) k4)))) |
| 72 (InvokeMethod v0 toString () k3)))) | 72 (InvokeMethod v0 toString () k3)))) |
| 73 (LetPrim (v8 (Constant (Int 2))) | 73 (LetPrim (v8 (Constant (Int 2))) |
| 74 (LetCont | 74 (LetCont |
| 75 ((k6 (v9) | 75 ((k6 (v9) |
| 76 (Branch (IsTrue v9) k2 k1))) | 76 (Branch (IsTrue v9) k2 k1))) |
| 77 (InvokeMethod v2 < (v8) k6)))))) | 77 (InvokeMethod v2 < (v8) k6)))))) |
| 78 (InvokeContinuation k0 (v1)))))) | 78 (InvokeContinuation k0 (v1)))))) |
| 79 """; | 79 """; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 (InvokeMethod v2 toString () k2))) | 111 (InvokeMethod v2 toString () k2))) |
| 112 (k4 () | 112 (k4 () |
| 113 (LetPrim (v7 (Constant (Int 0))) | 113 (LetPrim (v7 (Constant (Int 0))) |
| 114 (LetCont | 114 (LetCont |
| 115 ((rec k5 (v8 v9 v10) | 115 ((rec k5 (v8 v9 v10) |
| 116 (LetCont | 116 (LetCont |
| 117 ((k6 () | 117 ((k6 () |
| 118 (LetPrim (v11 (Constant (Int 1))) | 118 (LetPrim (v11 (Constant (Int 1))) |
| 119 (LetCont | 119 (LetCont |
| 120 ((k7 (v12) | 120 ((k7 (v12) |
| 121 (InvokeContinuation* k0 (v8 v12)))) | 121 (InvokeContinuation rec k0 (v8 v12)
))) |
| 122 (InvokeMethod v9 + (v11) k7)))) | 122 (InvokeMethod v9 + (v11) k7)))) |
| 123 (k8 () | 123 (k8 () |
| 124 (LetCont | 124 (LetCont |
| 125 ((k9 (v13) | 125 ((k9 (v13) |
| 126 (LetCont | 126 (LetCont |
| 127 ((k10 (v14) | 127 ((k10 (v14) |
| 128 (LetPrim (v15 (Constant (Int 1
))) | 128 (LetPrim (v15 (Constant (Int 1
))) |
| 129 (LetCont | 129 (LetCont |
| 130 ((k11 (v16) | 130 ((k11 (v16) |
| 131 (InvokeContinuation*
k5 (v8 v9 v16)))) | 131 (InvokeContinuation r
ec k5 (v8 v9 v16)))) |
| 132 (InvokeMethod v10 + (v15)
k11))))) | 132 (InvokeMethod v10 + (v15)
k11))))) |
| 133 (InvokeStatic print (v13) k10)))) | 133 (InvokeStatic print (v13) k10)))) |
| 134 (InvokeMethod v9 toString () k9)))) | 134 (InvokeMethod v9 toString () k9)))) |
| 135 (LetPrim (v17 (Constant (Int 2))) | 135 (LetPrim (v17 (Constant (Int 2))) |
| 136 (LetCont | 136 (LetCont |
| 137 ((k12 (v18) | 137 ((k12 (v18) |
| 138 (Branch (IsTrue v18) k8 k6))) | 138 (Branch (IsTrue v18) k8 k6))) |
| 139 (InvokeMethod v10 < (v17) k12)))))) | 139 (InvokeMethod v10 < (v17) k12)))))) |
| 140 (InvokeContinuation k5 (v2 v3 v7)))))) | 140 (InvokeContinuation k5 (v2 v3 v7)))))) |
| 141 (LetPrim (v19 (Constant (Int 2))) | 141 (LetPrim (v19 (Constant (Int 2))) |
| (...skipping 22 matching lines...) Expand all Loading... |
| 164 (InvokeMethod v0 toString () k2))) | 164 (InvokeMethod v0 toString () k2))) |
| 165 (k4 () | 165 (k4 () |
| 166 (LetPrim (v6 (Constant (Int 0))) | 166 (LetPrim (v6 (Constant (Int 0))) |
| 167 (LetCont | 167 (LetCont |
| 168 ((rec k5 (v7) | 168 ((rec k5 (v7) |
| 169 (LetCont | 169 (LetCont |
| 170 ((k6 () | 170 ((k6 () |
| 171 (LetPrim (v8 (Constant (Int 1))) | 171 (LetPrim (v8 (Constant (Int 1))) |
| 172 (LetCont | 172 (LetCont |
| 173 ((k7 (v9) | 173 ((k7 (v9) |
| 174 (InvokeContinuation* k0 (v9)))) | 174 (InvokeContinuation rec k0 (v9)))) |
| 175 (InvokeMethod v2 + (v8) k7)))) | 175 (InvokeMethod v2 + (v8) k7)))) |
| 176 (k8 () | 176 (k8 () |
| 177 (LetCont | 177 (LetCont |
| 178 ((k9 (v10) | 178 ((k9 (v10) |
| 179 (LetCont | 179 (LetCont |
| 180 ((k10 (v11) | 180 ((k10 (v11) |
| 181 (LetPrim (v12 (Constant (Int 1
))) | 181 (LetPrim (v12 (Constant (Int 1
))) |
| 182 (LetCont | 182 (LetCont |
| 183 ((k11 (v13) | 183 ((k11 (v13) |
| 184 (InvokeContinuation*
k5 (v13)))) | 184 (InvokeContinuation r
ec k5 (v13)))) |
| 185 (InvokeMethod v7 + (v12) k
11))))) | 185 (InvokeMethod v7 + (v12) k
11))))) |
| 186 (InvokeStatic print (v10) k10)))) | 186 (InvokeStatic print (v10) k10)))) |
| 187 (InvokeMethod v2 toString () k9)))) | 187 (InvokeMethod v2 toString () k9)))) |
| 188 (LetPrim (v14 (Constant (Int 2))) | 188 (LetPrim (v14 (Constant (Int 2))) |
| 189 (LetCont | 189 (LetCont |
| 190 ((k12 (v15) | 190 ((k12 (v15) |
| 191 (Branch (IsTrue v15) k8 k6))) | 191 (Branch (IsTrue v15) k8 k6))) |
| 192 (InvokeMethod v7 < (v14) k12)))))) | 192 (InvokeMethod v7 < (v14) k12)))))) |
| 193 (InvokeContinuation k5 (v6)))))) | 193 (InvokeContinuation k5 (v6)))))) |
| 194 (LetPrim (v16 (Constant (Int 2))) | 194 (LetPrim (v16 (Constant (Int 2))) |
| (...skipping 24 matching lines...) Expand all Loading... |
| 219 (LetPrim (v2 (Constant (Null))) | 219 (LetPrim (v2 (Constant (Null))) |
| 220 (InvokeContinuation return (v2)))) | 220 (InvokeContinuation return (v2)))) |
| 221 (k2 () | 221 (k2 () |
| 222 (LetCont | 222 (LetCont |
| 223 ((k3 (v3) | 223 ((k3 (v3) |
| 224 (LetCont | 224 (LetCont |
| 225 ((k4 (v4) | 225 ((k4 (v4) |
| 226 (LetPrim (v5 (Constant (Int 1))) | 226 (LetPrim (v5 (Constant (Int 1))) |
| 227 (LetCont | 227 (LetCont |
| 228 ((k5 (v6) | 228 ((k5 (v6) |
| 229 (InvokeContinuation* k0 (v6)))) | 229 (InvokeContinuation rec k0 (v6)))) |
| 230 (InvokeMethod v1 + (v5) k5))))) | 230 (InvokeMethod v1 + (v5) k5))))) |
| 231 (InvokeStatic print (v3) k4)))) | 231 (InvokeStatic print (v3) k4)))) |
| 232 (InvokeMethod v1 toString () k3)))) | 232 (InvokeMethod v1 toString () k3)))) |
| 233 (LetPrim (v7 (Constant (Int 2))) | 233 (LetPrim (v7 (Constant (Int 2))) |
| 234 (LetCont | 234 (LetCont |
| 235 ((k6 (v8) | 235 ((k6 (v8) |
| 236 (Branch (IsTrue v8) k2 k1))) | 236 (Branch (IsTrue v8) k2 k1))) |
| 237 (InvokeMethod v1 < (v7) k6)))))) | 237 (InvokeMethod v1 < (v7) k6)))))) |
| 238 (InvokeContinuation k0 (v0))))) | 238 (InvokeContinuation k0 (v0))))) |
| 239 """; | 239 """; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 Expect.equals(expected, actual, "Actual:\n$actual"); | 300 Expect.equals(expected, actual, "Actual:\n$actual"); |
| 301 } | 301 } |
| 302 | 302 |
| 303 void main() { | 303 void main() { |
| 304 testRedundantPhi(READ_IN_LOOP_IN, READ_IN_LOOP_OUT); | 304 testRedundantPhi(READ_IN_LOOP_IN, READ_IN_LOOP_OUT); |
| 305 testRedundantPhi(INNER_LOOP_IN, INNER_LOOP_OUT); | 305 testRedundantPhi(INNER_LOOP_IN, INNER_LOOP_OUT); |
| 306 testRedundantPhi(BASIC_LOOP_IN, BASIC_LOOP_OUT); | 306 testRedundantPhi(BASIC_LOOP_IN, BASIC_LOOP_OUT); |
| 307 testRedundantPhi(SCOPING_IN, SCOPING_OUT); | 307 testRedundantPhi(SCOPING_IN, SCOPING_OUT); |
| 308 testRedundantPhi(NEVER_INVOKED_IN, NEVER_INVOKED_OUT); | 308 testRedundantPhi(NEVER_INVOKED_IN, NEVER_INVOKED_OUT); |
| 309 } | 309 } |
| OLD | NEW |