| Index: src/ic/accessor-assembler.h
|
| diff --git a/src/ic/accessor-assembler.h b/src/ic/accessor-assembler.h
|
| index e7505f7d3c6a87050f351e1299c83d1f2e1b22eb..e8827050283de0d517c9a804f315b9f28aa82f70 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,
|
|
|