diff options
author | Michaël Zasso <targos@protonmail.com> | 2018-03-07 08:54:53 +0100 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2018-03-07 16:48:52 +0100 |
commit | 88786fecff336342a56e6f2e7ff3b286be716e47 (patch) | |
tree | 92e6ba5b8ac8dae1a058988d20c9d27bfa654390 /deps/v8/src/builtins/ia32/builtins-ia32.cc | |
parent | 4e86f9b5ab83cbabf43839385bf383e6a7ef7d19 (diff) | |
download | node-new-88786fecff336342a56e6f2e7ff3b286be716e47.tar.gz |
deps: update V8 to 6.5.254.31
PR-URL: https://github.com/nodejs/node/pull/18453
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Yang Guo <yangguo@chromium.org>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Diffstat (limited to 'deps/v8/src/builtins/ia32/builtins-ia32.cc')
-rw-r--r-- | deps/v8/src/builtins/ia32/builtins-ia32.cc | 87 |
1 files changed, 45 insertions, 42 deletions
diff --git a/deps/v8/src/builtins/ia32/builtins-ia32.cc b/deps/v8/src/builtins/ia32/builtins-ia32.cc index 7635bada49..368e6670c1 100644 --- a/deps/v8/src/builtins/ia32/builtins-ia32.cc +++ b/deps/v8/src/builtins/ia32/builtins-ia32.cc @@ -211,13 +211,15 @@ void Generate_JSConstructStubGeneric(MacroAssembler* masm, __ Push(esi); __ Push(ecx); __ Push(edi); + __ PushRoot(Heap::kTheHoleValueRootIndex); __ Push(edx); // ----------- S t a t e ------------- // -- sp[0*kPointerSize]: new target - // -- edi and sp[1*kPointerSize]: constructor function - // -- sp[2*kPointerSize]: argument count - // -- sp[3*kPointerSize]: context + // -- sp[1*kPointerSize]: padding + // -- edi and sp[2*kPointerSize]: constructor function + // -- sp[3*kPointerSize]: argument count + // -- sp[4*kPointerSize]: context // ----------------------------------- __ mov(ebx, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset)); @@ -237,10 +239,11 @@ void Generate_JSConstructStubGeneric(MacroAssembler* masm, // ----------- S t a t e ------------- // -- eax: implicit receiver - // -- Slot 3 / sp[0*kPointerSize]: new target - // -- Slot 2 / sp[1*kPointerSize]: constructor function - // -- Slot 1 / sp[2*kPointerSize]: number of arguments (tagged) - // -- Slot 0 / sp[3*kPointerSize]: context + // -- Slot 4 / sp[0*kPointerSize]: new target + // -- Slot 3 / sp[1*kPointerSize]: padding + // -- Slot 2 / sp[2*kPointerSize]: constructor function + // -- Slot 1 / sp[3*kPointerSize]: number of arguments (tagged) + // -- Slot 0 / sp[4*kPointerSize]: context // ----------------------------------- // Deoptimizer enters here. masm->isolate()->heap()->SetConstructStubCreateDeoptPCOffset( @@ -260,9 +263,10 @@ void Generate_JSConstructStubGeneric(MacroAssembler* masm, // -- edx: new target // -- sp[0*kPointerSize]: implicit receiver // -- sp[1*kPointerSize]: implicit receiver - // -- sp[2*kPointerSize]: constructor function - // -- sp[3*kPointerSize]: number of arguments (tagged) - // -- sp[4*kPointerSize]: context + // -- sp[2*kPointerSize]: padding + // -- sp[3*kPointerSize]: constructor function + // -- sp[4*kPointerSize]: number of arguments (tagged) + // -- sp[5*kPointerSize]: context // ----------------------------------- // Restore constructor function and argument count. @@ -283,9 +287,10 @@ void Generate_JSConstructStubGeneric(MacroAssembler* masm, // -- ecx: counter (tagged) // -- sp[0*kPointerSize]: implicit receiver // -- sp[1*kPointerSize]: implicit receiver - // -- edi and sp[2*kPointerSize]: constructor function - // -- sp[3*kPointerSize]: number of arguments (tagged) - // -- sp[4*kPointerSize]: context + // -- sp[2*kPointerSize]: padding + // -- edi and sp[3*kPointerSize]: constructor function + // -- sp[4*kPointerSize]: number of arguments (tagged) + // -- sp[5*kPointerSize]: context // ----------------------------------- __ jmp(&entry, Label::kNear); __ bind(&loop); @@ -301,9 +306,10 @@ void Generate_JSConstructStubGeneric(MacroAssembler* masm, // ----------- S t a t e ------------- // -- eax: constructor result // -- sp[0*kPointerSize]: implicit receiver - // -- sp[1*kPointerSize]: constructor function - // -- sp[2*kPointerSize]: number of arguments - // -- sp[3*kPointerSize]: context + // -- sp[1*kPointerSize]: padding + // -- sp[2*kPointerSize]: constructor function + // -- sp[3*kPointerSize]: number of arguments + // -- sp[4*kPointerSize]: context // ----------------------------------- // Store offset of return address for deoptimizer. @@ -572,7 +578,7 @@ void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) { __ mov(ecx, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset)); __ mov(ecx, FieldOperand(ecx, SharedFunctionInfo::kFunctionDataOffset)); __ CmpObjectType(ecx, BYTECODE_ARRAY_TYPE, ecx); - __ Assert(equal, kMissingBytecodeArray); + __ Assert(equal, AbortReason::kMissingBytecodeArray); } // Resume (Ignition/TurboFan) generator object. @@ -694,6 +700,9 @@ static void MaybeTailCallOptimizedCodeSlot(MacroAssembler* masm, __ j(equal, &fallthrough); TailCallRuntimeIfMarkerEquals(masm, optimized_code_entry, + OptimizationMarker::kLogFirstExecution, + Runtime::kFunctionFirstExecution); + TailCallRuntimeIfMarkerEquals(masm, optimized_code_entry, OptimizationMarker::kCompileOptimized, Runtime::kCompileOptimized_NotConcurrent); TailCallRuntimeIfMarkerEquals( @@ -708,7 +717,7 @@ static void MaybeTailCallOptimizedCodeSlot(MacroAssembler* masm, __ cmp( optimized_code_entry, Immediate(Smi::FromEnum(OptimizationMarker::kInOptimizationQueue))); - __ Assert(equal, kExpectedOptimizationSentinel); + __ Assert(equal, AbortReason::kExpectedOptimizationSentinel); } __ jmp(&fallthrough); } @@ -791,7 +800,6 @@ static void AdvanceBytecodeOffset(MacroAssembler* masm, Register bytecode_array, __ movzx_b(bytecode, Operand(bytecode_array, bytecode_offset, times_1, 0)); __ add(bytecode_size_table, Immediate(2 * kIntSize * interpreter::Bytecodes::kBytecodeCount)); - __ jmp(&load_size, Label::kNear); // Load the size of the current bytecode. __ bind(&load_size); @@ -852,7 +860,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) { __ AssertNotSmi(kInterpreterBytecodeArrayRegister); __ CmpObjectType(kInterpreterBytecodeArrayRegister, BYTECODE_ARRAY_TYPE, eax); - __ Assert(equal, kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry); + __ Assert( + equal, + AbortReason::kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry); } // Reset code age. @@ -1239,7 +1249,9 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) { __ AssertNotSmi(kInterpreterBytecodeArrayRegister); __ CmpObjectType(kInterpreterBytecodeArrayRegister, BYTECODE_ARRAY_TYPE, ebx); - __ Assert(equal, kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry); + __ Assert( + equal, + AbortReason::kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry); } // Get the target bytecode offset from the frame. @@ -1300,7 +1312,7 @@ void Builtins::Generate_CheckOptimizationMarker(MacroAssembler* masm) { // The feedback vector must be defined. if (FLAG_debug_code) { __ CompareRoot(feedback_vector, Heap::kUndefinedValueRootIndex); - __ Assert(not_equal, BailoutReason::kExpectedFeedbackVector); + __ Assert(not_equal, AbortReason::kExpectedFeedbackVector); } // Is there an optimization marker or optimized code in the feedback vector? @@ -1818,9 +1830,11 @@ void Builtins::Generate_InternalArrayConstructor(MacroAssembler* masm) { __ mov(ebx, FieldOperand(edi, JSFunction::kPrototypeOrInitialMapOffset)); // Will both indicate a nullptr and a Smi. __ test(ebx, Immediate(kSmiTagMask)); - __ Assert(not_zero, kUnexpectedInitialMapForInternalArrayFunction); + __ Assert(not_zero, + AbortReason::kUnexpectedInitialMapForInternalArrayFunction); __ CmpObjectType(ebx, MAP_TYPE, ecx); - __ Assert(equal, kUnexpectedInitialMapForInternalArrayFunction); + __ Assert(equal, + AbortReason::kUnexpectedInitialMapForInternalArrayFunction); } // Run the native code for the InternalArray function called as a normal @@ -1847,9 +1861,9 @@ void Builtins::Generate_ArrayConstructor(MacroAssembler* masm) { __ mov(ebx, FieldOperand(edi, JSFunction::kPrototypeOrInitialMapOffset)); // Will both indicate a nullptr and a Smi. __ test(ebx, Immediate(kSmiTagMask)); - __ Assert(not_zero, kUnexpectedInitialMapForArrayFunction); + __ Assert(not_zero, AbortReason::kUnexpectedInitialMapForArrayFunction); __ CmpObjectType(ebx, MAP_TYPE, ecx); - __ Assert(equal, kUnexpectedInitialMapForArrayFunction); + __ Assert(equal, AbortReason::kUnexpectedInitialMapForArrayFunction); } // Run the native code for the Array function called as a normal function. @@ -1875,6 +1889,8 @@ static void EnterArgumentsAdaptorFrame(MacroAssembler* masm) { STATIC_ASSERT(kSmiTagSize == 1); __ lea(edi, Operand(eax, eax, times_1, kSmiTag)); __ push(edi); + + __ Push(Immediate(0)); // Padding. } static void LeaveArgumentsAdaptorFrame(MacroAssembler* masm) { @@ -1980,7 +1996,7 @@ void Builtins::Generate_CallOrConstructForwardVarargs(MacroAssembler* masm, __ JumpIfSmi(edx, &new_target_not_constructor, Label::kNear); __ mov(ebx, FieldOperand(edx, HeapObject::kMapOffset)); __ test_b(FieldOperand(ebx, Map::kBitFieldOffset), - Immediate(1 << Map::kIsConstructor)); + Immediate(Map::IsConstructorBit::kMask)); __ j(not_zero, &new_target_constructor, Label::kNear); __ bind(&new_target_not_constructor); { @@ -2294,7 +2310,7 @@ void Builtins::Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode) { // Check if target is a proxy and call CallProxy external builtin __ test_b(FieldOperand(ecx, Map::kBitFieldOffset), - Immediate(1 << Map::kIsCallable)); + Immediate(Map::IsCallableBit::kMask)); __ j(zero, &non_callable); // Call CallProxy external builtin @@ -2389,7 +2405,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) { // Check if target has a [[Construct]] internal method. __ test_b(FieldOperand(ecx, Map::kBitFieldOffset), - Immediate(1 << Map::kIsConstructor)); + Immediate(Map::IsConstructorBit::kMask)); __ j(zero, &non_constructor, Label::kNear); // Only dispatch to bound functions after checking whether they are @@ -2464,19 +2480,6 @@ void Builtins::Generate_Abort(MacroAssembler* masm) { __ TailCallRuntime(Runtime::kAbort); } -// static -void Builtins::Generate_AbortJS(MacroAssembler* masm) { - // ----------- S t a t e ------------- - // -- edx : message as String object - // -- esp[0] : return address - // ----------------------------------- - __ PopReturnAddressTo(ecx); - __ Push(edx); - __ PushReturnAddressFrom(ecx); - __ Move(esi, Smi::kZero); - __ TailCallRuntime(Runtime::kAbortJS); -} - void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) { // ----------- S t a t e ------------- // -- eax : actual number of arguments |