From 473f83369926d7cbb80bf1b7e0cdddeb9575fc4e Mon Sep 17 00:00:00 2001 From: "whesse@chromium.org" Date: Thu, 30 Jun 2011 15:57:56 +0000 Subject: [PATCH] Change return type of FrameDescription::GetFrameSize to avoid unneeded type casts. Review URL: http://codereview.chromium.org/7282033 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8500 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/arm/deoptimizer-arm.cc | 2 +- src/deoptimizer.cc | 14 +++++++------- src/deoptimizer.h | 8 +++++++- src/ia32/deoptimizer-ia32.cc | 2 +- src/x64/deoptimizer-x64.cc | 6 +++--- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/arm/deoptimizer-arm.cc b/src/arm/deoptimizer-arm.cc index 7762a55..cd70e6d 100644 --- a/src/arm/deoptimizer-arm.cc +++ b/src/arm/deoptimizer-arm.cc @@ -550,7 +550,7 @@ void Deoptimizer::FillInputFrame(Address tos, JavaScriptFrame* frame) { } // Fill the frame content from the actual data on the frame. - for (intptr_t i = 0; i < input_->GetFrameSize(); i += kPointerSize) { + for (unsigned i = 0; i < input_->GetFrameSize(); i += kPointerSize) { input_->SetFrameSlot(i, Memory::uint32_at(tos + i)); } } diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc index 8395a59..e8c6597 100644 --- a/src/deoptimizer.cc +++ b/src/deoptimizer.cc @@ -161,7 +161,7 @@ DeoptimizedFrameInfo* Deoptimizer::DebuggerInspectableFrame( // Get the "simulated" top and size for the requested frame. Address top = reinterpret_cast
(deoptimizer->output_[frame_index]->GetTop()); - intptr_t size = + unsigned size = deoptimizer->output_[frame_index]->GetFrameSize() / kPointerSize; // Done with the GC-unsafe frame descriptions. This re-enables allocation. @@ -1114,13 +1114,13 @@ unsigned FrameDescription::GetOffsetFromSlotIndex(Deoptimizer* deoptimizer, if (slot_index >= 0) { // Local or spill slots. Skip the fixed part of the frame // including all arguments. - unsigned base = static_cast( - GetFrameSize() - deoptimizer->ComputeFixedSize(GetFunction())); + unsigned base = + GetFrameSize() - deoptimizer->ComputeFixedSize(GetFunction()); return base - ((slot_index + 1) * kPointerSize); } else { // Incoming parameter. - unsigned base = static_cast(GetFrameSize() - - deoptimizer->ComputeIncomingArgumentSize(GetFunction())); + unsigned base = GetFrameSize() - + deoptimizer->ComputeIncomingArgumentSize(GetFunction()); return base - ((slot_index + 1) * kPointerSize); } } @@ -1128,8 +1128,8 @@ unsigned FrameDescription::GetOffsetFromSlotIndex(Deoptimizer* deoptimizer, unsigned FrameDescription::GetExpressionCount(Deoptimizer* deoptimizer) { ASSERT_EQ(Code::FUNCTION, kind_); - intptr_t size = GetFrameSize() - deoptimizer->ComputeFixedSize(GetFunction()); - return static_cast(size / kPointerSize); + unsigned size = GetFrameSize() - deoptimizer->ComputeFixedSize(GetFunction()); + return size / kPointerSize; } diff --git a/src/deoptimizer.h b/src/deoptimizer.h index 9598e87..6482318 100644 --- a/src/deoptimizer.h +++ b/src/deoptimizer.h @@ -340,7 +340,10 @@ class FrameDescription { free(description); } - intptr_t GetFrameSize() const { return frame_size_; } + uint32_t GetFrameSize() const { + ASSERT(static_cast(frame_size_) == frame_size_); + return static_cast(frame_size_); + } JSFunction* GetFunction() const { return function_; } @@ -434,6 +437,9 @@ class FrameDescription { private: static const uint32_t kZapUint32 = 0xbeeddead; + // Frame_size_ must hold a uint32_t value. It is only a uintptr_t to + // keep the variable-size array frame_content_ of type intptr_t at + // the end of the structure aligned. uintptr_t frame_size_; // Number of bytes. JSFunction* function_; intptr_t registers_[Register::kNumRegisters]; diff --git a/src/ia32/deoptimizer-ia32.cc b/src/ia32/deoptimizer-ia32.cc index c026515..4ff1bfc 100644 --- a/src/ia32/deoptimizer-ia32.cc +++ b/src/ia32/deoptimizer-ia32.cc @@ -621,7 +621,7 @@ void Deoptimizer::FillInputFrame(Address tos, JavaScriptFrame* frame) { } // Fill the frame content from the actual data on the frame. - for (intptr_t i = 0; i < input_->GetFrameSize(); i += kPointerSize) { + for (unsigned i = 0; i < input_->GetFrameSize(); i += kPointerSize) { input_->SetFrameSlot(i, Memory::uint32_at(tos + i)); } } diff --git a/src/x64/deoptimizer-x64.cc b/src/x64/deoptimizer-x64.cc index 787db5a..7eb08f7 100644 --- a/src/x64/deoptimizer-x64.cc +++ b/src/x64/deoptimizer-x64.cc @@ -316,7 +316,7 @@ void Deoptimizer::DoComputeOsrOutputFrame() { USE(height_in_bytes); unsigned fixed_size = ComputeFixedSize(function_); - unsigned input_frame_size = static_cast(input_->GetFrameSize()); + unsigned input_frame_size = input_->GetFrameSize(); ASSERT(fixed_size + height_in_bytes == input_frame_size); unsigned stack_slot_size = optimized_code_->stack_slots() * kPointerSize; @@ -451,7 +451,7 @@ void Deoptimizer::DoComputeFrame(TranslationIterator* iterator, // The 'fixed' part of the frame consists of the incoming parameters and // the part described by JavaScriptFrameConstants. unsigned fixed_frame_size = ComputeFixedSize(function); - unsigned input_frame_size = static_cast(input_->GetFrameSize()); + unsigned input_frame_size = input_->GetFrameSize(); unsigned output_frame_size = height_in_bytes + fixed_frame_size; // Allocate and store the output frame description. @@ -616,7 +616,7 @@ void Deoptimizer::FillInputFrame(Address tos, JavaScriptFrame* frame) { } // Fill the frame content from the actual data on the frame. - for (intptr_t i = 0; i < input_->GetFrameSize(); i += kPointerSize) { + for (unsigned i = 0; i < input_->GetFrameSize(); i += kPointerSize) { input_->SetFrameSlot(i, Memory::uint64_at(tos + i)); } } -- 2.7.4