Index: src/factory.cc |
=================================================================== |
--- src/factory.cc (revision 9531) |
+++ src/factory.cc (working copy) |
@@ -234,7 +234,7 @@ |
Handle<String> Factory::NewExternalStringFromAscii( |
- ExternalAsciiString::Resource* resource) { |
+ const ExternalAsciiString::Resource* resource) { |
CALL_HEAP_FUNCTION( |
isolate(), |
isolate()->heap()->AllocateExternalStringFromAscii(resource), |
@@ -243,7 +243,7 @@ |
Handle<String> Factory::NewExternalStringFromTwoByte( |
- ExternalTwoByteString::Resource* resource) { |
+ const ExternalTwoByteString::Resource* resource) { |
CALL_HEAP_FUNCTION( |
isolate(), |
isolate()->heap()->AllocateExternalStringFromTwoByte(resource), |
@@ -404,10 +404,12 @@ |
} |
-Handle<Map> Factory::NewMap(InstanceType type, int instance_size) { |
+Handle<Map> Factory::NewMap(InstanceType type, |
+ int instance_size, |
+ ElementsKind elements_kind) { |
CALL_HEAP_FUNCTION( |
isolate(), |
- isolate()->heap()->AllocateMap(type, instance_size), |
+ isolate()->heap()->AllocateMap(type, instance_size, elements_kind), |
Map); |
} |
@@ -455,23 +457,11 @@ |
} |
-Handle<Map> Factory::GetFastElementsMap(Handle<Map> src) { |
- CALL_HEAP_FUNCTION(isolate(), src->GetFastElementsMap(), Map); |
-} |
- |
- |
-Handle<Map> Factory::GetSlowElementsMap(Handle<Map> src) { |
- CALL_HEAP_FUNCTION(isolate(), src->GetSlowElementsMap(), Map); |
-} |
- |
- |
Handle<Map> Factory::GetElementsTransitionMap( |
- Handle<Map> src, |
- ElementsKind elements_kind, |
- bool safe_to_add_transition) { |
+ Handle<JSObject> src, |
+ ElementsKind elements_kind) { |
CALL_HEAP_FUNCTION(isolate(), |
- src->GetElementsTransitionMap(elements_kind, |
- safe_to_add_transition), |
+ src->GetElementsTransitionMap(elements_kind), |
Map); |
} |
@@ -722,7 +712,12 @@ |
if (force_initial_map || |
type != JS_OBJECT_TYPE || |
instance_size != JSObject::kHeaderSize) { |
- Handle<Map> initial_map = NewMap(type, instance_size); |
+ ElementsKind default_elements_kind = FLAG_smi_only_arrays |
+ ? FAST_SMI_ONLY_ELEMENTS |
+ : FAST_ELEMENTS; |
+ Handle<Map> initial_map = NewMap(type, |
+ instance_size, |
+ default_elements_kind); |
function->set_initial_map(*initial_map); |
initial_map->set_constructor(*function); |
} |
@@ -908,11 +903,26 @@ |
Handle<JSArray> result = |
Handle<JSArray>::cast(NewJSObject(isolate()->array_function(), |
pretenure)); |
- result->SetContent(*elements); |
+ SetContent(result, elements); |
return result; |
} |
+void Factory::SetContent(Handle<JSArray> array, |
+ Handle<FixedArray> elements) { |
+ CALL_HEAP_FUNCTION_VOID( |
+ isolate(), |
+ array->SetContent(*elements)); |
+} |
+ |
+ |
+void Factory::EnsureCanContainNonSmiElements(Handle<JSArray> array) { |
+ CALL_HEAP_FUNCTION_VOID( |
+ isolate(), |
+ array->EnsureCanContainNonSmiElements()); |
+} |
+ |
+ |
Handle<JSProxy> Factory::NewJSProxy(Handle<Object> handler, |
Handle<Object> prototype) { |
CALL_HEAP_FUNCTION( |
@@ -938,6 +948,13 @@ |
} |
+void Factory::SetIdentityHash(Handle<JSObject> object, Object* hash) { |
+ CALL_HEAP_FUNCTION_VOID( |
+ isolate(), |
+ object->SetIdentityHash(hash, ALLOW_CREATION)); |
+} |
+ |
+ |
Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo( |
Handle<String> name, |
int number_of_literals, |
@@ -990,6 +1007,12 @@ |
} |
+Handle<String> Factory::Uint32ToString(uint32_t value) { |
+ CALL_HEAP_FUNCTION(isolate(), |
+ isolate()->heap()->Uint32ToString(value), String); |
+} |
+ |
+ |
Handle<NumberDictionary> Factory::DictionaryAtNumberPut( |
Handle<NumberDictionary> dictionary, |
uint32_t key, |
@@ -1299,4 +1322,13 @@ |
} |
+Handle<Object> Factory::GlobalConstantFor(Handle<String> name) { |
+ Heap* h = isolate()->heap(); |
+ if (name->Equals(h->undefined_symbol())) return undefined_value(); |
+ if (name->Equals(h->nan_symbol())) return nan_value(); |
+ if (name->Equals(h->infinity_symbol())) return infinity_value(); |
+ return Handle<Object>::null(); |
+} |
+ |
+ |
} } // namespace v8::internal |