| Index: src/frames.cc
|
| diff --git a/src/frames.cc b/src/frames.cc
|
| index b20a7ea37caf43ef7b01c1d1fa5ec7b6bcf5e331..29d3456e61853cc905556cfe60af3de66a2ddcc8 100644
|
| --- a/src/frames.cc
|
| +++ b/src/frames.cc
|
| @@ -205,7 +205,7 @@ void StackTraceFrameIterator::Advance() {
|
|
|
| bool StackTraceFrameIterator::IsValidFrame() {
|
| if (!frame()->function()->IsJSFunction()) return false;
|
| - Object* script = JSFunction::cast(frame()->function())->shared()->script();
|
| + Object* script = frame()->function()->shared()->script();
|
| // Don't show functions from native scripts to user.
|
| return (script->IsScript() &&
|
| Script::TYPE_NATIVE != Script::cast(script)->type()->value());
|
| @@ -724,8 +724,7 @@ int JavaScriptFrame::GetArgumentsLength() const {
|
|
|
|
|
| Code* JavaScriptFrame::unchecked_code() const {
|
| - JSFunction* function = JSFunction::cast(this->function());
|
| - return function->code();
|
| + return function()->code();
|
| }
|
|
|
|
|
| @@ -733,8 +732,7 @@ int JavaScriptFrame::GetNumberOfIncomingArguments() const {
|
| ASSERT(can_access_heap_objects() &&
|
| isolate()->heap()->gc_state() == Heap::NOT_IN_GC);
|
|
|
| - JSFunction* function = JSFunction::cast(this->function());
|
| - return function->shared()->formal_parameter_count();
|
| + return function()->shared()->formal_parameter_count();
|
| }
|
|
|
|
|
| @@ -745,7 +743,7 @@ Address JavaScriptFrame::GetCallerStackPointer() const {
|
|
|
| void JavaScriptFrame::GetFunctions(List<JSFunction*>* functions) {
|
| ASSERT(functions->length() == 0);
|
| - functions->Add(JSFunction::cast(function()));
|
| + functions->Add(function());
|
| }
|
|
|
|
|
| @@ -754,7 +752,7 @@ void JavaScriptFrame::Summarize(List<FrameSummary>* functions) {
|
| Code* code_pointer = LookupCode();
|
| int offset = static_cast<int>(pc() - code_pointer->address());
|
| FrameSummary summary(receiver(),
|
| - JSFunction::cast(function()),
|
| + function(),
|
| code_pointer,
|
| offset,
|
| IsConstructor());
|
| @@ -775,40 +773,35 @@ void JavaScriptFrame::PrintTop(Isolate* isolate,
|
| JavaScriptFrame* frame = it.frame();
|
| if (frame->IsConstructor()) PrintF(file, "new ");
|
| // function name
|
| - Object* maybe_fun = frame->function();
|
| - if (maybe_fun->IsJSFunction()) {
|
| - JSFunction* fun = JSFunction::cast(maybe_fun);
|
| - fun->PrintName();
|
| - Code* js_code = frame->unchecked_code();
|
| - Address pc = frame->pc();
|
| - int code_offset =
|
| - static_cast<int>(pc - js_code->instruction_start());
|
| - PrintF("+%d", code_offset);
|
| - SharedFunctionInfo* shared = fun->shared();
|
| - if (print_line_number) {
|
| - Code* code = Code::cast(
|
| - v8::internal::Isolate::Current()->heap()->FindCodeObject(pc));
|
| - int source_pos = code->SourcePosition(pc);
|
| - Object* maybe_script = shared->script();
|
| - if (maybe_script->IsScript()) {
|
| - Handle<Script> script(Script::cast(maybe_script));
|
| - int line = GetScriptLineNumberSafe(script, source_pos) + 1;
|
| - Object* script_name_raw = script->name();
|
| - if (script_name_raw->IsString()) {
|
| - String* script_name = String::cast(script->name());
|
| - SmartArrayPointer<char> c_script_name =
|
| - script_name->ToCString(DISALLOW_NULLS,
|
| - ROBUST_STRING_TRAVERSAL);
|
| - PrintF(file, " at %s:%d", *c_script_name, line);
|
| - } else {
|
| - PrintF(file, " at <unknown>:%d", line);
|
| - }
|
| + JSFunction* fun = frame->function();
|
| + fun->PrintName();
|
| + Code* js_code = frame->unchecked_code();
|
| + Address pc = frame->pc();
|
| + int code_offset =
|
| + static_cast<int>(pc - js_code->instruction_start());
|
| + PrintF("+%d", code_offset);
|
| + SharedFunctionInfo* shared = fun->shared();
|
| + if (print_line_number) {
|
| + Code* code = Code::cast(
|
| + v8::internal::Isolate::Current()->heap()->FindCodeObject(pc));
|
| + int source_pos = code->SourcePosition(pc);
|
| + Object* maybe_script = shared->script();
|
| + if (maybe_script->IsScript()) {
|
| + Handle<Script> script(Script::cast(maybe_script));
|
| + int line = GetScriptLineNumberSafe(script, source_pos) + 1;
|
| + Object* script_name_raw = script->name();
|
| + if (script_name_raw->IsString()) {
|
| + String* script_name = String::cast(script->name());
|
| + SmartArrayPointer<char> c_script_name =
|
| + script_name->ToCString(DISALLOW_NULLS,
|
| + ROBUST_STRING_TRAVERSAL);
|
| + PrintF(file, " at %s:%d", *c_script_name, line);
|
| } else {
|
| - PrintF(file, " at <unknown>:<unknown>");
|
| + PrintF(file, " at <unknown>:%d", line);
|
| }
|
| + } else {
|
| + PrintF(file, " at <unknown>:<unknown>");
|
| }
|
| - } else {
|
| - PrintF("<unknown>");
|
| }
|
|
|
| if (print_args) {
|
| @@ -913,7 +906,7 @@ void FrameSummary::Print() {
|
| JSFunction* OptimizedFrame::LiteralAt(FixedArray* literal_array,
|
| int literal_id) {
|
| if (literal_id == Translation::kSelfLiteralId) {
|
| - return JSFunction::cast(function());
|
| + return function();
|
| }
|
|
|
| return JSFunction::cast(literal_array->get(literal_id));
|
| @@ -1018,7 +1011,7 @@ DeoptimizationInputData* OptimizedFrame::GetDeoptimizationData(
|
| int* deopt_index) {
|
| ASSERT(is_optimized());
|
|
|
| - JSFunction* opt_function = JSFunction::cast(function());
|
| + JSFunction* opt_function = function();
|
| Code* code = opt_function->code();
|
|
|
| // The code object may have been replaced by lazy deoptimization. Fall
|
| @@ -1132,7 +1125,7 @@ void JavaScriptFrame::Print(StringStream* accumulator,
|
| int index) const {
|
| HandleScope scope(isolate());
|
| Object* receiver = this->receiver();
|
| - Object* function = this->function();
|
| + JSFunction* function = this->function();
|
|
|
| accumulator->PrintSecurityTokenIfChanged(function);
|
| PrintIndex(accumulator, mode, index);
|
| @@ -1146,29 +1139,27 @@ void JavaScriptFrame::Print(StringStream* accumulator,
|
| // or context slots.
|
| Handle<ScopeInfo> scope_info(ScopeInfo::Empty(isolate()));
|
|
|
| - if (function->IsJSFunction()) {
|
| - Handle<SharedFunctionInfo> shared(JSFunction::cast(function)->shared());
|
| - scope_info = Handle<ScopeInfo>(shared->scope_info());
|
| - Object* script_obj = shared->script();
|
| - if (script_obj->IsScript()) {
|
| - Handle<Script> script(Script::cast(script_obj));
|
| - accumulator->Add(" [");
|
| - accumulator->PrintName(script->name());
|
| -
|
| - Address pc = this->pc();
|
| - if (code != NULL && code->kind() == Code::FUNCTION &&
|
| - pc >= code->instruction_start() && pc < code->instruction_end()) {
|
| - int source_pos = code->SourcePosition(pc);
|
| - int line = GetScriptLineNumberSafe(script, source_pos) + 1;
|
| - accumulator->Add(":%d", line);
|
| - } else {
|
| - int function_start_pos = shared->start_position();
|
| - int line = GetScriptLineNumberSafe(script, function_start_pos) + 1;
|
| - accumulator->Add(":~%d", line);
|
| - }
|
| -
|
| - accumulator->Add("] ");
|
| + Handle<SharedFunctionInfo> shared(function->shared());
|
| + scope_info = Handle<ScopeInfo>(shared->scope_info());
|
| + Object* script_obj = shared->script();
|
| + if (script_obj->IsScript()) {
|
| + Handle<Script> script(Script::cast(script_obj));
|
| + accumulator->Add(" [");
|
| + accumulator->PrintName(script->name());
|
| +
|
| + Address pc = this->pc();
|
| + if (code != NULL && code->kind() == Code::FUNCTION &&
|
| + pc >= code->instruction_start() && pc < code->instruction_end()) {
|
| + int source_pos = code->SourcePosition(pc);
|
| + int line = GetScriptLineNumberSafe(script, source_pos) + 1;
|
| + accumulator->Add(":%d", line);
|
| + } else {
|
| + int function_start_pos = shared->start_position();
|
| + int line = GetScriptLineNumberSafe(script, function_start_pos) + 1;
|
| + accumulator->Add(":~%d", line);
|
| }
|
| +
|
| + accumulator->Add("] ");
|
| }
|
|
|
| accumulator->Add("(this=%o", receiver);
|
| @@ -1258,7 +1249,7 @@ void JavaScriptFrame::Print(StringStream* accumulator,
|
|
|
| // Print details about the function.
|
| if (FLAG_max_stack_trace_source_length != 0 && code != NULL) {
|
| - SharedFunctionInfo* shared = JSFunction::cast(function)->shared();
|
| + SharedFunctionInfo* shared = function->shared();
|
| accumulator->Add("--------- s o u r c e c o d e ---------\n");
|
| shared->SourceCodePrint(accumulator, FLAG_max_stack_trace_source_length);
|
| accumulator->Add("\n-----------------------------------------\n");
|
| @@ -1273,10 +1264,8 @@ void ArgumentsAdaptorFrame::Print(StringStream* accumulator,
|
| int index) const {
|
| int actual = ComputeParametersCount();
|
| int expected = -1;
|
| - Object* function = this->function();
|
| - if (function->IsJSFunction()) {
|
| - expected = JSFunction::cast(function)->shared()->formal_parameter_count();
|
| - }
|
| + JSFunction* function = this->function();
|
| + expected = function->shared()->formal_parameter_count();
|
|
|
| PrintIndex(accumulator, mode, index);
|
| accumulator->Add("arguments adaptor frame: %d->%d", actual, expected);
|
|
|