OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 "package:expect/expect.dart"; | 5 import "package:expect/expect.dart"; |
6 import "package:compiler/src/ssa/nodes.dart"; | 6 import "package:compiler/src/ssa/nodes.dart"; |
7 import "package:compiler/src/ssa/value_range_analyzer.dart"; | 7 import "package:compiler/src/ssa/value_range_analyzer.dart"; |
8 import "package:compiler/src/js_backend/constant_system_javascript.dart"; | 8 import "package:compiler/src/js_backend/constant_system_javascript.dart"; |
9 | 9 |
10 ValueRangeInfo info = new ValueRangeInfo(const JavaScriptConstantSystem()); | 10 ValueRangeInfo info = new ValueRangeInfo(const JavaScriptConstantSystem()); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 Range _0_instruction = createInstructionRange(0); | 48 Range _0_instruction = createInstructionRange(0); |
49 | 49 |
50 checkAndRange(Range one, Range two, lower, upper) { | 50 checkAndRange(Range one, Range two, lower, upper) { |
51 if (lower is num) lower = info.newIntValue(lower); | 51 if (lower is num) lower = info.newIntValue(lower); |
52 if (upper is num) upper = info.newIntValue(upper); | 52 if (upper is num) upper = info.newIntValue(upper); |
53 Range range = info.newNormalizedRange(lower, upper); | 53 Range range = info.newNormalizedRange(lower, upper); |
54 Expect.equals(range, one & two); | 54 Expect.equals(range, one & two); |
55 } | 55 } |
56 | 56 |
57 checkSubRange(Range one, Range two, [lower, upper]) { | 57 checkSubRange(Range one, Range two, [lower, upper]) { |
58 | |
59 buildBound(one, two) { | 58 buildBound(one, two) { |
60 // Create a bound just like our current implementation in dart2js does. | 59 // Create a bound just like our current implementation in dart2js does. |
61 if (two is IntValue) { | 60 if (two is IntValue) { |
62 if (two.isNegative) { | 61 if (two.isNegative) { |
63 return info.newAddValue(one, -two); | 62 return info.newAddValue(one, -two); |
64 } else if (two.isZero) { | 63 } else if (two.isZero) { |
65 return one; | 64 return one; |
66 } | 65 } |
67 } | 66 } |
68 if (one is IntValue) { | 67 if (one is IntValue) { |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
376 checkSubRange(_0_instruction, _0_length, null, _0_instruction.upper); | 375 checkSubRange(_0_instruction, _0_length, null, _0_instruction.upper); |
377 checkSubRange(_0_instruction, _0_instruction, null, _0_instruction.upper); | 376 checkSubRange(_0_instruction, _0_instruction, null, _0_instruction.upper); |
378 } | 377 } |
379 | 378 |
380 main() { | 379 main() { |
381 HInstruction.idCounter = 0; | 380 HInstruction.idCounter = 0; |
382 testAnd(); | 381 testAnd(); |
383 testSub(); | 382 testSub(); |
384 testNegate(); | 383 testNegate(); |
385 } | 384 } |
OLD | NEW |