Index: src/compiler/js-operator.cc |
diff --git a/src/compiler/js-operator.cc b/src/compiler/js-operator.cc |
index f73bd0e71002088c1b6fcd86f431468dd075f0a1..3408098faf3aa57f5f19ef1c92c14bc06fc506d1 100644 |
--- a/src/compiler/js-operator.cc |
+++ b/src/compiler/js-operator.cc |
@@ -14,6 +14,21 @@ namespace v8 { |
namespace internal { |
namespace compiler { |
+bool operator==(VectorSlotPair const& lhs, VectorSlotPair const& rhs) { |
+ return lhs.slot() == rhs.slot() && lhs.vector() == rhs.vector(); |
+} |
+ |
+ |
+bool operator!=(VectorSlotPair const& lhs, VectorSlotPair const& rhs) { |
+ return !(lhs == rhs); |
+} |
+ |
+ |
+size_t hash_value(VectorSlotPair const& p) { |
+ return base::hash_combine(p.slot(), p.vector()); |
+} |
+ |
+ |
std::ostream& operator<<(std::ostream& os, CallFunctionParameters const& p) { |
return os << p.arity() << ", " << p.flags() << ", " << p.language_mode(); |
} |
@@ -93,7 +108,7 @@ ContextAccess const& ContextAccessOf(Operator const* op) { |
DynamicGlobalAccess::DynamicGlobalAccess(const Handle<String>& name, |
uint32_t check_bitset, |
- const ResolvedFeedbackSlot& feedback, |
+ const VectorSlotPair& feedback, |
ContextualMode mode) |
: name_(name), |
check_bitset_(check_bitset), |
@@ -175,18 +190,6 @@ DynamicContextAccess const& DynamicContextAccessOf(Operator const* op) { |
} |
-bool operator==(ResolvedFeedbackSlot const& lhs, |
- ResolvedFeedbackSlot const& rhs) { |
- return lhs.slot().ToInt() == rhs.slot().ToInt(); |
-} |
- |
- |
-size_t hash_value(ResolvedFeedbackSlot const& p) { |
- base::hash<int> h; |
- return h(p.slot().ToInt()); |
-} |
- |
- |
bool operator==(LoadNamedParameters const& lhs, |
LoadNamedParameters const& rhs) { |
return lhs.name() == rhs.name() && |
@@ -452,10 +455,10 @@ CACHED_OP_LIST_WITH_LANGUAGE_MODE(CACHED_WITH_LANGUAGE_MODE) |
#undef CACHED_WITH_LANGUAGE_MODE |
-const Operator* JSOperatorBuilder::CallFunction(size_t arity, |
- CallFunctionFlags flags, |
- LanguageMode language_mode) { |
- CallFunctionParameters parameters(arity, flags, language_mode); |
+const Operator* JSOperatorBuilder::CallFunction( |
+ size_t arity, CallFunctionFlags flags, LanguageMode language_mode, |
+ VectorSlotPair const& feedback) { |
+ CallFunctionParameters parameters(arity, flags, language_mode, feedback); |
return new (zone()) Operator1<CallFunctionParameters>( // -- |
IrOpcode::kJSCallFunction, Operator::kNoProperties, // opcode |
"JSCallFunction", // name |
@@ -486,9 +489,9 @@ const Operator* JSOperatorBuilder::CallConstruct(int arguments) { |
} |
-const Operator* JSOperatorBuilder::LoadNamed( |
- const Unique<Name>& name, const ResolvedFeedbackSlot& feedback, |
- ContextualMode contextual_mode) { |
+const Operator* JSOperatorBuilder::LoadNamed(const Unique<Name>& name, |
+ const VectorSlotPair& feedback, |
+ ContextualMode contextual_mode) { |
LoadNamedParameters parameters(name, feedback, contextual_mode); |
return new (zone()) Operator1<LoadNamedParameters>( // -- |
IrOpcode::kJSLoadNamed, Operator::kNoProperties, // opcode |
@@ -499,7 +502,7 @@ const Operator* JSOperatorBuilder::LoadNamed( |
const Operator* JSOperatorBuilder::LoadProperty( |
- const ResolvedFeedbackSlot& feedback) { |
+ const VectorSlotPair& feedback) { |
LoadPropertyParameters parameters(feedback); |
return new (zone()) Operator1<LoadPropertyParameters>( // -- |
IrOpcode::kJSLoadProperty, Operator::kNoProperties, // opcode |
@@ -509,9 +512,9 @@ const Operator* JSOperatorBuilder::LoadProperty( |
} |
-const Operator* JSOperatorBuilder::StoreNamed( |
- LanguageMode language_mode, const Unique<Name>& name, |
- const ResolvedFeedbackSlot& feedback) { |
+const Operator* JSOperatorBuilder::StoreNamed(LanguageMode language_mode, |
+ const Unique<Name>& name, |
+ const VectorSlotPair& feedback) { |
StoreNamedParameters parameters(language_mode, feedback, name); |
return new (zone()) Operator1<StoreNamedParameters>( // -- |
IrOpcode::kJSStoreNamed, Operator::kNoProperties, // opcode |
@@ -522,7 +525,7 @@ const Operator* JSOperatorBuilder::StoreNamed( |
const Operator* JSOperatorBuilder::StoreProperty( |
- LanguageMode language_mode, const ResolvedFeedbackSlot& feedback) { |
+ LanguageMode language_mode, const VectorSlotPair& feedback) { |
StorePropertyParameters parameters(language_mode, feedback); |
return new (zone()) Operator1<StorePropertyParameters>( // -- |
IrOpcode::kJSStoreProperty, Operator::kNoProperties, // opcode |
@@ -566,7 +569,7 @@ const Operator* JSOperatorBuilder::StoreContext(size_t depth, size_t index) { |
const Operator* JSOperatorBuilder::LoadDynamicGlobal( |
const Handle<String>& name, uint32_t check_bitset, |
- const ResolvedFeedbackSlot& feedback, ContextualMode mode) { |
+ const VectorSlotPair& feedback, ContextualMode mode) { |
DynamicGlobalAccess access(name, check_bitset, feedback, mode); |
return new (zone()) Operator1<DynamicGlobalAccess>( // -- |
IrOpcode::kJSLoadDynamicGlobal, Operator::kNoProperties, // opcode |