| Index: src/code-stubs.h
|
| diff --git a/src/code-stubs.h b/src/code-stubs.h
|
| index 14e7f30cc690df2de6bcb439b9a9e4b5214fb20a..43c8a272397634f05c60f50939fa2a00a2020907 100644
|
| --- a/src/code-stubs.h
|
| +++ b/src/code-stubs.h
|
| @@ -91,7 +91,6 @@ class ObjectLiteral;
|
| V(LoadField) \
|
| V(LoadScriptContextField) \
|
| V(StoreFastElement) \
|
| - V(StoreGlobal) \
|
| V(StoreScriptContextField) \
|
| V(StoreTransition) \
|
| /* These should never be ported to TF */ \
|
| @@ -168,6 +167,7 @@ class ObjectLiteral;
|
| V(LoadICTF) \
|
| V(KeyedLoadICTF) \
|
| V(StoreField) \
|
| + V(StoreGlobal) \
|
| V(StoreInterceptor) \
|
| V(LoadApiGetter) \
|
| V(LoadIndexedInterceptor) \
|
| @@ -1774,20 +1774,22 @@ class StoreTransitionStub : public HandlerStub {
|
| DEFINE_HANDLER_CODE_STUB(StoreTransition, HandlerStub);
|
| };
|
|
|
| -
|
| -class StoreGlobalStub : public HandlerStub {
|
| +class StoreGlobalStub : public TurboFanCodeStub {
|
| public:
|
| StoreGlobalStub(Isolate* isolate, PropertyCellType type,
|
| Maybe<PropertyCellConstantType> constant_type,
|
| bool check_global)
|
| - : HandlerStub(isolate) {
|
| + : TurboFanCodeStub(isolate) {
|
| PropertyCellConstantType encoded_constant_type =
|
| constant_type.FromMaybe(PropertyCellConstantType::kSmi);
|
| - set_sub_minor_key(CellTypeBits::encode(type) |
|
| - ConstantTypeBits::encode(encoded_constant_type) |
|
| - CheckGlobalBits::encode(check_global));
|
| + minor_key_ = CellTypeBits::encode(type) |
|
| + ConstantTypeBits::encode(encoded_constant_type) |
|
| + CheckGlobalBits::encode(check_global);
|
| }
|
|
|
| + Code::Kind GetCodeKind() const override { return Code::HANDLER; }
|
| + ExtraICState GetExtraICState() const override { return Code::STORE_IC; }
|
| +
|
| static Handle<HeapObject> property_cell_placeholder(Isolate* isolate) {
|
| return isolate->factory()->uninitialized_value();
|
| }
|
| @@ -1808,37 +1810,25 @@ class StoreGlobalStub : public HandlerStub {
|
| return CodeStub::GetCodeCopy(pattern);
|
| }
|
|
|
| - Code::Kind kind() const override { return Code::STORE_IC; }
|
| -
|
| PropertyCellType cell_type() const {
|
| - return CellTypeBits::decode(sub_minor_key());
|
| + return CellTypeBits::decode(minor_key_);
|
| }
|
|
|
| PropertyCellConstantType constant_type() const {
|
| DCHECK(PropertyCellType::kConstantType == cell_type());
|
| - return ConstantTypeBits::decode(sub_minor_key());
|
| + return ConstantTypeBits::decode(minor_key_);
|
| }
|
|
|
| - bool check_global() const { return CheckGlobalBits::decode(sub_minor_key()); }
|
| -
|
| - Representation representation() {
|
| - return Representation::FromKind(
|
| - RepresentationBits::decode(sub_minor_key()));
|
| - }
|
| -
|
| - void set_representation(Representation r) {
|
| - set_sub_minor_key(RepresentationBits::update(sub_minor_key(), r.kind()));
|
| - }
|
| + bool check_global() const { return CheckGlobalBits::decode(minor_key_); }
|
|
|
| private:
|
| class CellTypeBits : public BitField<PropertyCellType, 0, 2> {};
|
| - class ConstantTypeBits : public BitField<PropertyCellConstantType, 2, 2> {};
|
| - class RepresentationBits : public BitField<Representation::Kind, 4, 8> {};
|
| - class CheckGlobalBits : public BitField<bool, 12, 1> {};
|
| + class ConstantTypeBits
|
| + : public BitField<PropertyCellConstantType, CellTypeBits::kNext, 2> {};
|
| + class CheckGlobalBits : public BitField<bool, ConstantTypeBits::kNext, 1> {};
|
|
|
| - // TODO(ishell): The stub uses only kValue parameter.
|
| DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreWithVector);
|
| - DEFINE_HANDLER_CODE_STUB(StoreGlobal, HandlerStub);
|
| + DEFINE_TURBOFAN_CODE_STUB(StoreGlobal, TurboFanCodeStub);
|
| };
|
|
|
| // TODO(ishell): remove, once StoreGlobalIC is implemented.
|
|
|