Index: src/compiler/js-operator.h |
diff --git a/src/compiler/js-operator.h b/src/compiler/js-operator.h |
index 6bd6516af3be488a633ba9e6025d8ebf008ead40..e9f161ff599e2b7bcacad819f8efbf7bfc5fdf97 100644 |
--- a/src/compiler/js-operator.h |
+++ b/src/compiler/js-operator.h |
@@ -54,6 +54,31 @@ size_t hash_value(TailCallMode); |
std::ostream& operator<<(std::ostream&, TailCallMode); |
+// Defines the arity and the feedback for a JavaScript constructor call. This is |
+// used as a parameter by JSCallConstruct operators. |
+class CallConstructParameters final { |
+ public: |
+ CallConstructParameters(size_t arity, VectorSlotPair const& feedback) |
+ : arity_(arity), feedback_(feedback) {} |
+ |
+ size_t arity() const { return arity_; } |
+ VectorSlotPair const& feedback() const { return feedback_; } |
+ |
+ private: |
+ size_t const arity_; |
+ VectorSlotPair const feedback_; |
+}; |
+ |
+bool operator==(CallConstructParameters const&, CallConstructParameters const&); |
+bool operator!=(CallConstructParameters const&, CallConstructParameters const&); |
+ |
+size_t hash_value(CallConstructParameters const&); |
+ |
+std::ostream& operator<<(std::ostream&, CallConstructParameters const&); |
+ |
+CallConstructParameters const& CallConstructParametersOf(Operator const*); |
+ |
+ |
// Defines the arity and the call flags for a JavaScript function call. This is |
// used as a parameter by JSCallFunction operators. |
class CallFunctionParameters final { |
@@ -327,6 +352,31 @@ const CreateArgumentsParameters& CreateArgumentsParametersOf( |
const Operator* op); |
+// Defines shared information for the array that should be created. This is |
+// used as parameter by JSCreateArray operators. |
+class CreateArrayParameters final { |
+ public: |
+ explicit CreateArrayParameters(size_t arity, Handle<AllocationSite> site) |
+ : arity_(arity), site_(site) {} |
+ |
+ size_t arity() const { return arity_; } |
+ Handle<AllocationSite> site() const { return site_; } |
+ |
+ private: |
+ size_t const arity_; |
+ Handle<AllocationSite> const site_; |
+}; |
+ |
+bool operator==(CreateArrayParameters const&, CreateArrayParameters const&); |
+bool operator!=(CreateArrayParameters const&, CreateArrayParameters const&); |
+ |
+size_t hash_value(CreateArrayParameters const&); |
+ |
+std::ostream& operator<<(std::ostream&, CreateArrayParameters const&); |
+ |
+const CreateArrayParameters& CreateArrayParametersOf(const Operator* op); |
+ |
+ |
// Defines shared information for the closure that should be created. This is |
// used as a parameter by JSCreateClosure operators. |
class CreateClosureParameters final { |
@@ -391,6 +441,7 @@ class JSOperatorBuilder final : public ZoneObject { |
const Operator* Create(); |
const Operator* CreateArguments(CreateArgumentsParameters::Type type, |
int start_index); |
+ const Operator* CreateArray(size_t arity, Handle<AllocationSite> site); |
const Operator* CreateClosure(Handle<SharedFunctionInfo> shared_info, |
PretenureFlag pretenure); |
const Operator* CreateLiteralArray(int literal_flags); |
@@ -402,7 +453,7 @@ class JSOperatorBuilder final : public ZoneObject { |
ConvertReceiverMode convert_mode = ConvertReceiverMode::kAny, |
TailCallMode tail_call_mode = TailCallMode::kDisallow); |
const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); |
- const Operator* CallConstruct(int arguments); |
+ const Operator* CallConstruct(size_t arity, VectorSlotPair const& feedback); |
const Operator* ConvertReceiver(ConvertReceiverMode convert_mode); |
@@ -430,6 +481,8 @@ class JSOperatorBuilder final : public ZoneObject { |
const Operator* LoadContext(size_t depth, size_t index, bool immutable); |
const Operator* StoreContext(size_t depth, size_t index); |
+ const Operator* LoadNativeContext(); |
+ |
const Operator* LoadDynamic(const Handle<String>& name, |
TypeofMode typeof_mode); |