Index: src/full-codegen/full-codegen.cc |
diff --git a/src/full-codegen/full-codegen.cc b/src/full-codegen/full-codegen.cc |
index b8aff87a3ba5f809672dd5edbd866ded7be03ad6..2c5d979cf1d3f3563d698a947af3da456eeb37d5 100644 |
--- a/src/full-codegen/full-codegen.cc |
+++ b/src/full-codegen/full-codegen.cc |
@@ -237,6 +237,14 @@ void FullCodeGenerator::CallLoadGlobalIC(TypeofMode typeof_mode, |
void FullCodeGenerator::CallStoreIC(TypeFeedbackId id) { |
Handle<Code> ic = CodeFactory::StoreIC(isolate(), language_mode()).code(); |
+ |
+ STATIC_ASSERT(!StoreDescriptor::kPassLastArgsOnStack || |
+ StoreDescriptor::kStackArgumentsCount == 2); |
+ if (StoreDescriptor::kPassLastArgsOnStack) { |
+ __ Push(StoreDescriptor::ValueRegister()); |
+ __ Push(StoreDescriptor::SlotRegister()); |
+ } |
mvstanton
2016/09/22 08:06:24
Would it be better to push these values directly o
Igor Sheludko
2016/09/22 08:41:09
Yes it would. Let me address this in a follow-up C
|
+ |
CallIC(ic, id); |
RestoreContext(); |
} |
@@ -244,6 +252,14 @@ void FullCodeGenerator::CallStoreIC(TypeFeedbackId id) { |
void FullCodeGenerator::CallKeyedStoreIC() { |
Handle<Code> ic = |
CodeFactory::KeyedStoreIC(isolate(), language_mode()).code(); |
+ |
+ STATIC_ASSERT(!StoreDescriptor::kPassLastArgsOnStack || |
+ StoreDescriptor::kStackArgumentsCount == 2); |
+ if (StoreDescriptor::kPassLastArgsOnStack) { |
+ __ Push(StoreDescriptor::ValueRegister()); |
+ __ Push(StoreDescriptor::SlotRegister()); |
+ } |
+ |
CallIC(ic); |
RestoreContext(); |
} |