| Index: src/frames-inl.h
|
| diff --git a/src/frames-inl.h b/src/frames-inl.h
|
| index ef51e0d5767d6935b5b266d23e070c1bcc9ce002..bc2ff4fb6a8b5d74d57bec9e667af00c6b6f18db 100644
|
| --- a/src/frames-inl.h
|
| +++ b/src/frames-inl.h
|
| @@ -101,10 +101,30 @@ inline ExitFrame::ExitFrame(StackFrameIteratorBase* iterator)
|
| inline BuiltinExitFrame::BuiltinExitFrame(StackFrameIteratorBase* iterator)
|
| : ExitFrame(iterator) {}
|
|
|
| -inline Object* BuiltinExitFrame::function_slot_object() const {
|
| +inline Object* BuiltinExitFrame::target_slot_object() const {
|
| return Memory::Object_at(fp() + BuiltinExitFrameConstants::kTargetOffset);
|
| }
|
|
|
| +inline Object* BuiltinExitFrame::new_target_slot_object() const {
|
| + return Memory::Object_at(fp() + BuiltinExitFrameConstants::kNewTargetOffset);
|
| +}
|
| +
|
| +inline Object* BuiltinExitFrame::receiver_slot_object() const {
|
| + // The receiver is the first argument on the frame.
|
| + // fp[1]: return address.
|
| + // fp[2]: the last argument (new target).
|
| + // fp[4]: argc.
|
| + // fp[2 + argc - 1]: receiver.
|
| + Object* argc_slot =
|
| + Memory::Object_at(fp() + BuiltinExitFrameConstants::kArgcOffset);
|
| + DCHECK(argc_slot->IsSmi());
|
| + int argc = Smi::cast(argc_slot)->value();
|
| +
|
| + const int receiverOffset =
|
| + BuiltinExitFrameConstants::kNewTargetOffset + (argc - 1) * kPointerSize;
|
| + return Memory::Object_at(fp() + receiverOffset);
|
| +}
|
| +
|
| inline StandardFrame::StandardFrame(StackFrameIteratorBase* iterator)
|
| : StackFrame(iterator) {
|
| }
|
|
|