OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_COMPILER_MACHINE_OPERATOR_H_ | 5 #ifndef V8_COMPILER_MACHINE_OPERATOR_H_ |
6 #define V8_COMPILER_MACHINE_OPERATOR_H_ | 6 #define V8_COMPILER_MACHINE_OPERATOR_H_ |
7 | 7 |
8 #include "src/base/flags.h" | 8 #include "src/base/flags.h" |
9 #include "src/machine-type.h" | 9 #include "src/machine-type.h" |
10 | 10 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 | 61 |
62 // A Load needs a MachineType. | 62 // A Load needs a MachineType. |
63 typedef MachineType LoadRepresentation; | 63 typedef MachineType LoadRepresentation; |
64 | 64 |
65 LoadRepresentation LoadRepresentationOf(Operator const*); | 65 LoadRepresentation LoadRepresentationOf(Operator const*); |
66 | 66 |
67 // A Store needs a MachineType and a WriteBarrierKind in order to emit the | 67 // A Store needs a MachineType and a WriteBarrierKind in order to emit the |
68 // correct write barrier. | 68 // correct write barrier. |
69 class StoreRepresentation final { | 69 class StoreRepresentation final { |
70 public: | 70 public: |
71 StoreRepresentation(MachineType machine_type, | 71 StoreRepresentation(MachineRepresentation representation, |
72 WriteBarrierKind write_barrier_kind) | 72 WriteBarrierKind write_barrier_kind) |
73 : machine_type_(machine_type), write_barrier_kind_(write_barrier_kind) {} | 73 : representation_(representation), |
| 74 write_barrier_kind_(write_barrier_kind) {} |
74 | 75 |
75 MachineType machine_type() const { return machine_type_; } | 76 MachineRepresentation representation() const { return representation_; } |
76 WriteBarrierKind write_barrier_kind() const { return write_barrier_kind_; } | 77 WriteBarrierKind write_barrier_kind() const { return write_barrier_kind_; } |
77 | 78 |
78 private: | 79 private: |
79 MachineType machine_type_; | 80 MachineRepresentation representation_; |
80 WriteBarrierKind write_barrier_kind_; | 81 WriteBarrierKind write_barrier_kind_; |
81 }; | 82 }; |
82 | 83 |
83 bool operator==(StoreRepresentation, StoreRepresentation); | 84 bool operator==(StoreRepresentation, StoreRepresentation); |
84 bool operator!=(StoreRepresentation, StoreRepresentation); | 85 bool operator!=(StoreRepresentation, StoreRepresentation); |
85 | 86 |
86 size_t hash_value(StoreRepresentation); | 87 size_t hash_value(StoreRepresentation); |
87 | 88 |
88 std::ostream& operator<<(std::ostream&, StoreRepresentation); | 89 std::ostream& operator<<(std::ostream&, StoreRepresentation); |
89 | 90 |
90 StoreRepresentation const& StoreRepresentationOf(Operator const*); | 91 StoreRepresentation const& StoreRepresentationOf(Operator const*); |
91 | 92 |
92 | 93 |
93 // A CheckedLoad needs a MachineType. | 94 // A CheckedLoad needs a MachineType. |
94 typedef MachineType CheckedLoadRepresentation; | 95 typedef MachineType CheckedLoadRepresentation; |
95 | 96 |
96 CheckedLoadRepresentation CheckedLoadRepresentationOf(Operator const*); | 97 CheckedLoadRepresentation CheckedLoadRepresentationOf(Operator const*); |
97 | 98 |
98 | 99 |
99 // A CheckedStore needs a MachineType. | 100 // A CheckedStore needs a MachineType. |
100 typedef MachineType CheckedStoreRepresentation; | 101 typedef MachineRepresentation CheckedStoreRepresentation; |
101 | 102 |
102 CheckedStoreRepresentation CheckedStoreRepresentationOf(Operator const*); | 103 CheckedStoreRepresentation CheckedStoreRepresentationOf(Operator const*); |
103 | 104 |
104 | 105 |
105 // Interface for building machine-level operators. These operators are | 106 // Interface for building machine-level operators. These operators are |
106 // machine-level but machine-independent and thus define a language suitable | 107 // machine-level but machine-independent and thus define a language suitable |
107 // for generating code to run on architectures such as ia32, x64, arm, etc. | 108 // for generating code to run on architectures such as ia32, x64, arm, etc. |
108 class MachineOperatorBuilder final : public ZoneObject { | 109 class MachineOperatorBuilder final : public ZoneObject { |
109 public: | 110 public: |
110 // Flags that specify which operations are available. This is useful | 111 // Flags that specify which operations are available. This is useful |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 }; | 353 }; |
353 | 354 |
354 | 355 |
355 DEFINE_OPERATORS_FOR_FLAGS(MachineOperatorBuilder::Flags) | 356 DEFINE_OPERATORS_FOR_FLAGS(MachineOperatorBuilder::Flags) |
356 | 357 |
357 } // namespace compiler | 358 } // namespace compiler |
358 } // namespace internal | 359 } // namespace internal |
359 } // namespace v8 | 360 } // namespace v8 |
360 | 361 |
361 #endif // V8_COMPILER_MACHINE_OPERATOR_H_ | 362 #endif // V8_COMPILER_MACHINE_OPERATOR_H_ |
OLD | NEW |