| Index: src/x64/virtual-frame-x64.cc
|
| ===================================================================
|
| --- src/x64/virtual-frame-x64.cc (revision 2244)
|
| +++ src/x64/virtual-frame-x64.cc (working copy)
|
| @@ -842,6 +842,42 @@
|
| }
|
|
|
|
|
| +Result VirtualFrame::CallLoadIC(RelocInfo::Mode mode) {
|
| + // Name and receiver are on the top of the frame. The IC expects
|
| + // name in rcx and receiver on the stack. It does not drop the
|
| + // receiver.
|
| + Handle<Code> ic(Builtins::builtin(Builtins::LoadIC_Initialize));
|
| + Result name = Pop();
|
| + PrepareForCall(1, 0); // One stack arg, not callee-dropped.
|
| + name.ToRegister(rcx);
|
| + name.Unuse();
|
| + return RawCallCodeObject(ic, mode);
|
| +}
|
| +
|
| +
|
| +Result VirtualFrame::CallKeyedLoadIC(RelocInfo::Mode mode) {
|
| + // Key and receiver are on top of the frame. The IC expects them on
|
| + // the stack. It does not drop them.
|
| + Handle<Code> ic(Builtins::builtin(Builtins::KeyedLoadIC_Initialize));
|
| + PrepareForCall(2, 0); // Two stack args, neither callee-dropped.
|
| + return RawCallCodeObject(ic, mode);
|
| +}
|
| +
|
| +
|
| +Result VirtualFrame::CallKeyedStoreIC() {
|
| + // Value, key, and receiver are on the top of the frame. The IC
|
| + // expects value in rax and key and receiver on the stack. It does
|
| + // not drop the key and receiver.
|
| + Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Initialize));
|
| + // TODO(1222589): Make the IC grab the values from the stack.
|
| + Result value = Pop();
|
| + PrepareForCall(2, 0); // Two stack args, neither callee-dropped.
|
| + value.ToRegister(rax);
|
| + value.Unuse();
|
| + return RawCallCodeObject(ic, RelocInfo::CODE_TARGET);
|
| +}
|
| +
|
| +
|
| Result VirtualFrame::CallCallIC(RelocInfo::Mode mode,
|
| int arg_count,
|
| int loop_nesting) {
|
|
|