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 be74e5d9c48f1c9d80b89b8fc2f0b1ed072dce22..ace47b0eeec489f56aa8a252b14c952e5c5a780d 100644 |
--- a/src/compiler/js-native-context-specialization.h |
+++ b/src/compiler/js-native-context-specialization.h |
@@ -24,9 +24,11 @@ namespace compiler { |
// Forward declarations. |
enum class AccessMode; |
class CommonOperatorBuilder; |
+class ElementAccessInfo; |
class JSGraph; |
class JSOperatorBuilder; |
class MachineOperatorBuilder; |
+class PropertyAccessInfo; |
class SimplifiedOperatorBuilder; |
@@ -80,9 +82,41 @@ class JSNativeContextSpecialization final : public AdvancedReducer { |
Reduction ReduceSoftDeoptimize(Node* node, DeoptimizeReason reason); |
+ // A triple of nodes that represents a continuation. |
+ class ValueEffectControl final { |
+ public: |
+ ValueEffectControl(Node* value, Node* effect, Node* control) |
+ : value_(value), effect_(effect), control_(control) {} |
+ |
+ Node* value() const { return value_; } |
+ Node* effect() const { return effect_; } |
+ Node* control() const { return control_; } |
+ |
+ private: |
+ Node* const value_; |
+ Node* const effect_; |
+ Node* const control_; |
+ }; |
+ |
+ // Construct the appropriate subgraph for property access. |
+ ValueEffectControl BuildPropertyAccess(Node* receiver, Node* value, |
+ Node* effect, Node* control, |
+ Handle<Name> name, |
+ Handle<Context> native_context, |
+ PropertyAccessInfo const& access_info, |
+ AccessMode access_mode); |
+ |
+ // Construct the appropriate subgraph for element access. |
+ ValueEffectControl BuildElementAccess(Node* receiver, Node* index, |
+ Node* value, Node* effect, |
+ Node* control, |
+ Handle<Context> native_context, |
+ ElementAccessInfo const& access_info, |
+ AccessMode access_mode); |
+ |
// Adds stability dependencies on all prototypes of every class in |
// {receiver_type} up to (and including) the {holder}. |
- void AssumePrototypesStable(Type* receiver_type, |
+ void AssumePrototypesStable(std::vector<Handle<Map>> const& receiver_maps, |
Handle<Context> native_context, |
Handle<JSObject> holder); |