TurboFan calls to vector-based ics need to resolve a slot to an index.

This is to cope with the recent division of the TypeFeedbackVector into
Slots and ICSlots.

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/673203002

Cr-Commit-Position: refs/heads/master@{#24870}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24870 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent b0bfef00
...@@ -275,8 +275,7 @@ void JSGenericLowering::LowerJSLoadProperty(Node* node) { ...@@ -275,8 +275,7 @@ void JSGenericLowering::LowerJSLoadProperty(Node* node) {
const LoadPropertyParameters& p = LoadPropertyParametersOf(node->op()); const LoadPropertyParameters& p = LoadPropertyParametersOf(node->op());
Callable callable = CodeFactory::KeyedLoadICInOptimizedCode(isolate()); Callable callable = CodeFactory::KeyedLoadICInOptimizedCode(isolate());
if (FLAG_vector_ics) { if (FLAG_vector_ics) {
PatchInsertInput(node, 2, PatchInsertInput(node, 2, jsgraph()->SmiConstant(p.feedback().index()));
jsgraph()->SmiConstant(p.feedback().slot().ToInt()));
PatchInsertInput(node, 3, jsgraph()->HeapConstant(p.feedback().vector())); PatchInsertInput(node, 3, jsgraph()->HeapConstant(p.feedback().vector()));
} }
ReplaceWithStubCall(node, callable, CallDescriptor::kPatchableCallSite); ReplaceWithStubCall(node, callable, CallDescriptor::kPatchableCallSite);
...@@ -289,8 +288,7 @@ void JSGenericLowering::LowerJSLoadNamed(Node* node) { ...@@ -289,8 +288,7 @@ void JSGenericLowering::LowerJSLoadNamed(Node* node) {
CodeFactory::LoadICInOptimizedCode(isolate(), p.contextual_mode()); CodeFactory::LoadICInOptimizedCode(isolate(), p.contextual_mode());
PatchInsertInput(node, 1, jsgraph()->HeapConstant(p.name())); PatchInsertInput(node, 1, jsgraph()->HeapConstant(p.name()));
if (FLAG_vector_ics) { if (FLAG_vector_ics) {
PatchInsertInput(node, 2, PatchInsertInput(node, 2, jsgraph()->SmiConstant(p.feedback().index()));
jsgraph()->SmiConstant(p.feedback().slot().ToInt()));
PatchInsertInput(node, 3, jsgraph()->HeapConstant(p.feedback().vector())); PatchInsertInput(node, 3, jsgraph()->HeapConstant(p.feedback().vector()));
} }
ReplaceWithStubCall(node, callable, CallDescriptor::kPatchableCallSite); ReplaceWithStubCall(node, callable, CallDescriptor::kPatchableCallSite);
......
...@@ -104,6 +104,8 @@ class VectorSlotPair { ...@@ -104,6 +104,8 @@ class VectorSlotPair {
Handle<TypeFeedbackVector> vector() const { return vector_; } Handle<TypeFeedbackVector> vector() const { return vector_; }
FeedbackVectorICSlot slot() const { return slot_; } FeedbackVectorICSlot slot() const { return slot_; }
int index() const { return vector_->GetIndex(slot_); }
private: private:
const Handle<TypeFeedbackVector> vector_; const Handle<TypeFeedbackVector> vector_;
const FeedbackVectorICSlot slot_; const FeedbackVectorICSlot slot_;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment