Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(640)

Unified Diff: src/ic/accessor-assembler.cc

Issue 2732613002: [ic] Mark labels as deferred (Closed)
Patch Set: Don't defer HandlePolymorphicCase loop labels Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698