| Index: src/frames.cc
|
| diff --git a/src/frames.cc b/src/frames.cc
|
| index ba9ec7913a519d7317c2500a83cc4d31c677318a..20776f6b1b37613ecfc1637b737677b500ccebe7 100644
|
| --- a/src/frames.cc
|
| +++ b/src/frames.cc
|
| @@ -454,10 +454,14 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator,
|
| if (code_obj->is_interpreter_trampoline_builtin()) {
|
| return INTERPRETED;
|
| }
|
| - // We treat frames for BUILTIN Code objects as OptimizedFrame for now
|
| - // (all the builtins with JavaScript linkage are actually generated
|
| - // with TurboFan currently, so this is sound).
|
| - return OPTIMIZED;
|
| + if (code_obj->is_turbofanned()) {
|
| + // TODO(bmeurer): We treat frames for BUILTIN Code objects as
|
| + // OptimizedFrame for now (all the builtins with JavaScript
|
| + // linkage are actually generated with TurboFan currently, so
|
| + // this is sound).
|
| + return OPTIMIZED;
|
| + }
|
| + return BUILTIN;
|
| case Code::FUNCTION:
|
| return JAVA_SCRIPT;
|
| case Code::OPTIMIZED_FUNCTION:
|
| @@ -692,6 +696,7 @@ void StandardFrame::IterateCompiledFrame(ObjectVisitor* v) const {
|
| case JAVA_SCRIPT:
|
| case OPTIMIZED:
|
| case INTERPRETED:
|
| + case BUILTIN:
|
| // These frame types have a context, but they are actually stored
|
| // in the place on the stack that one finds the frame type.
|
| UNREACHABLE();
|
| @@ -1289,11 +1294,6 @@ int ArgumentsAdaptorFrame::GetNumberOfIncomingArguments() const {
|
| return Smi::cast(GetExpression(0))->value();
|
| }
|
|
|
| -
|
| -Address ArgumentsAdaptorFrame::GetCallerStackPointer() const {
|
| - return fp() + StandardFrameConstants::kCallerSPOffset;
|
| -}
|
| -
|
| int ArgumentsAdaptorFrame::GetLength(Address fp) {
|
| const int offset = ArgumentsAdaptorFrameConstants::kLengthOffset;
|
| return Smi::cast(Memory::Object_at(fp + offset))->value();
|
| @@ -1304,6 +1304,15 @@ Code* ArgumentsAdaptorFrame::unchecked_code() const {
|
| Builtins::kArgumentsAdaptorTrampoline);
|
| }
|
|
|
| +void BuiltinFrame::Print(StringStream* accumulator, PrintMode mode,
|
| + int index) const {
|
| + // TODO(bmeurer)
|
| +}
|
| +
|
| +int BuiltinFrame::GetNumberOfIncomingArguments() const {
|
| + return Smi::cast(GetExpression(0))->value();
|
| +}
|
| +
|
| Address InternalFrame::GetCallerStackPointer() const {
|
| // Internal frames have no arguments. The stack pointer of the
|
| // caller is at a fixed offset from the frame pointer.
|
|
|