Do not call memset() to initialize StubCache.

Review URL: https://chromiumcodereview.appspot.com/9464054
Patch from Iliyan Malchev <malchev@google.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10861 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
ulan@chromium.org 2012-02-28 18:26:04 +00:00
parent f9cdb0e18c
commit 20f2c9b645
3 changed files with 4 additions and 18 deletions

View File

@ -1836,13 +1836,12 @@ bool Isolate::Init(Deserializer* des) {
#ifdef ENABLE_DEBUGGER_SUPPORT
debug_->SetUp(create_heap_objects);
#endif
stub_cache_->Initialize(create_heap_objects);
// If we are deserializing, read the state into the now-empty heap.
if (des != NULL) {
des->Deserialize();
stub_cache_->Initialize(true);
}
stub_cache_->Initialize();
// Finish initialization of ThreadLocal after deserialization is done.
clear_pending_exception();

View File

@ -45,26 +45,13 @@ namespace internal {
StubCache::StubCache(Isolate* isolate) : isolate_(isolate) {
ASSERT(isolate == Isolate::Current());
memset(primary_, 0, sizeof(primary_[0]) * StubCache::kPrimaryTableSize);
memset(secondary_, 0, sizeof(secondary_[0]) * StubCache::kSecondaryTableSize);
}
void StubCache::Initialize(bool create_heap_objects) {
void StubCache::Initialize() {
ASSERT(IsPowerOf2(kPrimaryTableSize));
ASSERT(IsPowerOf2(kSecondaryTableSize));
if (create_heap_objects) {
HandleScope scope;
Code* empty = isolate_->builtins()->builtin(Builtins::kIllegal);
for (int i = 0; i < kPrimaryTableSize; i++) {
primary_[i].key = heap()->empty_string();
primary_[i].value = empty;
}
for (int j = 0; j < kSecondaryTableSize; j++) {
secondary_[j].key = heap()->empty_string();
secondary_[j].value = empty;
}
}
Clear();
}

View File

@ -71,7 +71,7 @@ class StubCache {
Code* value;
};
void Initialize(bool create_heap_objects);
void Initialize();
// Computes the right stub matching. Inserts the result in the