Change return type of FrameDescription::GetFrameSize to avoid unneeded type casts.
authorwhesse@chromium.org <whesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 30 Jun 2011 15:57:56 +0000 (15:57 +0000)
committerwhesse@chromium.org <whesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Thu, 30 Jun 2011 15:57:56 +0000 (15:57 +0000)
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
src/deoptimizer.cc
src/deoptimizer.h
src/ia32/deoptimizer-ia32.cc
src/x64/deoptimizer-x64.cc

index 7762a558acbbd40a279f9b35c3ce90ea8294b72e..cd70e6de8242f4d6638bdc0c8f645288c50ffcde 100644 (file)
@@ -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));
   }
 }
index 8395a59c479b9dedf14324b73a23d4b906c86b88..e8c659718f769a6ec5d2dd6129b2b4bb0ad7c16c 100644 (file)
@@ -161,7 +161,7 @@ DeoptimizedFrameInfo* Deoptimizer::DebuggerInspectableFrame(
   // Get the "simulated" top and size for the requested frame.
   Address top =
       reinterpret_cast<Address>(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<unsigned>(
-        GetFrameSize() - deoptimizer->ComputeFixedSize(GetFunction()));
+    unsigned base =
+        GetFrameSize() - deoptimizer->ComputeFixedSize(GetFunction());
     return base - ((slot_index + 1) * kPointerSize);
   } else {
     // Incoming parameter.
-    unsigned base = static_cast<unsigned>(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<unsigned>(size / kPointerSize);
+  unsigned size = GetFrameSize() - deoptimizer->ComputeFixedSize(GetFunction());
+  return size / kPointerSize;
 }
 
 
index 9598e8724ff0985358a3fdef89ab0657146d7fc1..64823183a52446448afb5696fb7821ee66901a0d 100644 (file)
@@ -340,7 +340,10 @@ class FrameDescription {
     free(description);
   }
 
-  intptr_t GetFrameSize() const { return frame_size_; }
+  uint32_t GetFrameSize() const {
+    ASSERT(static_cast<uint32_t>(frame_size_) == frame_size_);
+    return static_cast<uint32_t>(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];
index c0265152e9c57c0937adc3f0a965eaf11c85a808..4ff1bfc35fee6da36ba0afd587328c5b3d8cb0a5 100644 (file)
@@ -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));
   }
 }
index 787db5ac862e09737de0265ff6fceac6517e3573..7eb08f7e0d7c076ca08622a947ffee6729836845 100644 (file)
@@ -316,7 +316,7 @@ void Deoptimizer::DoComputeOsrOutputFrame() {
   USE(height_in_bytes);
 
   unsigned fixed_size = ComputeFixedSize(function_);
-  unsigned input_frame_size = static_cast<unsigned>(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<unsigned>(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));
   }
 }