OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 #ifndef VM_LOCATIONS_H_ | 5 #ifndef VM_LOCATIONS_H_ |
6 #define VM_LOCATIONS_H_ | 6 #define VM_LOCATIONS_H_ |
7 | 7 |
8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
9 #include "vm/assembler.h" | 9 #include "vm/assembler.h" |
10 #include "vm/bitfield.h" | 10 #include "vm/bitfield.h" |
11 | 11 |
12 namespace dart { | 12 namespace dart { |
13 | 13 |
| 14 |
14 class BufferFormatter; | 15 class BufferFormatter; |
| 16 class ConstantInstr; |
| 17 class Definition; |
| 18 class PairLocation; |
15 class Value; | 19 class Value; |
16 class PairLocation; | |
17 class ConstantInstr; | |
18 | 20 |
19 | 21 |
20 enum Representation { | 22 enum Representation { |
21 kNoRepresentation, | 23 kNoRepresentation, |
22 kTagged, | 24 kTagged, |
23 kUntagged, | 25 kUntagged, |
24 kUnboxedDouble, | 26 kUnboxedDouble, |
25 kUnboxedInt32, | 27 kUnboxedInt32, |
26 kUnboxedUint32, | 28 kUnboxedUint32, |
27 kUnboxedMint, | 29 kUnboxedMint, |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 } | 365 } |
364 | 366 |
365 // If current location is constant might return something that | 367 // If current location is constant might return something that |
366 // is not equal to any Kind. | 368 // is not equal to any Kind. |
367 Kind kind() const { | 369 Kind kind() const { |
368 return KindField::decode(value_); | 370 return KindField::decode(value_); |
369 } | 371 } |
370 | 372 |
371 Location Copy() const; | 373 Location Copy() const; |
372 | 374 |
| 375 Location RemapForSlowPath(Definition* def, |
| 376 intptr_t* cpu_reg_slots, |
| 377 intptr_t* fpu_reg_slots) const; |
| 378 |
373 private: | 379 private: |
374 explicit Location(uword value) : value_(value) { } | 380 explicit Location(uword value) : value_(value) { } |
375 | 381 |
376 Location(Kind kind, uword payload) | 382 Location(Kind kind, uword payload) |
377 : value_(KindField::encode(kind) | PayloadField::encode(payload)) { } | 383 : value_(KindField::encode(kind) | PayloadField::encode(payload)) { } |
378 | 384 |
379 uword payload() const { | 385 uword payload() const { |
380 return PayloadField::decode(value_); | 386 return PayloadField::decode(value_); |
381 } | 387 } |
382 | 388 |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
669 | 675 |
670 #if defined(DEBUG) | 676 #if defined(DEBUG) |
671 intptr_t writable_inputs_; | 677 intptr_t writable_inputs_; |
672 #endif | 678 #endif |
673 }; | 679 }; |
674 | 680 |
675 | 681 |
676 } // namespace dart | 682 } // namespace dart |
677 | 683 |
678 #endif // VM_LOCATIONS_H_ | 684 #endif // VM_LOCATIONS_H_ |
OLD | NEW |