Fix corner case in optimized code map zapping.
authormstarzinger@chromium.org <mstarzinger@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 22 May 2013 15:29:02 +0000 (15:29 +0000)
committermstarzinger@chromium.org <mstarzinger@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 22 May 2013 15:29:02 +0000 (15:29 +0000)
R=jkummerow@chromium.org
TEST=mjsunit/math-floor-part2

Review URL: https://codereview.chromium.org/15743005

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

src/objects-printer.cc
src/objects.cc
src/objects.h

index ddecae3..f312794 100644 (file)
@@ -889,6 +889,8 @@ void SharedFunctionInfo::SharedFunctionInfoPrint(FILE* out) {
          has_only_simple_this_property_assignments());
   PrintF(out, "\n - this_property_assignments = ");
   this_property_assignments()->ShortPrint(out);
+  PrintF(out, "\n - optimized_code_map = ");
+  optimized_code_map()->ShortPrint(out);
   PrintF(out, "\n");
 }
 
index 31bbbdb..527028a 100644 (file)
@@ -9043,7 +9043,10 @@ MaybeObject* SharedFunctionInfo::AddToOptimizedCodeMap(Context* native_context,
     new_code_map->set(old_length + 1, code);
     new_code_map->set(old_length + 2, literals);
     // Zap the old map for the sake of the heap verifier.
-    if (Heap::ShouldZapGarbage()) ZapOptimizedCodeMap();
+    if (Heap::ShouldZapGarbage()) {
+      Object** data = old_code_map->data_start();
+      MemsetPointer(data, heap->the_hole_value(), old_length);
+    }
   }
 #ifdef DEBUG
   for (int i = kEntriesStart; i < new_code_map->length(); i += kEntryLength) {
@@ -9137,14 +9140,6 @@ void SharedFunctionInfo::TrimOptimizedCodeMap(int shrink_by) {
 }
 
 
-void SharedFunctionInfo::ZapOptimizedCodeMap() {
-  FixedArray* code_map = FixedArray::cast(optimized_code_map());
-  MemsetPointer(code_map->data_start(),
-                GetHeap()->the_hole_value(),
-                code_map->length());
-}
-
-
 bool JSFunction::CompileLazy(Handle<JSFunction> function,
                              ClearExceptionFlag flag) {
   bool result = true;
index ac74162..441c6ef 100644 (file)
@@ -5829,9 +5829,6 @@ class SharedFunctionInfo: public HeapObject {
   // Trims the optimized code map after entries have been removed.
   void TrimOptimizedCodeMap(int shrink_by);
 
-  // Zaps the contents of backing optimized code map.
-  void ZapOptimizedCodeMap();
-
   // Add a new entry to the optimized code map.
   MUST_USE_RESULT MaybeObject* AddToOptimizedCodeMap(Context* native_context,
                                                      Code* code,