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

Unified Diff: src/compiler/js-native-context-specialization.h

Issue 2936673005: [turbofan] Refactor property access building. (Closed)
Patch Set: Address reviewer comments Created 3 years, 6 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 | « BUILD.gn ('k') | src/compiler/js-native-context-specialization.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/js-native-context-specialization.h
diff --git a/src/compiler/js-native-context-specialization.h b/src/compiler/js-native-context-specialization.h
index 5819bce7f4ec8d67cfe11aac07a372e9c6df2a9a..fab9d872905d5aa31c71994788a788dcaa86e6eb 100644
--- a/src/compiler/js-native-context-specialization.h
+++ b/src/compiler/js-native-context-specialization.h
@@ -96,6 +96,8 @@ class JSNativeContextSpecialization final : public AdvancedReducer {
// A triple of nodes that represents a continuation.
class ValueEffectControl final {
public:
+ ValueEffectControl()
+ : value_(nullptr), effect_(nullptr), control_(nullptr) {}
ValueEffectControl(Node* value, Node* effect, Node* control)
: value_(value), effect_(effect), control_(control) {}
@@ -104,9 +106,9 @@ class JSNativeContextSpecialization final : public AdvancedReducer {
Node* control() const { return control_; }
private:
- Node* const value_;
- Node* const effect_;
- Node* const control_;
+ Node* value_;
+ Node* effect_;
+ Node* control_;
};
// Construct the appropriate subgraph for property access.
@@ -115,6 +117,34 @@ class JSNativeContextSpecialization final : public AdvancedReducer {
Node* effect, Node* control, Handle<Name> name,
ZoneVector<Node*>* if_exceptions, PropertyAccessInfo const& access_info,
AccessMode access_mode, LanguageMode language_mode);
+ ValueEffectControl BuildPropertyLoad(Node* receiver, Node* context,
+ Node* frame_state, Node* effect,
+ Node* control, Handle<Name> name,
+ ZoneVector<Node*>* if_exceptions,
+ PropertyAccessInfo const& access_info,
+ LanguageMode language_mode);
+
+ ValueEffectControl BuildPropertyStore(
+ Node* receiver, Node* value, Node* context, Node* frame_state,
+ Node* effect, Node* control, Handle<Name> name,
+ ZoneVector<Node*>* if_exceptions, PropertyAccessInfo const& access_info,
+ AccessMode access_mode, LanguageMode language_mode);
+
+ // Helpers for accessor inlining.
+ Node* InlinePropertyGetterCall(Node* receiver, Node* context,
+ Node* frame_state, Node** effect,
+ Node** control,
+ ZoneVector<Node*>* if_exceptions,
+ PropertyAccessInfo const& access_info);
+ Node* InlinePropertySetterCall(Node* receiver, Node* value, Node* context,
+ Node* frame_state, Node** effect,
+ Node** control,
+ ZoneVector<Node*>* if_exceptions,
+ PropertyAccessInfo const& access_info);
+ Node* InlineApiCall(Node* receiver, Node* context, Node* target,
+ Node* frame_state, Node* value, Node** effect,
+ Node** control, Handle<SharedFunctionInfo> shared_info,
+ Handle<FunctionTemplateInfo> function_template_info);
// Construct the appropriate subgraph for element access.
ValueEffectControl BuildElementAccess(Node* receiver, Node* index,
@@ -124,22 +154,10 @@ class JSNativeContextSpecialization final : public AdvancedReducer {
AccessMode access_mode,
KeyedAccessStoreMode store_mode);
- // Construct an appropriate heap object check.
- Node* BuildCheckHeapObject(Node* receiver, Node** effect, Node* control);
-
- // Construct an appropriate map check.
- Node* BuildCheckMaps(Node* receiver, Node* effect, Node* control,
- MapHandles const& maps);
-
// Construct appropriate subgraph to extend properties backing store.
Node* BuildExtendPropertiesBackingStore(Handle<Map> map, Node* properties,
Node* effect, Node* control);
- // Adds stability dependencies on all prototypes of every class in
- // {receiver_type} up to (and including) the {holder}.
- void AssumePrototypesStable(MapHandles const& receiver_maps,
- Handle<JSObject> holder);
-
// Checks if we can turn the hole into undefined when loading an element
// from an object with one of the {receiver_maps}; sets up appropriate
// code dependencies and might use the array protector cell.
@@ -161,12 +179,6 @@ class JSNativeContextSpecialization final : public AdvancedReducer {
// program location.
MaybeHandle<Map> InferReceiverRootMap(Node* receiver);
- ValueEffectControl InlineApiCall(
- Node* receiver, Node* context, Node* target, Node* frame_state,
- Node* parameter, Node* effect, Node* control,
- Handle<SharedFunctionInfo> shared_info,
- Handle<FunctionTemplateInfo> function_template_info);
-
// Script context lookup logic.
struct ScriptContextTableLookupResult;
bool LookupInScriptContextTable(Handle<Name> name,
« no previous file with comments | « BUILD.gn ('k') | src/compiler/js-native-context-specialization.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698