Revision: 20533
Author: [email protected]
Date: Mon Apr 7 10:12:54 2014 UTC
Log: Handlify six allocator functions from the Heap.
[email protected]
Review URL: https://codereview.chromium.org/227533002
http://code.google.com/p/v8/source/detail?r=20533
Modified:
/branches/bleeding_edge/src/factory.cc
/branches/bleeding_edge/src/factory.h
/branches/bleeding_edge/src/heap.cc
/branches/bleeding_edge/src/heap.h
=======================================
--- /branches/bleeding_edge/src/factory.cc Mon Apr 7 10:00:14 2014 UTC
+++ /branches/bleeding_edge/src/factory.cc Mon Apr 7 10:12:54 2014 UTC
@@ -178,16 +178,21 @@
Handle<AccessorPair> Factory::NewAccessorPair() {
- CALL_HEAP_FUNCTION(isolate(),
- isolate()->heap()->AllocateAccessorPair(),
- AccessorPair);
+ Handle<AccessorPair> accessors =
+ Handle<AccessorPair>::cast(NewStruct(ACCESSOR_PAIR_TYPE));
+ accessors->set_getter(*the_hole_value(), SKIP_WRITE_BARRIER);
+ accessors->set_setter(*the_hole_value(), SKIP_WRITE_BARRIER);
+ accessors->set_access_flags(Smi::FromInt(0), SKIP_WRITE_BARRIER);
+ return accessors;
}
Handle<TypeFeedbackInfo> Factory::NewTypeFeedbackInfo() {
- CALL_HEAP_FUNCTION(isolate(),
- isolate()->heap()->AllocateTypeFeedbackInfo(),
- TypeFeedbackInfo);
+ Handle<TypeFeedbackInfo> info =
+ Handle<TypeFeedbackInfo>::cast(NewStruct(TYPE_FEEDBACK_INFO_TYPE));
+ info->initialize_storage();
+ info->set_feedback_vector(*empty_fixed_array(), SKIP_WRITE_BARRIER);
+ return info;
}
@@ -568,10 +573,12 @@
Handle<Context> Factory::NewNativeContext() {
- CALL_HEAP_FUNCTION(
- isolate(),
- isolate()->heap()->AllocateNativeContext(),
- Context);
+ Handle<FixedArray> array = NewFixedArray(Context::NATIVE_CONTEXT_SLOTS);
+ array->set_map_no_write_barrier(*native_context_map());
+ Handle<Context> context = Handle<Context>::cast(array);
+ context->set_js_array_maps(*undefined_value());
+ ASSERT(context->IsNativeContext());
+ return context;
}
@@ -585,10 +592,13 @@
Handle<Context> Factory::NewModuleContext(Handle<ScopeInfo> scope_info) {
- CALL_HEAP_FUNCTION(
- isolate(),
- isolate()->heap()->AllocateModuleContext(*scope_info),
- Context);
+ Handle<FixedArray> array =
+ NewFixedArray(scope_info->ContextLength(), TENURED);
+ array->set_map_no_write_barrier(*module_context_map());
+ // Instance link will be set later.
+ Handle<Context> context = Handle<Context>::cast(array);
+ context->set_extension(Smi::FromInt(0));
+ return context;
}
@@ -1219,17 +1229,18 @@
Handle<ScopeInfo> Factory::NewScopeInfo(int length) {
- CALL_HEAP_FUNCTION(
- isolate(),
- isolate()->heap()->AllocateScopeInfo(length),
- ScopeInfo);
+ Handle<FixedArray> array = NewFixedArray(length, TENURED);
+ array->set_map_no_write_barrier(*scope_info_map());
+ Handle<ScopeInfo> scope_info = Handle<ScopeInfo>::cast(array);
+ return scope_info;
}
Handle<JSObject> Factory::NewExternal(void* value) {
- CALL_HEAP_FUNCTION(isolate(),
- isolate()->heap()->AllocateExternal(value),
- JSObject);
+ Handle<Foreign> foreign = NewForeign(static_cast<Address>(value));
+ Handle<JSObject> external = NewJSObjectFromMap(external_map());
+ external->SetInternalField(0, *foreign);
+ return external;
}
=======================================
--- /branches/bleeding_edge/src/factory.h Mon Apr 7 10:00:14 2014 UTC
+++ /branches/bleeding_edge/src/factory.h Mon Apr 7 10:12:54 2014 UTC
@@ -70,9 +70,11 @@
Handle<DeoptimizationOutputData> NewDeoptimizationOutputData(
int deopt_entry_count,
PretenureFlag pretenure);
- // Allocates a pre-tenured empty AccessorPair.
+
+ // Create a pre-tenured empty AccessorPair.
Handle<AccessorPair> NewAccessorPair();
+ // Create an empty TypeFeedbackInfo.
Handle<TypeFeedbackInfo> NewTypeFeedbackInfo();
Handle<String> InternalizeUtf8String(Vector<const char> str);
@@ -405,8 +407,10 @@
Handle<Context> context,
PretenureFlag pretenure = TENURED);
+ // Create a serialized scope info.
Handle<ScopeInfo> NewScopeInfo(int length);
+ // Create an External object for V8's external API.
Handle<JSObject> NewExternal(void* value);
Handle<Code> NewCode(const CodeDesc& desc,
=======================================
--- /branches/bleeding_edge/src/heap.cc Mon Apr 7 10:00:14 2014 UTC
+++ /branches/bleeding_edge/src/heap.cc Mon Apr 7 10:12:54 2014 UTC
@@ -2688,29 +2688,6 @@
MaybeObject* Heap::AllocatePolymorphicCodeCache() {
return AllocateStruct(POLYMORPHIC_CODE_CACHE_TYPE);
}
-
-
-MaybeObject* Heap::AllocateAccessorPair() {
- AccessorPair* accessors;
- { MaybeObject* maybe_accessors = AllocateStruct(ACCESSOR_PAIR_TYPE);
- if (!maybe_accessors->To(&accessors)) return maybe_accessors;
- }
- accessors->set_getter(the_hole_value(), SKIP_WRITE_BARRIER);
- accessors->set_setter(the_hole_value(), SKIP_WRITE_BARRIER);
- accessors->set_access_flags(Smi::FromInt(0), SKIP_WRITE_BARRIER);
- return accessors;
-}
-
-
-MaybeObject* Heap::AllocateTypeFeedbackInfo() {
- TypeFeedbackInfo* info;
- { MaybeObject* maybe_info = AllocateStruct(TYPE_FEEDBACK_INFO_TYPE);
- if (!maybe_info->To(&info)) return maybe_info;
- }
- info->initialize_storage();
- info->set_feedback_vector(empty_fixed_array(), SKIP_WRITE_BARRIER);
- return info;
-}
MaybeObject* Heap::AllocateAliasedArgumentsEntry(int aliased_context_slot)
{
@@ -5507,21 +5484,6 @@
symbol->set_is_private(true);
return symbol;
}
-
-
-MaybeObject* Heap::AllocateNativeContext() {
- Object* result;
- { MaybeObject* maybe_result =
- AllocateFixedArray(Context::NATIVE_CONTEXT_SLOTS);
- if (!maybe_result->ToObject(&result)) return maybe_result;
- }
- Context* context = reinterpret_cast<Context*>(result);
- context->set_map_no_write_barrier(native_context_map());
- context->set_js_array_maps(undefined_value());
- ASSERT(context->IsNativeContext());
- ASSERT(result->IsContext());
- return result;
-}
MaybeObject* Heap::AllocateGlobalContext(JSFunction* function,
@@ -5541,20 +5503,6 @@
ASSERT(result->IsContext());
return context;
}
-
-
-MaybeObject* Heap::AllocateModuleContext(ScopeInfo* scope_info) {
- Object* result;
- { MaybeObject* maybe_result =
- AllocateFixedArray(scope_info->ContextLength(), TENURED);
- if (!maybe_result->ToObject(&result)) return maybe_result;
- }
- Context* context = reinterpret_cast<Context*>(result);
- context->set_map_no_write_barrier(module_context_map());
- // Instance link will be set later.
- context->set_extension(Smi::FromInt(0));
- return context;
-}
MaybeObject* Heap::AllocateFunctionContext(int length, JSFunction*
function) {
@@ -5627,29 +5575,6 @@
context->set_global_object(previous->global_object());
return context;
}
-
-
-MaybeObject* Heap::AllocateScopeInfo(int length) {
- FixedArray* scope_info;
- MaybeObject* maybe_scope_info = AllocateFixedArray(length, TENURED);
- if (!maybe_scope_info->To(&scope_info)) return maybe_scope_info;
- scope_info->set_map_no_write_barrier(scope_info_map());
- return scope_info;
-}
-
-
-MaybeObject* Heap::AllocateExternal(void* value) {
- Foreign* foreign;
- { MaybeObject* maybe_result =
AllocateForeign(static_cast<Address>(value));
- if (!maybe_result->To(&foreign)) return maybe_result;
- }
- JSObject* external;
- { MaybeObject* maybe_result = AllocateJSObjectFromMap(external_map());
- if (!maybe_result->To(&external)) return maybe_result;
- }
- external->SetInternalField(0, foreign);
- return external;
-}
MaybeObject* Heap::AllocateStruct(InstanceType type) {
=======================================
--- /branches/bleeding_edge/src/heap.h Mon Apr 7 10:00:14 2014 UTC
+++ /branches/bleeding_edge/src/heap.h Mon Apr 7 10:12:54 2014 UTC
@@ -816,21 +816,9 @@
// Allocates an empty code cache.
MUST_USE_RESULT MaybeObject* AllocateCodeCache();
- // Allocates a serialized scope info.
- MUST_USE_RESULT MaybeObject* AllocateScopeInfo(int length);
-
- // Allocates an External object for v8's external API.
- MUST_USE_RESULT MaybeObject* AllocateExternal(void* value);
-
// Allocates an empty PolymorphicCodeCache.
MUST_USE_RESULT MaybeObject* AllocatePolymorphicCodeCache();
- // Allocates a pre-tenured empty AccessorPair.
- MUST_USE_RESULT MaybeObject* AllocateAccessorPair();
-
- // Allocates an empty TypeFeedbackInfo.
- MUST_USE_RESULT MaybeObject* AllocateTypeFeedbackInfo();
-
// Allocates an AliasedArgumentsEntry.
MUST_USE_RESULT MaybeObject* AllocateAliasedArgumentsEntry(int slot);
@@ -1052,16 +1040,10 @@
MUST_USE_RESULT MaybeObject* AllocateHashTable(
int length, PretenureFlag pretenure = NOT_TENURED);
- // Allocate a native (but otherwise uninitialized) context.
- MUST_USE_RESULT MaybeObject* AllocateNativeContext();
-
// Allocate a global context.
MUST_USE_RESULT MaybeObject* AllocateGlobalContext(JSFunction* function,
ScopeInfo*
scope_info);
- // Allocate a module context.
- MUST_USE_RESULT MaybeObject* AllocateModuleContext(ScopeInfo*
scope_info);
-
// Allocate a function context.
MUST_USE_RESULT MaybeObject* AllocateFunctionContext(int length,
JSFunction*
function);
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.