From 7e8f53181fc0ebc59bf3000bc68ca41ddb54627b Mon Sep 17 00:00:00 2001 From: "ishell@chromium.org" Date: Thu, 24 Apr 2014 10:17:10 +0000 Subject: [PATCH] Revert "*NumberDictionary::AtNumberPut() handlified." This reverts commit r20932 for breaking Mac build. TBR=yangguo@chromium.org Review URL: https://codereview.chromium.org/251383003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20933 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/code-stubs.cc | 3 ++- src/factory.cc | 20 ++++++++++++++++++++ src/factory.h | 10 ++++++++++ src/objects.cc | 23 ++++++----------------- src/objects.h | 10 ++-------- src/runtime.cc | 4 ++-- src/type-info.cc | 2 +- 7 files changed, 43 insertions(+), 29 deletions(-) diff --git a/src/code-stubs.cc b/src/code-stubs.cc index b9722d187..0c9f3af41 100644 --- a/src/code-stubs.cc +++ b/src/code-stubs.cc @@ -135,6 +135,7 @@ void CodeStub::VerifyPlatformFeatures(Isolate* isolate) { Handle CodeStub::GetCode(Isolate* isolate) { + Factory* factory = isolate->factory(); Heap* heap = isolate->heap(); Code* code; if (UseSpecialCache() @@ -169,7 +170,7 @@ Handle CodeStub::GetCode(Isolate* isolate) { } else { // Update the dictionary and the root in Heap. Handle dict = - UnseededNumberDictionary::AtNumberPut( + factory->DictionaryAtNumberPut( Handle(heap->code_stubs()), GetKey(), new_object); diff --git a/src/factory.cc b/src/factory.cc index 36d7332e5..2e405bc27 100644 --- a/src/factory.cc +++ b/src/factory.cc @@ -1963,6 +1963,26 @@ Handle Factory::NumberToString(Handle number, } +Handle Factory::DictionaryAtNumberPut( + Handle dictionary, + uint32_t key, + Handle value) { + CALL_HEAP_FUNCTION(isolate(), + dictionary->AtNumberPut(key, *value), + SeededNumberDictionary); +} + + +Handle Factory::DictionaryAtNumberPut( + Handle dictionary, + uint32_t key, + Handle value) { + CALL_HEAP_FUNCTION(isolate(), + dictionary->AtNumberPut(key, *value), + UnseededNumberDictionary); +} + + void Factory::InitializeFunction(Handle function, Handle info, Handle context, diff --git a/src/factory.h b/src/factory.h index 8549938e6..caabac8fb 100644 --- a/src/factory.h +++ b/src/factory.h @@ -607,6 +607,16 @@ class Factory V8_FINAL { Handle script, Handle stack_frames); + Handle DictionaryAtNumberPut( + Handle, + uint32_t key, + Handle value); + + Handle DictionaryAtNumberPut( + Handle, + uint32_t key, + Handle value); + #ifdef ENABLE_DEBUGGER_SUPPORT Handle NewDebugInfo(Handle shared); #endif diff --git a/src/objects.cc b/src/objects.cc index 34fdf2534..9f500424f 100644 --- a/src/objects.cc +++ b/src/objects.cc @@ -16064,26 +16064,15 @@ Handle UnseededNumberDictionary::AddNumberEntry( } -Handle SeededNumberDictionary::AtNumberPut( - Handle dictionary, - uint32_t key, - Handle value) { - dictionary->UpdateMaxNumberKey(key); - CALL_HEAP_FUNCTION( - dictionary->GetIsolate(), - dictionary->AtPut(key, *value), - SeededNumberDictionary); +MaybeObject* SeededNumberDictionary::AtNumberPut(uint32_t key, Object* value) { + UpdateMaxNumberKey(key); + return AtPut(key, value); } -Handle UnseededNumberDictionary::AtNumberPut( - Handle dictionary, - uint32_t key, - Handle value) { - CALL_HEAP_FUNCTION( - dictionary->GetIsolate(), - dictionary->AtPut(key, *value), - UnseededNumberDictionary); +MaybeObject* UnseededNumberDictionary::AtNumberPut(uint32_t key, + Object* value) { + return AtPut(key, value); } diff --git a/src/objects.h b/src/objects.h index 85807ee34..dc8aa7a4a 100644 --- a/src/objects.h +++ b/src/objects.h @@ -4193,10 +4193,7 @@ class SeededNumberDictionary } // Type specific at put (default NONE attributes is used when adding). - MUST_USE_RESULT static Handle AtNumberPut( - Handle dictionary, - uint32_t key, - Handle value); + MUST_USE_RESULT MaybeObject* AtNumberPut(uint32_t key, Object* value); MUST_USE_RESULT static Handle AddNumberEntry( Handle dictionary, uint32_t key, @@ -4248,10 +4245,7 @@ class UnseededNumberDictionary } // Type specific at put (default NONE attributes is used when adding). - MUST_USE_RESULT static Handle AtNumberPut( - Handle dictionary, - uint32_t key, - Handle value); + MUST_USE_RESULT MaybeObject* AtNumberPut(uint32_t key, Object* value); MUST_USE_RESULT static Handle AddNumberEntry( Handle dictionary, uint32_t key, diff --git a/src/runtime.cc b/src/runtime.cc index 812d1dab0..b45f6e334 100644 --- a/src/runtime.cc +++ b/src/runtime.cc @@ -9979,7 +9979,7 @@ class ArrayConcatVisitor { Handle dict( SeededNumberDictionary::cast(*storage_)); Handle result = - SeededNumberDictionary::AtNumberPut(dict, index, elm); + isolate_->factory()->DictionaryAtNumberPut(dict, index, elm); if (!result.is_identical_to(dict)) { // Dictionary needed to grow. clear_storage(); @@ -10029,7 +10029,7 @@ class ArrayConcatVisitor { Handle element(current_storage->get(i), isolate_); if (!element->IsTheHole()) { Handle new_storage = - SeededNumberDictionary::AtNumberPut(slow_storage, i, element); + isolate_->factory()->DictionaryAtNumberPut(slow_storage, i, element); if (!new_storage.is_identical_to(slow_storage)) { slow_storage = loop_scope.CloseAndEscape(new_storage); } diff --git a/src/type-info.cc b/src/type-info.cc index 64a8dffc2..71236f7d9 100644 --- a/src/type-info.cc +++ b/src/type-info.cc @@ -495,7 +495,7 @@ void TypeFeedbackOracle::SetInfo(TypeFeedbackId ast_id, Object* target) { // Dictionary has been allocated with sufficient size for all elements. DisallowHeapAllocation no_need_to_resize_dictionary; HandleScope scope(isolate()); - UnseededNumberDictionary::AtNumberPut( + isolate()->factory()->DictionaryAtNumberPut( dictionary_, IdToKey(ast_id), handle(target, isolate())); } -- 2.34.1