From d259e1cebdada389f347f58992d1350348b7df18 Mon Sep 17 00:00:00 2001 From: "mstarzinger@chromium.org" Date: Wed, 22 May 2013 15:29:02 +0000 Subject: [PATCH] Fix corner case in optimized code map zapping. 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 | 2 ++ src/objects.cc | 13 ++++--------- src/objects.h | 3 --- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/objects-printer.cc b/src/objects-printer.cc index ddecae3..f312794 100644 --- a/src/objects-printer.cc +++ b/src/objects-printer.cc @@ -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"); } diff --git a/src/objects.cc b/src/objects.cc index 31bbbdb..527028a 100644 --- a/src/objects.cc +++ b/src/objects.cc @@ -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 function, ClearExceptionFlag flag) { bool result = true; diff --git a/src/objects.h b/src/objects.h index ac74162..441c6ef 100644 --- a/src/objects.h +++ b/src/objects.h @@ -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, -- 2.7.4