diff options
Diffstat (limited to 'deps/v8/src/bootstrapper.cc')
-rw-r--r-- | deps/v8/src/bootstrapper.cc | 55 |
1 files changed, 32 insertions, 23 deletions
diff --git a/deps/v8/src/bootstrapper.cc b/deps/v8/src/bootstrapper.cc index 7c9e4366e..a51a9b117 100644 --- a/deps/v8/src/bootstrapper.cc +++ b/deps/v8/src/bootstrapper.cc @@ -1086,11 +1086,13 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global, CHECK_NOT_EMPTY_HANDLE(isolate, JSObject::SetLocalPropertyIgnoreAttributes( result, factory->length_string(), - factory->undefined_value(), DONT_ENUM)); + factory->undefined_value(), DONT_ENUM, + Object::FORCE_TAGGED)); CHECK_NOT_EMPTY_HANDLE(isolate, JSObject::SetLocalPropertyIgnoreAttributes( result, factory->callee_string(), - factory->undefined_value(), DONT_ENUM)); + factory->undefined_value(), DONT_ENUM, + Object::FORCE_TAGGED)); #ifdef DEBUG LookupResult lookup(isolate); @@ -1320,10 +1322,11 @@ void Genesis::InitializeExperimentalGlobal() { if (FLAG_harmony_array_buffer) { // -- A r r a y B u f f e r Handle<JSFunction> array_buffer_fun = - InstallFunction(global, "ArrayBuffer", JS_ARRAY_BUFFER_TYPE, - JSArrayBuffer::kSize, - isolate()->initial_object_prototype(), - Builtins::kIllegal, true, true); + InstallFunction( + global, "ArrayBuffer", JS_ARRAY_BUFFER_TYPE, + JSArrayBuffer::kSizeWithInternalFields, + isolate()->initial_object_prototype(), + Builtins::kIllegal, true, true); native_context()->set_array_buffer_fun(*array_buffer_fun); } @@ -1574,6 +1577,11 @@ void Genesis::InstallExperimentalNativeFunctions() { } if (FLAG_harmony_observation) { INSTALL_NATIVE(JSFunction, "NotifyChange", observers_notify_change); + INSTALL_NATIVE(JSFunction, "EnqueueSpliceRecord", observers_enqueue_splice); + INSTALL_NATIVE(JSFunction, "BeginPerformSplice", + observers_begin_perform_splice); + INSTALL_NATIVE(JSFunction, "EndPerformSplice", + observers_end_perform_splice); INSTALL_NATIVE(JSFunction, "DeliverChangeRecords", observers_deliver_changes); } @@ -1604,19 +1612,23 @@ Handle<JSFunction> Genesis::InstallInternalArray( factory()->NewJSObject(isolate()->object_function(), TENURED); SetPrototype(array_function, prototype); - array_function->shared()->set_construct_stub( - isolate()->builtins()->builtin(Builtins::kCommonArrayConstructCode)); + if (FLAG_optimize_constructed_arrays) { + InternalArrayConstructorStub internal_array_constructor_stub(isolate()); + Handle<Code> code = internal_array_constructor_stub.GetCode(isolate()); + array_function->shared()->set_construct_stub(*code); + } else { + array_function->shared()->set_construct_stub( + isolate()->builtins()->builtin(Builtins::kCommonArrayConstructCode)); + } array_function->shared()->DontAdaptArguments(); - MaybeObject* maybe_map = array_function->initial_map()->Copy(); - Map* new_map; - if (!maybe_map->To(&new_map)) return Handle<JSFunction>::null(); - new_map->set_elements_kind(elements_kind); - array_function->set_initial_map(new_map); + Handle<Map> original_map(array_function->initial_map()); + Handle<Map> initial_map = factory()->CopyMap(original_map); + initial_map->set_elements_kind(elements_kind); + array_function->set_initial_map(*initial_map); // Make "length" magic on instances. - Handle<Map> initial_map(array_function->initial_map()); Handle<DescriptorArray> array_descriptors( factory()->NewDescriptorArray(0, 1)); DescriptorArray::WhitenessWitness witness(*array_descriptors); @@ -1870,14 +1882,11 @@ bool Genesis::InstallNatives() { { Handle<JSFunction> array_function = InstallInternalArray(builtins, "InternalArray", FAST_HOLEY_ELEMENTS); - if (array_function.is_null()) return false; native_context()->set_internal_array_function(*array_function); } { - Handle<JSFunction> array_function = - InstallInternalArray(builtins, "InternalPackedArray", FAST_ELEMENTS); - if (array_function.is_null()) return false; + InstallInternalArray(builtins, "InternalPackedArray", FAST_ELEMENTS); } if (FLAG_disable_native_files) { @@ -2129,7 +2138,8 @@ void Genesis::InstallJSFunctionResultCaches() { #undef F ; - Handle<FixedArray> caches = FACTORY->NewFixedArray(kNumberOfCaches, TENURED); + Handle<FixedArray> caches = + factory()->NewFixedArray(kNumberOfCaches, TENURED); int index = 0; @@ -2148,7 +2158,7 @@ void Genesis::InstallJSFunctionResultCaches() { void Genesis::InitializeNormalizedMapCaches() { Handle<FixedArray> array( - FACTORY->NewFixedArray(NormalizedMapCache::kEntries, TENURED)); + factory()->NewFixedArray(NormalizedMapCache::kEntries, TENURED)); native_context()->set_normalized_map_cache(NormalizedMapCache::cast(*array)); } @@ -2508,14 +2518,13 @@ void Genesis::TransferIndexedProperties(Handle<JSObject> from, // Cloning the elements array is sufficient. Handle<FixedArray> from_elements = Handle<FixedArray>(FixedArray::cast(from->elements())); - Handle<FixedArray> to_elements = FACTORY->CopyFixedArray(from_elements); + Handle<FixedArray> to_elements = factory()->CopyFixedArray(from_elements); to->set_elements(*to_elements); } void Genesis::TransferObject(Handle<JSObject> from, Handle<JSObject> to) { HandleScope outer(isolate()); - Factory* factory = isolate()->factory(); ASSERT(!from->IsJSArray()); ASSERT(!to->IsJSArray()); @@ -2525,7 +2534,7 @@ void Genesis::TransferObject(Handle<JSObject> from, Handle<JSObject> to) { // Transfer the prototype (new map is needed). Handle<Map> old_to_map = Handle<Map>(to->map()); - Handle<Map> new_to_map = factory->CopyMap(old_to_map); + Handle<Map> new_to_map = factory()->CopyMap(old_to_map); new_to_map->set_prototype(from->map()->prototype()); to->set_map(*new_to_map); } |