Index: src/x64/virtual-frame-x64.cc |
=================================================================== |
--- src/x64/virtual-frame-x64.cc (revision 5107) |
+++ src/x64/virtual-frame-x64.cc (working copy) |
@@ -1168,6 +1168,26 @@ |
} |
+Result VirtualFrame::CallStoreIC(Handle<String> name, bool is_contextual) { |
+ // Value and (if not contextual) receiver are on top of the frame. |
+ // The IC expects name in rcx, value in rax, and receiver in rdx. |
+ Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Initialize)); |
+ Result value = Pop(); |
+ if (is_contextual) { |
+ PrepareForCall(0, 0); |
+ value.ToRegister(rax); |
+ __ movq(rdx, Operand(rsi, Context::SlotOffset(Context::GLOBAL_INDEX))); |
+ value.Unuse(); |
+ } else { |
+ Result receiver = Pop(); |
+ PrepareForCall(0, 0); |
+ MoveResultsToRegisters(&value, &receiver, rax, rdx); |
+ } |
+ __ Move(rcx, name); |
+ return RawCallCodeObject(ic, RelocInfo::CODE_TARGET); |
+} |
+ |
+ |
Result VirtualFrame::CallCallIC(RelocInfo::Mode mode, |
int arg_count, |
int loop_nesting) { |