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

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

Issue 2733563002: [ic] Inline LoadIC into LdaNamedProperty bytecode handler (Closed)
Patch Set: Added polymorphic case and addressed comments 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
Index: src/ic/accessor-assembler.h
diff --git a/src/ic/accessor-assembler.h b/src/ic/accessor-assembler.h
index e7505f7d3c6a87050f351e1299c83d1f2e1b22eb..7c9870ce96038d196afb68224c9841b630d60f33 100644
--- a/src/ic/accessor-assembler.h
+++ b/src/ic/accessor-assembler.h
@@ -24,6 +24,7 @@ class AccessorAssembler : public CodeStubAssembler {
: CodeStubAssembler(state) {}
void GenerateLoadIC();
+ void GenerateLoadIC_Noninlined();
void GenerateLoadIC_Uninitialized();
void GenerateLoadField();
void GenerateLoadICTrampoline();
@@ -76,6 +77,10 @@ class AccessorAssembler : public CodeStubAssembler {
ExitPoint* exit_point, Label* miss);
void LoadGlobalIC_MissCase(const LoadICParameters* p, ExitPoint* exit_point);
+ // Specialized LoadIC for inlined bytecode handler, hand-tuned to omit frame
+ // construction on common paths.
+ void LoadIC_BytecodeHandler(const LoadICParameters* p, ExitPoint* exit_point);
+
protected:
struct StoreICParameters : public LoadICParameters {
StoreICParameters(Node* context, Node* receiver, Node* name, Node* value,
@@ -94,7 +99,13 @@ class AccessorAssembler : public CodeStubAssembler {
private:
// Stub generation entry points.
+ // LoadIC contains the full LoadIC logic, while LoadIC_Noninlined contains
+ // logic not inlined into Ignition bytecode handlers.
void LoadIC(const LoadICParameters* p);
+ void LoadIC_Noninlined(const LoadICParameters* p, Node* receiver_map,
+ Node* feedback, Variable* var_handler,
+ Label* if_handler, Label* miss, ExitPoint* exit_point);
+
void LoadIC_Uninitialized(const LoadICParameters* p);
void LoadICProtoArray(const LoadICParameters* p, Node* handler,
bool throw_reference_error_if_nonexistent);
@@ -123,7 +134,7 @@ class AccessorAssembler : public CodeStubAssembler {
void HandleLoadICHandlerCase(
const LoadICParameters* p, Node* handler, Label* miss,
- ElementSupport support_elements = kOnlyProperties);
+ ExitPoint* exit_point, ElementSupport support_elements = kOnlyProperties);
void HandleLoadICSmiHandlerCase(const LoadICParameters* p, Node* holder,
Node* smi_handler, Label* miss,
@@ -186,6 +197,8 @@ class AccessorAssembler : public CodeStubAssembler {
Representation representation, Node* transition,
Node* value, Label* bailout);
+ Node* LoadFeedbackSlot(Node* vector, Node* slot, int additional_offset);
+
// Extends properties backing store by JSObject::kFieldsAdded elements.
void ExtendPropertiesBackingStore(Node* object);

Powered by Google App Engine
This is Rietveld 408576698