Chromium Code Reviews| Index: src/frames.cc | 
| diff --git a/src/frames.cc b/src/frames.cc | 
| index 145f50f49ee579e17d5942bc0d28c3d9aeb46b39..4f4704c555276a53082a5465839ef77868425e43 100644 | 
| --- a/src/frames.cc | 
| +++ b/src/frames.cc | 
| @@ -451,10 +451,14 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator, | 
| switch (code_obj->kind()) { | 
| case Code::BUILTIN: | 
| if (marker->IsSmi()) break; | 
| - // 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; | 
| 
 
Jarin
2016/04/20 11:47:57
What would go wrong if you also optimized function
 
 | 
| + } | 
| + return BUILTIN; | 
| case Code::FUNCTION: | 
| return JAVA_SCRIPT; | 
| case Code::OPTIMIZED_FUNCTION: | 
| @@ -702,6 +706,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(); | 
| @@ -1280,11 +1285,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(); | 
| @@ -1295,6 +1295,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. |