Update the bits reserved for the gap size in the depotimization table
authorsgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 10 Jan 2011 19:43:38 +0000 (19:43 +0000)
committersgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 10 Jan 2011 19:43:38 +0000 (19:43 +0000)
On ARM the a constant pool can be emitted during the gap code generation which leads to larger gap code size

BUG=v8:1018
Review URL: http://codereview.chromium.org/6125004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6252 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/safepoint-table.h
test/mozilla/mozilla.status

index 010ac5759bee7413ad27929783516209625aeafc..a0ad41f92bf5da3b6f92466b7f6de81300ce755e 100644 (file)
@@ -69,8 +69,15 @@ class SafepointTable BASE_EMBEDDED {
     return &Memory::uint8_at(entries_ + (index * entry_size_));
   }
 
-  class GapCodeSizeField: public BitField<unsigned, 0, 8> {};
-  class DeoptimizationIndexField: public BitField<int, 8, 24> {};
+  // Reserve 13 bits for the gap code size. On ARM a constant pool can be
+  // emitted when generating the gap code. The size of the const pool is less
+  // than what can be represented in 12 bits, so 13 bits gives room for having
+  // instructions before potentially emitting a constant pool.
+  static const int kGapCodeSizeBits = 13;
+  static const int kDeoptIndexBits = 32 - kGapCodeSizeBits;
+  class GapCodeSizeField: public BitField<unsigned, 0, kGapCodeSizeBits> {};
+  class DeoptimizationIndexField:
+      public BitField<int, kGapCodeSizeBits, kDeoptIndexBits> {};
 
   static bool HasRegisters(uint8_t* entry);
   static bool HasRegisterAt(uint8_t* entry, int reg_index);
@@ -114,7 +121,8 @@ class SafepointTable BASE_EMBEDDED {
 
 class Safepoint BASE_EMBEDDED {
  public:
-  static const int kNoDeoptimizationIndex = 0x00ffffff;
+  static const int kNoDeoptimizationIndex =
+      (1 << (SafepointTable::kDeoptIndexBits)) - 1;
 
   void DefinePointerSlot(int index) { indexes_->Add(index); }
   void DefinePointerRegister(Register reg) { registers_->Add(reg.code()); }
index 9a5aa35684d5c212e35c4ad85eb914942f16d264..b5b9bb85a380335eec3cc4070ef26f11a4b74de1 100644 (file)
@@ -840,9 +840,6 @@ js1_5/extensions/regress-371636: SKIP
 js1_5/Regress/regress-416628: CRASH
 js1_5/Regress/regress-96128-n: PASS || CRASH
 
-# BUG(1032)
-ecma/Date/15.9.3.1-1.js: PASS || CRASH
-
 [ $fast == yes && $arch == arm ]
 
 # In fast mode on arm we try to skip all tests that would time out,