diff options
Diffstat (limited to 'deps/v8/src/builtins/builtins-call-gen.cc')
-rw-r--r-- | deps/v8/src/builtins/builtins-call-gen.cc | 61 |
1 files changed, 46 insertions, 15 deletions
diff --git a/deps/v8/src/builtins/builtins-call-gen.cc b/deps/v8/src/builtins/builtins-call-gen.cc index 4defe28cb7..e23f13d2b3 100644 --- a/deps/v8/src/builtins/builtins-call-gen.cc +++ b/deps/v8/src/builtins/builtins-call-gen.cc @@ -17,45 +17,75 @@ namespace internal { void Builtins::Generate_CallFunction_ReceiverIsNullOrUndefined( MacroAssembler* masm) { +#ifdef V8_TARGET_ARCH_IA32 + Assembler::SupportsRootRegisterScope supports_root_register(masm); +#endif Generate_CallFunction(masm, ConvertReceiverMode::kNullOrUndefined); } void Builtins::Generate_CallFunction_ReceiverIsNotNullOrUndefined( MacroAssembler* masm) { +#ifdef V8_TARGET_ARCH_IA32 + Assembler::SupportsRootRegisterScope supports_root_register(masm); +#endif Generate_CallFunction(masm, ConvertReceiverMode::kNotNullOrUndefined); } void Builtins::Generate_CallFunction_ReceiverIsAny(MacroAssembler* masm) { +#ifdef V8_TARGET_ARCH_IA32 + Assembler::SupportsRootRegisterScope supports_root_register(masm); +#endif Generate_CallFunction(masm, ConvertReceiverMode::kAny); } void Builtins::Generate_CallBoundFunction(MacroAssembler* masm) { +#ifdef V8_TARGET_ARCH_IA32 + Assembler::SupportsRootRegisterScope supports_root_register(masm); +#endif Generate_CallBoundFunctionImpl(masm); } void Builtins::Generate_Call_ReceiverIsNullOrUndefined(MacroAssembler* masm) { +#ifdef V8_TARGET_ARCH_IA32 + Assembler::SupportsRootRegisterScope supports_root_register(masm); +#endif Generate_Call(masm, ConvertReceiverMode::kNullOrUndefined); } void Builtins::Generate_Call_ReceiverIsNotNullOrUndefined( MacroAssembler* masm) { +#ifdef V8_TARGET_ARCH_IA32 + Assembler::SupportsRootRegisterScope supports_root_register(masm); +#endif Generate_Call(masm, ConvertReceiverMode::kNotNullOrUndefined); } void Builtins::Generate_Call_ReceiverIsAny(MacroAssembler* masm) { +#ifdef V8_TARGET_ARCH_IA32 + Assembler::SupportsRootRegisterScope supports_root_register(masm); +#endif Generate_Call(masm, ConvertReceiverMode::kAny); } void Builtins::Generate_CallVarargs(MacroAssembler* masm) { +#ifdef V8_TARGET_ARCH_IA32 + Assembler::SupportsRootRegisterScope supports_root_register(masm); +#endif Generate_CallOrConstructVarargs(masm, masm->isolate()->builtins()->Call()); } void Builtins::Generate_CallForwardVarargs(MacroAssembler* masm) { +#ifdef V8_TARGET_ARCH_IA32 + Assembler::SupportsRootRegisterScope supports_root_register(masm); +#endif Generate_CallOrConstructForwardVarargs(masm, CallOrConstructMode::kCall, masm->isolate()->builtins()->Call()); } void Builtins::Generate_CallFunctionForwardVarargs(MacroAssembler* masm) { +#ifdef V8_TARGET_ARCH_IA32 + Assembler::SupportsRootRegisterScope supports_root_register(masm); +#endif Generate_CallOrConstructForwardVarargs( masm, CallOrConstructMode::kCall, masm->isolate()->builtins()->CallFunction()); @@ -163,9 +193,9 @@ void CallOrConstructBuiltinsAssembler::CallOrConstructWithArrayLike( BIND(&if_arguments); { TNode<JSArgumentsObject> js_arguments = CAST(arguments_list); - // Try to extract the elements from an JSArgumentsObject. - TNode<Object> length = - LoadObjectField(js_arguments, JSArgumentsObject::kLengthOffset); + // Try to extract the elements from an JSArgumentsObjectWithLength. + TNode<Object> length = LoadObjectField( + js_arguments, JSArgumentsObjectWithLength::kLengthOffset); TNode<FixedArrayBase> elements = LoadElements(js_arguments); TNode<Smi> elements_length = LoadFixedArrayBaseLength(elements); GotoIfNot(WordEqual(length, elements_length), &if_runtime); @@ -211,11 +241,11 @@ void CallOrConstructBuiltinsAssembler::CallOrConstructWithArrayLike( { if (new_target == nullptr) { Callable callable = CodeFactory::CallVarargs(isolate()); - TailCallStub(callable, context, target, args_count, elements, length); + TailCallStub(callable, context, target, args_count, length, elements); } else { Callable callable = CodeFactory::ConstructVarargs(isolate()); - TailCallStub(callable, context, target, new_target, args_count, - elements, length); + TailCallStub(callable, context, target, new_target, args_count, length, + elements); } } @@ -266,11 +296,11 @@ void CallOrConstructBuiltinsAssembler::CallOrConstructDoubleVarargs( { if (new_target == nullptr) { Callable callable = CodeFactory::CallVarargs(isolate()); - TailCallStub(callable, context, target, args_count, new_elements, length); + TailCallStub(callable, context, target, args_count, length, new_elements); } else { Callable callable = CodeFactory::ConstructVarargs(isolate()); - TailCallStub(callable, context, target, new_target, args_count, - new_elements, length); + TailCallStub(callable, context, target, new_target, args_count, length, + new_elements); } } } @@ -299,7 +329,7 @@ void CallOrConstructBuiltinsAssembler::CallOrConstructWithSpread( // Check that the Array.prototype hasn't been modified in a way that would // affect iteration. TNode<PropertyCell> protector_cell = - CAST(LoadRoot(Heap::kArrayIteratorProtectorRootIndex)); + CAST(LoadRoot(RootIndex::kArrayIteratorProtector)); GotoIf(WordEqual(LoadObjectField(protector_cell, PropertyCell::kValueOffset), SmiConstant(Isolate::kProtectorInvalid)), &if_generic); @@ -325,8 +355,9 @@ void CallOrConstructBuiltinsAssembler::CallOrConstructWithSpread( TNode<Object> iterator_fn = GetProperty(context, spread, IteratorSymbolConstant()); GotoIfNot(TaggedIsCallable(iterator_fn), &if_iterator_fn_not_callable); - TNode<JSArray> list = CAST( - CallBuiltin(Builtins::kIterableToList, context, spread, iterator_fn)); + TNode<JSArray> list = + CAST(CallBuiltin(Builtins::kIterableToListMayPreserveHoles, context, + spread, iterator_fn)); var_length = LoadAndUntagToWord32ObjectField(list, JSArray::kLengthOffset); var_elements = LoadElements(list); @@ -346,11 +377,11 @@ void CallOrConstructBuiltinsAssembler::CallOrConstructWithSpread( if (new_target == nullptr) { Callable callable = CodeFactory::CallVarargs(isolate()); - TailCallStub(callable, context, target, args_count, elements, length); + TailCallStub(callable, context, target, args_count, length, elements); } else { Callable callable = CodeFactory::ConstructVarargs(isolate()); - TailCallStub(callable, context, target, new_target, args_count, elements, - length); + TailCallStub(callable, context, target, new_target, args_count, length, + elements); } } |