| 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 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 ASSERT(code->contains(pc())); | 365 ASSERT(code->contains(pc())); |
| 366 } | 366 } |
| 367 | 367 |
| 368 | 368 |
| 369 StackFrame::Type StackFrame::GetCallerState(State* state) const { | 369 StackFrame::Type StackFrame::GetCallerState(State* state) const { |
| 370 ComputeCallerState(state); | 370 ComputeCallerState(state); |
| 371 return ComputeType(state); | 371 return ComputeType(state); |
| 372 } | 372 } |
| 373 | 373 |
| 374 | 374 |
| 375 Code* EntryFrame::code() const { | 375 Code* EntryFrame::unchecked_code() const { |
| 376 return Heap::js_entry_code(); | 376 return Heap::raw_unchecked_js_entry_code(); |
| 377 } | 377 } |
| 378 | 378 |
| 379 | 379 |
| 380 void EntryFrame::ComputeCallerState(State* state) const { | 380 void EntryFrame::ComputeCallerState(State* state) const { |
| 381 GetCallerState(state); | 381 GetCallerState(state); |
| 382 } | 382 } |
| 383 | 383 |
| 384 | 384 |
| 385 void EntryFrame::SetCallerFp(Address caller_fp) { | 385 void EntryFrame::SetCallerFp(Address caller_fp) { |
| 386 const int offset = EntryFrameConstants::kCallerFPOffset; | 386 const int offset = EntryFrameConstants::kCallerFPOffset; |
| 387 Memory::Address_at(this->fp() + offset) = caller_fp; | 387 Memory::Address_at(this->fp() + offset) = caller_fp; |
| 388 } | 388 } |
| 389 | 389 |
| 390 | 390 |
| 391 StackFrame::Type EntryFrame::GetCallerState(State* state) const { | 391 StackFrame::Type EntryFrame::GetCallerState(State* state) const { |
| 392 const int offset = EntryFrameConstants::kCallerFPOffset; | 392 const int offset = EntryFrameConstants::kCallerFPOffset; |
| 393 Address fp = Memory::Address_at(this->fp() + offset); | 393 Address fp = Memory::Address_at(this->fp() + offset); |
| 394 return ExitFrame::GetStateForFramePointer(fp, state); | 394 return ExitFrame::GetStateForFramePointer(fp, state); |
| 395 } | 395 } |
| 396 | 396 |
| 397 | 397 |
| 398 Code* EntryConstructFrame::code() const { | 398 Code* EntryConstructFrame::unchecked_code() const { |
| 399 return Heap::js_construct_entry_code(); | 399 return Heap::raw_unchecked_js_construct_entry_code(); |
| 400 } | 400 } |
| 401 | 401 |
| 402 | 402 |
| 403 Object*& ExitFrame::code_slot() const { | 403 Object*& ExitFrame::code_slot() const { |
| 404 const int offset = ExitFrameConstants::kCodeOffset; | 404 const int offset = ExitFrameConstants::kCodeOffset; |
| 405 return Memory::Object_at(fp() + offset); | 405 return Memory::Object_at(fp() + offset); |
| 406 } | 406 } |
| 407 | 407 |
| 408 | 408 |
| 409 Code* ExitFrame::code() const { | 409 Code* ExitFrame::unchecked_code() const { |
| 410 return Code::cast(code_slot()); | 410 return reinterpret_cast<Code*>(code_slot()); |
| 411 } | 411 } |
| 412 | 412 |
| 413 | 413 |
| 414 void ExitFrame::ComputeCallerState(State* state) const { | 414 void ExitFrame::ComputeCallerState(State* state) const { |
| 415 // Setup the caller state. | 415 // Setup the caller state. |
| 416 state->sp = caller_sp(); | 416 state->sp = caller_sp(); |
| 417 state->fp = Memory::Address_at(fp() + ExitFrameConstants::kCallerFPOffset); | 417 state->fp = Memory::Address_at(fp() + ExitFrameConstants::kCallerFPOffset); |
| 418 state->pc_address | 418 state->pc_address |
| 419 = reinterpret_cast<Address*>(fp() + ExitFrameConstants::kCallerPCOffset); | 419 = reinterpret_cast<Address*>(fp() + ExitFrameConstants::kCallerPCOffset); |
| 420 } | 420 } |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 486 bool JavaScriptFrame::IsConstructor() const { | 486 bool JavaScriptFrame::IsConstructor() const { |
| 487 Address fp = caller_fp(); | 487 Address fp = caller_fp(); |
| 488 if (has_adapted_arguments()) { | 488 if (has_adapted_arguments()) { |
| 489 // Skip the arguments adaptor frame and look at the real caller. | 489 // Skip the arguments adaptor frame and look at the real caller. |
| 490 fp = Memory::Address_at(fp + StandardFrameConstants::kCallerFPOffset); | 490 fp = Memory::Address_at(fp + StandardFrameConstants::kCallerFPOffset); |
| 491 } | 491 } |
| 492 return IsConstructFrame(fp); | 492 return IsConstructFrame(fp); |
| 493 } | 493 } |
| 494 | 494 |
| 495 | 495 |
| 496 Code* JavaScriptFrame::code() const { | 496 Code* JavaScriptFrame::unchecked_code() const { |
| 497 JSFunction* function = JSFunction::cast(this->function()); | 497 JSFunction* function = JSFunction::cast(this->function()); |
| 498 return function->shared()->code(); | 498 return function->unchecked_code(); |
| 499 } | 499 } |
| 500 | 500 |
| 501 | 501 |
| 502 Code* ArgumentsAdaptorFrame::code() const { | 502 Code* ArgumentsAdaptorFrame::unchecked_code() const { |
| 503 return Builtins::builtin(Builtins::ArgumentsAdaptorTrampoline); | 503 return Builtins::builtin(Builtins::ArgumentsAdaptorTrampoline); |
| 504 } | 504 } |
| 505 | 505 |
| 506 | 506 |
| 507 Code* InternalFrame::code() const { | 507 Code* InternalFrame::unchecked_code() const { |
| 508 const int offset = InternalFrameConstants::kCodeOffset; | 508 const int offset = InternalFrameConstants::kCodeOffset; |
| 509 Object* code = Memory::Object_at(fp() + offset); | 509 Object* code = Memory::Object_at(fp() + offset); |
| 510 ASSERT(code != NULL); | 510 ASSERT(code != NULL); |
| 511 return Code::cast(code); | 511 return reinterpret_cast<Code*>(code); |
| 512 } | 512 } |
| 513 | 513 |
| 514 | 514 |
| 515 void StackFrame::PrintIndex(StringStream* accumulator, | 515 void StackFrame::PrintIndex(StringStream* accumulator, |
| 516 PrintMode mode, | 516 PrintMode mode, |
| 517 int index) { | 517 int index) { |
| 518 accumulator->Add((mode == OVERVIEW) ? "%5d: " : "[%d]: ", index); | 518 accumulator->Add((mode == OVERVIEW) ? "%5d: " : "[%d]: ", index); |
| 519 } | 519 } |
| 520 | 520 |
| 521 | 521 |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 817 ZoneList<StackFrame*> list(10); | 817 ZoneList<StackFrame*> list(10); |
| 818 for (StackFrameIterator it; !it.done(); it.Advance()) { | 818 for (StackFrameIterator it; !it.done(); it.Advance()) { |
| 819 StackFrame* frame = AllocateFrameCopy(it.frame()); | 819 StackFrame* frame = AllocateFrameCopy(it.frame()); |
| 820 list.Add(frame); | 820 list.Add(frame); |
| 821 } | 821 } |
| 822 return list.ToVector(); | 822 return list.ToVector(); |
| 823 } | 823 } |
| 824 | 824 |
| 825 | 825 |
| 826 } } // namespace v8::internal | 826 } } // namespace v8::internal |
| OLD | NEW |