|  | // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  | // VMOptions=--optimization-counter-threshold=10 --no-background-compilation | 
|  |  | 
|  | import "package:expect/expect.dart"; | 
|  |  | 
|  | // Test that constant propagation correctly updates phis when predecessor's | 
|  | // reachability changes. | 
|  |  | 
|  | final keys = const ["keyA"]; | 
|  | final values = const ["a"]; | 
|  |  | 
|  | main() { | 
|  | for (var i = 0; i < 20; i++) test(keys[0]); | 
|  | } | 
|  |  | 
|  | test(key) { | 
|  | var ref = key2value(key); | 
|  | Expect.equals("a", (ref == null) ? "-" : ref); | 
|  | } | 
|  |  | 
|  | key2value(key) { | 
|  | var index = indexOf(keys, key); | 
|  | return (index == -1) ? null : values[index]; | 
|  | } | 
|  |  | 
|  | indexOf(keys, key) { | 
|  | for (var i = keys.length - 1; i >= 0; i--) { | 
|  | var equals = keys[i] == key; | 
|  | if (equals) return i; | 
|  | } | 
|  | return -1; | 
|  | } |