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

Unified Diff: src/ic/accessor-assembler-impl.h

Issue 2511603002: [ic] Support data handlers in LoadGlobalIC. (Closed)
Patch Set: Addressing comments and fix Created 4 years, 1 month 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
Index: src/ic/accessor-assembler-impl.h
diff --git a/src/ic/accessor-assembler-impl.h b/src/ic/accessor-assembler-impl.h
index 8e6ad2cf816fd7d48e886a77766a01d93b37c72c..01e9bf18203ad669aeff6a4977ff19f459e2c1b3 100644
--- a/src/ic/accessor-assembler-impl.h
+++ b/src/ic/accessor-assembler-impl.h
@@ -19,16 +19,13 @@ using compiler::Node;
#define ACCESSOR_ASSEMBLER_PUBLIC_INTERFACE(V) \
V(LoadIC) \
V(LoadICTrampoline) \
- V(LoadICProtoArray) \
- V(LoadGlobalIC) \
- V(LoadGlobalICTrampoline) \
V(KeyedLoadICTF) \
V(KeyedLoadICTrampolineTF) \
V(KeyedLoadICMegamorphic) \
V(StoreIC) \
V(StoreICTrampoline)
-// KeyedStoreIC and KeyedStoreICTrampoline need custom handling because of
-// their "language_mode" parameter.
+// The other IC entry points need custom handling because of additional
+// parameters like "typeof_mode" or "language_mode".
class AccessorAssemblerImpl : public CodeStubAssembler {
public:
@@ -40,6 +37,11 @@ class AccessorAssemblerImpl : public CodeStubAssembler {
ACCESSOR_ASSEMBLER_PUBLIC_INTERFACE(DECLARE_PUBLIC_METHOD)
#undef DECLARE_PUBLIC_METHOD
+ void GenerateLoadICProtoArray(bool throw_reference_error_if_nonexistent);
+
+ void GenerateLoadGlobalIC(TypeofMode typeof_mode);
+ void GenerateLoadGlobalICTrampoline(TypeofMode typeof_mode);
+
void GenerateKeyedStoreICTF(LanguageMode language_mode);
void GenerateKeyedStoreICTrampolineTF(LanguageMode language_mode);
@@ -88,8 +90,9 @@ class AccessorAssemblerImpl : public CodeStubAssembler {
// Stub generation entry points.
void LoadIC(const LoadICParameters* p);
- void LoadICProtoArray(const LoadICParameters* p, Node* handler);
- void LoadGlobalIC(const LoadICParameters* p);
+ void LoadICProtoArray(const LoadICParameters* p, Node* handler,
+ bool throw_reference_error_if_nonexistent);
+ void LoadGlobalIC(const LoadICParameters* p, TypeofMode typeof_mode);
void KeyedLoadIC(const LoadICParameters* p);
void KeyedLoadICGeneric(const LoadICParameters* p);
void StoreIC(const StoreICParameters* p);
@@ -120,13 +123,22 @@ class AccessorAssemblerImpl : public CodeStubAssembler {
Node* smi_handler, Label* miss,
ElementSupport support_elements);
- void HandleLoadICProtoHandler(const LoadICParameters* p, Node* handler,
- Variable* var_holder, Variable* var_smi_handler,
- Label* if_smi_handler, Label* miss);
+ void HandleLoadICProtoHandlerCase(const LoadICParameters* p, Node* handler,
+ Variable* var_holder,
+ Variable* var_smi_handler,
+ Label* if_smi_handler, Label* miss,
+ bool throw_reference_error_if_nonexistent);
Node* EmitLoadICProtoArrayCheck(const LoadICParameters* p, Node* handler,
Node* handler_length, Node* handler_flags,
- Label* miss);
+ Label* miss,
+ bool throw_reference_error_if_nonexistent);
+
+ // LoadGlobalIC implementation.
+
+ void HandleLoadGlobalICHandlerCase(const LoadICParameters* p, Node* handler,
+ Label* miss,
+ bool throw_reference_error_if_nonexistent);
// StoreIC implementation.

Powered by Google App Engine
This is Rietveld 408576698