| Index: src/factory.cc
|
| diff --git a/src/factory.cc b/src/factory.cc
|
| index 0b796350d44b6ff31e905a32b9da76aee9f175f5..5915f487de3432956a0edb39809d813e1e713ff6 100644
|
| --- a/src/factory.cc
|
| +++ b/src/factory.cc
|
| @@ -1,4 +1,4 @@
|
| -// Copyright 2011 the V8 project authors. All rights reserved.
|
| +// Copyright 2012 the V8 project authors. All rights reserved.
|
| // Redistribution and use in source and binary forms, with or without
|
| // modification, are permitted provided that the following conditions are
|
| // met:
|
| @@ -485,8 +485,9 @@ Handle<Map> Factory::CopyMapDropTransitions(Handle<Map> src) {
|
| Handle<Map> Factory::GetElementsTransitionMap(
|
| Handle<JSObject> src,
|
| ElementsKind elements_kind) {
|
| - CALL_HEAP_FUNCTION(isolate(),
|
| - src->GetElementsTransitionMap(elements_kind),
|
| + Isolate* i = isolate();
|
| + CALL_HEAP_FUNCTION(i,
|
| + src->GetElementsTransitionMap(i, elements_kind),
|
| Map);
|
| }
|
|
|
| @@ -754,12 +755,9 @@ Handle<JSFunction> Factory::NewFunctionWithPrototype(Handle<String> name,
|
| if (force_initial_map ||
|
| type != JS_OBJECT_TYPE ||
|
| instance_size != JSObject::kHeaderSize) {
|
| - 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);
|
| + FAST_SMI_ONLY_ELEMENTS);
|
| function->set_initial_map(*initial_map);
|
| initial_map->set_constructor(*function);
|
| }
|
| @@ -938,22 +936,28 @@ Handle<JSObject> Factory::NewJSObjectFromMap(Handle<Map> map) {
|
|
|
|
|
| Handle<JSArray> Factory::NewJSArray(int capacity,
|
| + ElementsKind elements_kind,
|
| PretenureFlag pretenure) {
|
| - Handle<JSObject> obj = NewJSObject(isolate()->array_function(), pretenure);
|
| CALL_HEAP_FUNCTION(isolate(),
|
| - Handle<JSArray>::cast(obj)->Initialize(capacity),
|
| + isolate()->heap()->AllocateJSArrayAndStorage(
|
| + elements_kind,
|
| + 0,
|
| + capacity,
|
| + INITIALIZE_ARRAY_ELEMENTS_WITH_HOLE,
|
| + pretenure),
|
| JSArray);
|
| }
|
|
|
|
|
| Handle<JSArray> Factory::NewJSArrayWithElements(Handle<FixedArrayBase> elements,
|
| + ElementsKind elements_kind,
|
| PretenureFlag pretenure) {
|
| - Handle<JSArray> result =
|
| - Handle<JSArray>::cast(NewJSObject(isolate()->array_function(),
|
| - pretenure));
|
| - result->set_length(Smi::FromInt(0));
|
| - SetContent(result, elements);
|
| - return result;
|
| + CALL_HEAP_FUNCTION(
|
| + isolate(),
|
| + isolate()->heap()->AllocateJSArrayWithElements(*elements,
|
| + elements_kind,
|
| + pretenure),
|
| + JSArray);
|
| }
|
|
|
|
|
|
|