| OLD | NEW |
| 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 return Factory::empty_symbol(); | 363 return Factory::empty_symbol(); |
| 364 } | 364 } |
| 365 } | 365 } |
| 366 | 366 |
| 367 | 367 |
| 368 Local<StackTrace> Top::CaptureCurrentStackTrace( | 368 Local<StackTrace> Top::CaptureCurrentStackTrace( |
| 369 int frame_limit, StackTrace::StackTraceOptions options) { | 369 int frame_limit, StackTrace::StackTraceOptions options) { |
| 370 v8::HandleScope scope; | 370 v8::HandleScope scope; |
| 371 // Ensure no negative values. | 371 // Ensure no negative values. |
| 372 int limit = Max(frame_limit, 0); | 372 int limit = Max(frame_limit, 0); |
| 373 Handle<JSArray> stackTrace = Factory::NewJSArray(frame_limit); | 373 Handle<JSArray> stack_trace = Factory::NewJSArray(frame_limit); |
| 374 FixedArray* frames = FixedArray::cast(stackTrace->elements()); | |
| 375 | 374 |
| 376 Handle<String> column_key = Factory::LookupAsciiSymbol("column"); | 375 Handle<String> column_key = Factory::LookupAsciiSymbol("column"); |
| 377 Handle<String> line_key = Factory::LookupAsciiSymbol("lineNumber"); | 376 Handle<String> line_key = Factory::LookupAsciiSymbol("lineNumber"); |
| 378 Handle<String> script_key = Factory::LookupAsciiSymbol("scriptName"); | 377 Handle<String> script_key = Factory::LookupAsciiSymbol("scriptName"); |
| 379 Handle<String> function_key = Factory::LookupAsciiSymbol("functionName"); | 378 Handle<String> function_key = Factory::LookupAsciiSymbol("functionName"); |
| 380 Handle<String> eval_key = Factory::LookupAsciiSymbol("isEval"); | 379 Handle<String> eval_key = Factory::LookupAsciiSymbol("isEval"); |
| 381 Handle<String> constructor_key = Factory::LookupAsciiSymbol("isConstructor"); | 380 Handle<String> constructor_key = Factory::LookupAsciiSymbol("isConstructor"); |
| 382 | 381 |
| 383 StackTraceFrameIterator it; | 382 StackTraceFrameIterator it; |
| 384 int frames_seen = 0; | 383 int frames_seen = 0; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 431 Factory::true_value() : Factory::false_value(); | 430 Factory::true_value() : Factory::false_value(); |
| 432 SetProperty(stackFrame, eval_key, is_eval, NONE); | 431 SetProperty(stackFrame, eval_key, is_eval, NONE); |
| 433 } | 432 } |
| 434 | 433 |
| 435 if (options & StackTrace::kIsConstructor) { | 434 if (options & StackTrace::kIsConstructor) { |
| 436 Handle<Object> is_constructor = (frame->IsConstructor()) ? | 435 Handle<Object> is_constructor = (frame->IsConstructor()) ? |
| 437 Factory::true_value() : Factory::false_value(); | 436 Factory::true_value() : Factory::false_value(); |
| 438 SetProperty(stackFrame, constructor_key, is_constructor, NONE); | 437 SetProperty(stackFrame, constructor_key, is_constructor, NONE); |
| 439 } | 438 } |
| 440 | 439 |
| 441 frames->set(frames_seen, *stackFrame); | 440 FixedArray::cast(stack_trace->elements())->set(frames_seen, *stackFrame); |
| 442 frames_seen++; | 441 frames_seen++; |
| 443 it.Advance(); | 442 it.Advance(); |
| 444 } | 443 } |
| 445 | 444 |
| 446 stackTrace->set_length(Smi::FromInt(frames_seen)); | 445 stack_trace->set_length(Smi::FromInt(frames_seen)); |
| 447 return scope.Close(Utils::StackTraceToLocal(stackTrace)); | 446 return scope.Close(Utils::StackTraceToLocal(stack_trace)); |
| 448 } | 447 } |
| 449 | 448 |
| 450 | 449 |
| 451 void Top::PrintStack() { | 450 void Top::PrintStack() { |
| 452 if (stack_trace_nesting_level == 0) { | 451 if (stack_trace_nesting_level == 0) { |
| 453 stack_trace_nesting_level++; | 452 stack_trace_nesting_level++; |
| 454 | 453 |
| 455 StringAllocator* allocator; | 454 StringAllocator* allocator; |
| 456 if (preallocated_message_space == NULL) { | 455 if (preallocated_message_space == NULL) { |
| 457 allocator = new HeapStringAllocator(); | 456 allocator = new HeapStringAllocator(); |
| (...skipping 602 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1060 Top::break_access_->Lock(); | 1059 Top::break_access_->Lock(); |
| 1061 } | 1060 } |
| 1062 | 1061 |
| 1063 | 1062 |
| 1064 ExecutionAccess::~ExecutionAccess() { | 1063 ExecutionAccess::~ExecutionAccess() { |
| 1065 Top::break_access_->Unlock(); | 1064 Top::break_access_->Unlock(); |
| 1066 } | 1065 } |
| 1067 | 1066 |
| 1068 | 1067 |
| 1069 } } // namespace v8::internal | 1068 } } // namespace v8::internal |
| OLD | NEW |