| Index: src/compiler/machine-operator.h
|
| diff --git a/src/compiler/machine-operator.h b/src/compiler/machine-operator.h
|
| index 2328e2b332bb41dae0bad8c095b1ce381208edbc..93ccedc2c80401c0d106d044a67b236ff6506a96 100644
|
| --- a/src/compiler/machine-operator.h
|
| +++ b/src/compiler/machine-operator.h
|
| @@ -5,6 +5,7 @@
|
| #ifndef V8_COMPILER_MACHINE_OPERATOR_H_
|
| #define V8_COMPILER_MACHINE_OPERATOR_H_
|
|
|
| +#include "src/compiler/machine-type.h"
|
| #include "src/compiler/opcodes.h"
|
| #include "src/compiler/operator.h"
|
| #include "src/zone.h"
|
| @@ -13,36 +14,14 @@ namespace v8 {
|
| namespace internal {
|
| namespace compiler {
|
|
|
| -// An enumeration of the storage representations at the machine level.
|
| -// - Words are uninterpreted bits of a given fixed size that can be used
|
| -// to store integers and pointers. They are normally allocated to general
|
| -// purpose registers by the backend and are not tracked for GC.
|
| -// - Floats are bits of a given fixed size that are used to store floating
|
| -// point numbers. They are normally allocated to the floating point
|
| -// registers of the machine and are not tracked for the GC.
|
| -// - Tagged values are the size of a reference into the heap and can store
|
| -// small words or references into the heap using a language and potentially
|
| -// machine-dependent tagging scheme. These values are tracked by the code
|
| -// generator for precise GC.
|
| -enum MachineRepresentation {
|
| - kMachineWord8,
|
| - kMachineWord16,
|
| - kMachineWord32,
|
| - kMachineWord64,
|
| - kMachineFloat64,
|
| - kMachineTagged,
|
| - kMachineLast
|
| -};
|
| -
|
| -
|
| // TODO(turbofan): other write barriers are possible based on type
|
| enum WriteBarrierKind { kNoWriteBarrier, kFullWriteBarrier };
|
|
|
|
|
| -// A Store needs a MachineRepresentation and a WriteBarrierKind
|
| +// A Store needs a MachineType and a WriteBarrierKind
|
| // in order to emit the correct write barrier.
|
| struct StoreRepresentation {
|
| - MachineRepresentation rep;
|
| + MachineType rep;
|
| WriteBarrierKind write_barrier_kind;
|
| };
|
|
|
| @@ -52,8 +31,7 @@ struct StoreRepresentation {
|
| // for generating code to run on architectures such as ia32, x64, arm, etc.
|
| class MachineOperatorBuilder {
|
| public:
|
| - explicit MachineOperatorBuilder(Zone* zone,
|
| - MachineRepresentation word = pointer_rep())
|
| + explicit MachineOperatorBuilder(Zone* zone, MachineType word = pointer_rep())
|
| : zone_(zone), word_(word) {
|
| CHECK(word == kMachineWord32 || word == kMachineWord64);
|
| }
|
| @@ -83,11 +61,11 @@ class MachineOperatorBuilder {
|
|
|
| #define WORD_SIZE(x) return is64() ? Word64##x() : Word32##x()
|
|
|
| - Operator* Load(MachineRepresentation rep) { // load [base + index]
|
| - OP1(Load, MachineRepresentation, rep, Operator::kNoWrite, 2, 1);
|
| + Operator* Load(MachineType rep) { // load [base + index]
|
| + OP1(Load, MachineType, rep, Operator::kNoWrite, 2, 1);
|
| }
|
| // store [base + index], value
|
| - Operator* Store(MachineRepresentation rep, WriteBarrierKind kind) {
|
| + Operator* Store(MachineType rep, WriteBarrierKind kind) {
|
| StoreRepresentation store_rep = {rep, kind};
|
| OP1(Store, StoreRepresentation, store_rep, Operator::kNoRead, 3, 0);
|
| }
|
| @@ -167,9 +145,9 @@ class MachineOperatorBuilder {
|
|
|
| inline bool is32() const { return word_ == kMachineWord32; }
|
| inline bool is64() const { return word_ == kMachineWord64; }
|
| - inline MachineRepresentation word() const { return word_; }
|
| + inline MachineType word() const { return word_; }
|
|
|
| - static inline MachineRepresentation pointer_rep() {
|
| + static inline MachineType pointer_rep() {
|
| return kPointerSize == 8 ? kMachineWord64 : kMachineWord32;
|
| }
|
|
|
| @@ -181,7 +159,7 @@ class MachineOperatorBuilder {
|
|
|
| private:
|
| Zone* zone_;
|
| - MachineRepresentation word_;
|
| + MachineType word_;
|
| };
|
| }
|
| }
|
|
|