| Index: src/ic/accessor-assembler.cc
|
| diff --git a/src/ic/accessor-assembler.cc b/src/ic/accessor-assembler.cc
|
| index 124b2612fd1f6d7a375c343f355fcffa87cd7fdb..eccb696918c0ddac1c776344b714bc4ef10e7253 100644
|
| --- a/src/ic/accessor-assembler.cc
|
| +++ b/src/ic/accessor-assembler.cc
|
| @@ -145,14 +145,13 @@ void AccessorAssembler::HandleLoadICHandlerCase(
|
| Comment("have_handler");
|
| ExitPoint direct_exit(this);
|
|
|
| - Variable var_holder(this, MachineRepresentation::kTagged);
|
| - var_holder.Bind(p->receiver);
|
| - Variable var_smi_handler(this, MachineRepresentation::kTagged);
|
| - var_smi_handler.Bind(handler);
|
| + Variable var_holder(this, MachineRepresentation::kTagged, p->receiver);
|
| + Variable var_smi_handler(this, MachineRepresentation::kTagged, handler);
|
|
|
| Variable* vars[] = {&var_holder, &var_smi_handler};
|
| Label if_smi_handler(this, 2, vars);
|
| - Label try_proto_handler(this), call_handler(this);
|
| + Label try_proto_handler(this, Label::kDeferred),
|
| + call_handler(this, Label::kDeferred);
|
|
|
| Branch(TaggedIsSmi(handler), &if_smi_handler, &try_proto_handler);
|
|
|
| @@ -274,7 +273,8 @@ void AccessorAssembler::HandleLoadICSmiHandlerCase(
|
| Comment("property_load");
|
| }
|
|
|
| - Label constant(this), field(this), normal(this);
|
| + Label constant(this, Label::kDeferred), field(this),
|
| + normal(this, Label::kDeferred);
|
| GotoIf(WordEqual(handler_kind, IntPtrConstant(LoadHandler::kForFields)),
|
| &field);
|
|
|
| @@ -301,7 +301,7 @@ void AccessorAssembler::HandleLoadICSmiHandlerCase(
|
| LoadAndUntagFixedArrayBaseLength(descriptors)));
|
| Node* value = LoadFixedArrayElement(descriptors, value_index);
|
|
|
| - Label if_accessor_info(this);
|
| + Label if_accessor_info(this, Label::kDeferred);
|
| GotoIf(IsSetWord<LoadHandler::IsAccessorInfoBits>(handler_word),
|
| &if_accessor_info);
|
| exit_point->Return(value);
|
| @@ -1539,11 +1539,9 @@ void AccessorAssembler::TryProbeStubCache(StubCache* stub_cache, Node* receiver,
|
|
|
| void AccessorAssembler::LoadIC(const LoadICParameters* p) {
|
| Variable var_handler(this, MachineRepresentation::kTagged);
|
| - // TODO(ishell): defer blocks when it works.
|
| - Label if_handler(this, &var_handler), try_polymorphic(this),
|
| - try_megamorphic(this /*, Label::kDeferred*/),
|
| - try_uninitialized(this /*, Label::kDeferred*/),
|
| - miss(this /*, Label::kDeferred*/);
|
| + Label if_handler(this, &var_handler), try_polymorphic(this, Label::kDeferred),
|
| + try_megamorphic(this, Label::kDeferred),
|
| + try_uninitialized(this, Label::kDeferred), miss(this, Label::kDeferred);
|
|
|
| Node* receiver_map = LoadReceiverMap(p->receiver);
|
| GotoIf(IsSetWord32<Map::Deprecated>(LoadMapBitField3(receiver_map)), &miss);
|
| @@ -1745,11 +1743,10 @@ void AccessorAssembler::LoadGlobalIC(const LoadICParameters* p,
|
|
|
| void AccessorAssembler::KeyedLoadIC(const LoadICParameters* p) {
|
| Variable var_handler(this, MachineRepresentation::kTagged);
|
| - // TODO(ishell): defer blocks when it works.
|
| - Label if_handler(this, &var_handler), try_polymorphic(this),
|
| - try_megamorphic(this /*, Label::kDeferred*/),
|
| - try_polymorphic_name(this /*, Label::kDeferred*/),
|
| - miss(this /*, Label::kDeferred*/);
|
| + Label if_handler(this, &var_handler), try_polymorphic(this, Label::kDeferred),
|
| + try_megamorphic(this, Label::kDeferred),
|
| + try_polymorphic_name(this, Label::kDeferred),
|
| + miss(this, Label::kDeferred);
|
|
|
| Node* receiver_map = LoadReceiverMap(p->receiver);
|
| GotoIf(IsSetWord32<Map::Deprecated>(LoadMapBitField3(receiver_map)), &miss);
|
| @@ -1841,10 +1838,8 @@ void AccessorAssembler::KeyedLoadICGeneric(const LoadICParameters* p) {
|
|
|
| void AccessorAssembler::StoreIC(const StoreICParameters* p) {
|
| Variable var_handler(this, MachineRepresentation::kTagged);
|
| - // TODO(ishell): defer blocks when it works.
|
| - Label if_handler(this, &var_handler), try_polymorphic(this),
|
| - try_megamorphic(this /*, Label::kDeferred*/),
|
| - miss(this /*, Label::kDeferred*/);
|
| + Label if_handler(this, &var_handler), try_polymorphic(this, Label::kDeferred),
|
| + try_megamorphic(this, Label::kDeferred), miss(this, Label::kDeferred);
|
|
|
| Node* receiver_map = LoadReceiverMap(p->receiver);
|
| GotoIf(IsSetWord32<Map::Deprecated>(LoadMapBitField3(receiver_map)), &miss);
|
| @@ -1888,15 +1883,14 @@ void AccessorAssembler::StoreIC(const StoreICParameters* p) {
|
|
|
| void AccessorAssembler::KeyedStoreIC(const StoreICParameters* p,
|
| LanguageMode language_mode) {
|
| - // TODO(ishell): defer blocks when it works.
|
| - Label miss(this /*, Label::kDeferred*/);
|
| + Label miss(this, Label::kDeferred);
|
| {
|
| Variable var_handler(this, MachineRepresentation::kTagged);
|
|
|
| - // TODO(ishell): defer blocks when it works.
|
| - Label if_handler(this, &var_handler), try_polymorphic(this),
|
| - try_megamorphic(this /*, Label::kDeferred*/),
|
| - try_polymorphic_name(this /*, Label::kDeferred*/);
|
| + Label if_handler(this, &var_handler),
|
| + try_polymorphic(this, Label::kDeferred),
|
| + try_megamorphic(this, Label::kDeferred),
|
| + try_polymorphic_name(this, Label::kDeferred);
|
|
|
| Node* receiver_map = LoadReceiverMap(p->receiver);
|
| GotoIf(IsSetWord32<Map::Deprecated>(LoadMapBitField3(receiver_map)), &miss);
|
|
|