diff options
Diffstat (limited to 'deps/v8/src/factory.cc')
-rw-r--r-- | deps/v8/src/factory.cc | 96 |
1 files changed, 26 insertions, 70 deletions
diff --git a/deps/v8/src/factory.cc b/deps/v8/src/factory.cc index 143b34208..97289266e 100644 --- a/deps/v8/src/factory.cc +++ b/deps/v8/src/factory.cc @@ -234,7 +234,7 @@ Handle<String> Factory::NewProperSubString(Handle<String> str, Handle<String> Factory::NewExternalStringFromAscii( - const ExternalAsciiString::Resource* resource) { + ExternalAsciiString::Resource* resource) { CALL_HEAP_FUNCTION( isolate(), isolate()->heap()->AllocateExternalStringFromAscii(resource), @@ -243,7 +243,7 @@ Handle<String> Factory::NewExternalStringFromAscii( Handle<String> Factory::NewExternalStringFromTwoByte( - const ExternalTwoByteString::Resource* resource) { + ExternalTwoByteString::Resource* resource) { CALL_HEAP_FUNCTION( isolate(), isolate()->heap()->AllocateExternalStringFromTwoByte(resource), @@ -404,12 +404,10 @@ Handle<JSGlobalPropertyCell> Factory::NewJSGlobalPropertyCell( } -Handle<Map> Factory::NewMap(InstanceType type, - int instance_size, - ElementsKind elements_kind) { +Handle<Map> Factory::NewMap(InstanceType type, int instance_size) { CALL_HEAP_FUNCTION( isolate(), - isolate()->heap()->AllocateMap(type, instance_size, elements_kind), + isolate()->heap()->AllocateMap(type, instance_size), Map); } @@ -457,11 +455,23 @@ Handle<Map> Factory::CopyMapDropTransitions(Handle<Map> src) { } +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<JSObject> src, - ElementsKind elements_kind) { + Handle<Map> src, + ElementsKind elements_kind, + bool safe_to_add_transition) { CALL_HEAP_FUNCTION(isolate(), - src->GetElementsTransitionMap(elements_kind), + src->GetElementsTransitionMap(elements_kind, + safe_to_add_transition), Map); } @@ -631,16 +641,14 @@ Handle<Object> Factory::NewError(const char* maker, return undefined_value(); Handle<JSFunction> fun = Handle<JSFunction>::cast(fun_obj); Handle<Object> type_obj = LookupAsciiSymbol(type); - Handle<Object> argv[] = { type_obj, args }; + Object** argv[2] = { type_obj.location(), + Handle<Object>::cast(args).location() }; // Invoke the JavaScript factory method. If an exception is thrown while // running the factory method, use the exception as the result. bool caught_exception; Handle<Object> result = Execution::TryCall(fun, - isolate()->js_builtins_object(), - ARRAY_SIZE(argv), - argv, - &caught_exception); + isolate()->js_builtins_object(), 2, argv, &caught_exception); return result; } @@ -656,16 +664,13 @@ Handle<Object> Factory::NewError(const char* constructor, Handle<JSFunction> fun = Handle<JSFunction>( JSFunction::cast(isolate()->js_builtins_object()-> GetPropertyNoExceptionThrown(*constr))); - Handle<Object> argv[] = { message }; + Object** argv[1] = { Handle<Object>::cast(message).location() }; // Invoke the JavaScript factory method. If an exception is thrown while // running the factory method, use the exception as the result. bool caught_exception; Handle<Object> result = Execution::TryCall(fun, - isolate()->js_builtins_object(), - ARRAY_SIZE(argv), - argv, - &caught_exception); + isolate()->js_builtins_object(), 1, argv, &caught_exception); return result; } @@ -717,12 +722,7 @@ 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); + Handle<Map> initial_map = NewMap(type, instance_size); function->set_initial_map(*initial_map); initial_map->set_constructor(*function); } @@ -908,26 +908,11 @@ Handle<JSArray> Factory::NewJSArrayWithElements(Handle<FixedArray> elements, Handle<JSArray> result = Handle<JSArray>::cast(NewJSObject(isolate()->array_function(), pretenure)); - SetContent(result, elements); + result->SetContent(*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( @@ -953,13 +938,6 @@ void Factory::BecomeJSFunction(Handle<JSReceiver> object) { } -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, @@ -1012,12 +990,6 @@ Handle<String> Factory::NumberToString(Handle<Object> number) { } -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, @@ -1327,20 +1299,4 @@ void Factory::ConfigureInstance(Handle<FunctionTemplateInfo> desc, } -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(); -} - - -Handle<Object> Factory::ToBoolean(bool value) { - return Handle<Object>(value - ? isolate()->heap()->true_value() - : isolate()->heap()->false_value()); -} - - } } // namespace v8::internal |