diff options
Diffstat (limited to 'deps/v8/src/x64/lithium-x64.h')
-rw-r--r-- | deps/v8/src/x64/lithium-x64.h | 60 |
1 files changed, 43 insertions, 17 deletions
diff --git a/deps/v8/src/x64/lithium-x64.h b/deps/v8/src/x64/lithium-x64.h index 50e0595025..2ba248642c 100644 --- a/deps/v8/src/x64/lithium-x64.h +++ b/deps/v8/src/x64/lithium-x64.h @@ -102,6 +102,7 @@ class LCodeGen; V(LoadFieldByIndex) \ V(LoadFunctionPrototype) \ V(LoadGlobalGeneric) \ + V(LoadGlobalViaContext) \ V(LoadKeyed) \ V(LoadKeyedGeneric) \ V(LoadNamedField) \ @@ -141,6 +142,7 @@ class LCodeGen; V(StoreCodeEntry) \ V(StoreContextSlot) \ V(StoreFrameContext) \ + V(StoreGlobalViaContext) \ V(StoreKeyed) \ V(StoreKeyedGeneric) \ V(StoreNamedField) \ @@ -1615,12 +1617,8 @@ inline static bool ExternalArrayOpRequiresTemp( // an index cannot fold the scale operation into a load and need an extra // temp register to do the work. return SmiValuesAre31Bits() && key_representation.IsSmi() && - (elements_kind == EXTERNAL_INT8_ELEMENTS || - elements_kind == EXTERNAL_UINT8_ELEMENTS || - elements_kind == EXTERNAL_UINT8_CLAMPED_ELEMENTS || - elements_kind == UINT8_ELEMENTS || - elements_kind == INT8_ELEMENTS || - elements_kind == UINT8_CLAMPED_ELEMENTS); + (elements_kind == UINT8_ELEMENTS || elements_kind == INT8_ELEMENTS || + elements_kind == UINT8_CLAMPED_ELEMENTS); } @@ -1634,15 +1632,9 @@ class LLoadKeyed final : public LTemplateInstruction<1, 2, 0> { DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed") DECLARE_HYDROGEN_ACCESSOR(LoadKeyed) - bool is_external() const { - return hydrogen()->is_external(); - } bool is_fixed_typed_array() const { return hydrogen()->is_fixed_typed_array(); } - bool is_typed_elements() const { - return is_external() || is_fixed_typed_array(); - } LOperand* elements() { return inputs_[0]; } LOperand* key() { return inputs_[1]; } void PrintDataTo(StringStream* stream) override; @@ -1690,7 +1682,23 @@ class LLoadGlobalGeneric final : public LTemplateInstruction<1, 2, 1> { LOperand* temp_vector() { return temps_[0]; } Handle<Object> name() const { return hydrogen()->name(); } - bool for_typeof() const { return hydrogen()->for_typeof(); } + TypeofMode typeof_mode() const { return hydrogen()->typeof_mode(); } +}; + + +class LLoadGlobalViaContext final : public LTemplateInstruction<1, 1, 1> { + public: + explicit LLoadGlobalViaContext(LOperand* context) { inputs_[0] = context; } + + DECLARE_CONCRETE_INSTRUCTION(LoadGlobalViaContext, "load-global-via-context") + DECLARE_HYDROGEN_ACCESSOR(LoadGlobalViaContext) + + void PrintDataTo(StringStream* stream) override; + + LOperand* context() { return inputs_[0]; } + + int depth() const { return hydrogen()->depth(); } + int slot_index() const { return hydrogen()->slot_index(); } }; @@ -2185,6 +2193,28 @@ class LStoreNamedGeneric final : public LTemplateInstruction<0, 3, 2> { }; +class LStoreGlobalViaContext final : public LTemplateInstruction<0, 2, 0> { + public: + LStoreGlobalViaContext(LOperand* context, LOperand* value) { + inputs_[0] = context; + inputs_[1] = value; + } + + LOperand* context() { return inputs_[0]; } + LOperand* value() { return inputs_[1]; } + + DECLARE_CONCRETE_INSTRUCTION(StoreGlobalViaContext, + "store-global-via-context") + DECLARE_HYDROGEN_ACCESSOR(StoreGlobalViaContext) + + void PrintDataTo(StringStream* stream) override; + + int depth() { return hydrogen()->depth(); } + int slot_index() { return hydrogen()->slot_index(); } + LanguageMode language_mode() { return hydrogen()->language_mode(); } +}; + + class LStoreKeyed final : public LTemplateInstruction<0, 3, 0> { public: LStoreKeyed(LOperand* object, LOperand* key, LOperand* value) { @@ -2193,13 +2223,9 @@ class LStoreKeyed final : public LTemplateInstruction<0, 3, 0> { inputs_[2] = value; } - bool is_external() const { return hydrogen()->is_external(); } bool is_fixed_typed_array() const { return hydrogen()->is_fixed_typed_array(); } - bool is_typed_elements() const { - return is_external() || is_fixed_typed_array(); - } LOperand* elements() { return inputs_[0]; } LOperand* key() { return inputs_[1]; } LOperand* value() { return inputs_[2]; } |