From 77c582d253bfa06e02f453a8f42df0158878ace5 Mon Sep 17 00:00:00 2001 From: "jkummerow@chromium.org" Date: Wed, 3 Jul 2013 15:36:49 +0000 Subject: [PATCH] Format stack layout comments for X64 R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/18607002 Patch from Haitao Feng . git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15481 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/x64/builtins-x64.cc | 62 ++++++++--------- src/x64/code-stubs-x64.cc | 116 +++++++++++++++---------------- src/x64/ic-x64.cc | 154 ++++++++++++++++++++--------------------- src/x64/macro-assembler-x64.cc | 4 +- src/x64/macro-assembler-x64.h | 2 +- src/x64/stub-cache-x64.cc | 27 ++++---- 6 files changed, 183 insertions(+), 182 deletions(-) diff --git a/src/x64/builtins-x64.cc b/src/x64/builtins-x64.cc index 378217b..2b44a77 100644 --- a/src/x64/builtins-x64.cc +++ b/src/x64/builtins-x64.cc @@ -44,15 +44,15 @@ void Builtins::Generate_Adaptor(MacroAssembler* masm, CFunctionId id, BuiltinExtraArguments extra_args) { // ----------- S t a t e ------------- - // -- rax : number of arguments excluding receiver - // -- rdi : called function (only guaranteed when - // extra_args requires it) - // -- rsi : context - // -- rsp[0] : return address - // -- rsp[8] : last argument + // -- rax : number of arguments excluding receiver + // -- rdi : called function (only guaranteed when + // extra_args requires it) + // -- rsi : context + // -- rsp[0] : return address + // -- rsp[8] : last argument // -- ... - // -- rsp[8 * argc] : first argument (argc == rax) - // -- rsp[8 * (argc +1)] : receiver + // -- rsp[8 * argc] : first argument (argc == rax) + // -- rsp[8 * (argc + 1)] : receiver // ----------------------------------- // Insert extra arguments. @@ -475,10 +475,10 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm, #ifdef _WIN64 // MSVC parameters in: - // rcx : entry (ignored) - // rdx : function - // r8 : receiver - // r9 : argc + // rcx : entry (ignored) + // rdx : function + // r8 : receiver + // r9 : argc // [rsp+0x20] : argv // Clear the context before we push it when entering the internal frame. @@ -527,9 +527,9 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm, #endif // _WIN64 // Current stack contents: - // [rsp + 2 * kPointerSize ... ]: Internal frame - // [rsp + kPointerSize] : function - // [rsp] : receiver + // [rsp + 2 * kPointerSize ... ] : Internal frame + // [rsp + kPointerSize] : function + // [rsp] : receiver // Current register contents: // rax : argc // rbx : argv @@ -758,12 +758,12 @@ void Builtins::Generate_NotifyOSR(MacroAssembler* masm) { void Builtins::Generate_FunctionCall(MacroAssembler* masm) { // Stack Layout: - // rsp[0]: Return address - // rsp[1]: Argument n - // rsp[2]: Argument n-1 + // rsp[0] : Return address + // rsp[8] : Argument n + // rsp[16] : Argument n-1 // ... - // rsp[n]: Argument 1 - // rsp[n+1]: Receiver (function to call) + // rsp[8 * n] : Argument 1 + // rsp[8 * (n + 1)] : Receiver (function to call) // // rax contains the number of arguments, n, not counting the receiver. // @@ -931,18 +931,18 @@ void Builtins::Generate_FunctionCall(MacroAssembler* masm) { void Builtins::Generate_FunctionApply(MacroAssembler* masm) { // Stack at entry: - // rsp: return address - // rsp+8: arguments - // rsp+16: receiver ("this") - // rsp+24: function + // rsp : return address + // rsp[8] : arguments + // rsp[16] : receiver ("this") + // rsp[24] : function { FrameScope frame_scope(masm, StackFrame::INTERNAL); // Stack frame: - // rbp: Old base pointer - // rbp[1]: return address - // rbp[2]: function arguments - // rbp[3]: receiver - // rbp[4]: function + // rbp : Old base pointer + // rbp[8] : return address + // rbp[16] : function arguments + // rbp[24] : receiver + // rbp[32] : function static const int kArgumentsOffset = 2 * kPointerSize; static const int kReceiverOffset = 3 * kPointerSize; static const int kFunctionOffset = 4 * kPointerSize; @@ -1097,7 +1097,7 @@ void Builtins::Generate_FunctionApply(MacroAssembler* masm) { void Builtins::Generate_InternalArrayCode(MacroAssembler* masm) { // ----------- S t a t e ------------- - // -- rax : argc + // -- rax : argc // -- rsp[0] : return address // -- rsp[8] : last argument // ----------------------------------- @@ -1127,7 +1127,7 @@ void Builtins::Generate_InternalArrayCode(MacroAssembler* masm) { void Builtins::Generate_ArrayCode(MacroAssembler* masm) { // ----------- S t a t e ------------- - // -- rax : argc + // -- rax : argc // -- rsp[0] : return address // -- rsp[8] : last argument // ----------------------------------- diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc index 279f62c..31e2353 100644 --- a/src/x64/code-stubs-x64.cc +++ b/src/x64/code-stubs-x64.cc @@ -265,7 +265,7 @@ void HydrogenCodeStub::GenerateLightweightMiss(MacroAssembler* masm) { void ToNumberStub::Generate(MacroAssembler* masm) { - // The ToNumber stub takes one argument in eax. + // The ToNumber stub takes one argument in rax. Label check_heap_number, call_builtin; __ SmiTest(rax); __ j(not_zero, &check_heap_number, Label::kNear); @@ -344,7 +344,7 @@ void FastNewClosureStub::Generate(MacroAssembler* masm) { __ IncrementCounter(counters->fast_new_closure_try_optimized(), 1); - // rcx holds native context, ebx points to fixed array of 3-element entries + // rcx holds native context, rbx points to fixed array of 3-element entries // (native context, optimized code, literals). // The optimized code map must never be empty, so check the first elements. Label install_optimized; @@ -463,8 +463,8 @@ void FastNewContextStub::Generate(MacroAssembler* masm) { void FastNewBlockContextStub::Generate(MacroAssembler* masm) { // Stack layout on entry: // - // [rsp + (1 * kPointerSize)]: function - // [rsp + (2 * kPointerSize)]: serialized scope info + // [rsp + (1 * kPointerSize)] : function + // [rsp + (2 * kPointerSize)] : serialized scope info // Try to allocate the context in new space. Label gc; @@ -1182,7 +1182,7 @@ static void BinaryOpStub_GenerateHeapResultAllocation(MacroAssembler* masm, // If the argument in rdx is already an object, we skip the // allocation of a heap number. __ JumpIfNotSmi(rdx, &skip_allocation); - // Allocate a heap number for the result. Keep eax and edx intact + // Allocate a heap number for the result. Keep rax and rdx intact // for the possible runtime call. __ AllocateHeapNumber(rbx, rcx, alloc_failure); // Now rdx can be overwritten losing one of the arguments as we are @@ -1221,16 +1221,16 @@ void BinaryOpStub::GenerateRegisterArgsPush(MacroAssembler* masm) { void TranscendentalCacheStub::Generate(MacroAssembler* masm) { // TAGGED case: // Input: - // rsp[8]: argument (should be number). - // rsp[0]: return address. + // rsp[8] : argument (should be number). + // rsp[0] : return address. // Output: // rax: tagged double result. // UNTAGGED case: // Input:: - // rsp[0]: return address. - // xmm1: untagged double input argument + // rsp[0] : return address. + // xmm1 : untagged double input argument // Output: - // xmm1: untagged double result. + // xmm1 : untagged double result. Label runtime_call; Label runtime_call_clear_stack; @@ -1971,7 +1971,7 @@ void MathPowStub::Generate(MacroAssembler* masm) { __ TailCallRuntime(Runtime::kMath_pow_cfunction, 2, 1); // The stub is called from non-optimized code, which expects the result - // as heap number in eax. + // as heap number in rax. __ bind(&done); __ AllocateHeapNumber(rax, rcx, &call_runtime); __ movsd(FieldOperand(rax, HeapNumber::kValueOffset), double_result); @@ -2182,8 +2182,8 @@ void ArgumentsAccessStub::GenerateReadElement(MacroAssembler* masm) { void ArgumentsAccessStub::GenerateNewNonStrictFast(MacroAssembler* masm) { // Stack layout: - // rsp[0] : return address - // rsp[8] : number of parameters (tagged) + // rsp[0] : return address + // rsp[8] : number of parameters (tagged) // rsp[16] : receiver displacement // rsp[24] : function // Registers used over the whole function: @@ -2398,10 +2398,10 @@ void ArgumentsAccessStub::GenerateNewNonStrictFast(MacroAssembler* masm) { void ArgumentsAccessStub::GenerateNewNonStrictSlow(MacroAssembler* masm) { - // esp[0] : return address - // esp[8] : number of parameters - // esp[16] : receiver displacement - // esp[24] : function + // rsp[0] : return address + // rsp[8] : number of parameters + // rsp[16] : receiver displacement + // rsp[24] : function // Check if the calling frame is an arguments adaptor frame. Label runtime; @@ -2424,8 +2424,8 @@ void ArgumentsAccessStub::GenerateNewNonStrictSlow(MacroAssembler* masm) { void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) { - // rsp[0] : return address - // rsp[8] : number of parameters + // rsp[0] : return address + // rsp[8] : number of parameters // rsp[16] : receiver displacement // rsp[24] : function @@ -2532,11 +2532,11 @@ void RegExpExecStub::Generate(MacroAssembler* masm) { #else // V8_INTERPRETED_REGEXP // Stack frame on entry. - // rsp[0]: return address - // rsp[8]: last_match_info (expected JSArray) - // rsp[16]: previous index - // rsp[24]: subject string - // rsp[32]: JSRegExp object + // rsp[0] : return address + // rsp[8] : last_match_info (expected JSArray) + // rsp[16] : previous index + // rsp[24] : subject string + // rsp[32] : JSRegExp object static const int kLastMatchInfoOffset = 1 * kPointerSize; static const int kPreviousIndexOffset = 2 * kPointerSize; @@ -4141,14 +4141,14 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) { void InstanceofStub::Generate(MacroAssembler* masm) { // Implements "value instanceof function" operator. // Expected input state with no inline cache: - // rsp[0] : return address - // rsp[1] : function pointer - // rsp[2] : value + // rsp[0] : return address + // rsp[8] : function pointer + // rsp[16] : value // Expected input state with an inline one-element cache: - // rsp[0] : return address - // rsp[1] : offset from return address to location of inline cache - // rsp[2] : function pointer - // rsp[3] : value + // rsp[0] : return address + // rsp[8] : offset from return address to location of inline cache + // rsp[16] : function pointer + // rsp[24] : value // Returns a bitwise zero to indicate that the value // is and instance of the function and anything else to // indicate that the value is not an instance. @@ -5090,10 +5090,10 @@ void SubStringStub::Generate(MacroAssembler* masm) { Label runtime; // Stack frame on entry. - // rsp[0]: return address - // rsp[8]: to - // rsp[16]: from - // rsp[24]: string + // rsp[0] : return address + // rsp[8] : to + // rsp[16] : from + // rsp[24] : string const int kToOffset = 1 * kPointerSize; const int kFromOffset = kToOffset + kPointerSize; @@ -5452,9 +5452,9 @@ void StringCompareStub::Generate(MacroAssembler* masm) { Label runtime; // Stack frame on entry. - // rsp[0]: return address - // rsp[8]: right string - // rsp[16]: left string + // rsp[0] : return address + // rsp[8] : right string + // rsp[16] : left string __ movq(rdx, Operand(rsp, 2 * kPointerSize)); // left __ movq(rax, Operand(rsp, 1 * kPointerSize)); // right @@ -5951,9 +5951,9 @@ void NameDictionaryLookupStub::Generate(MacroAssembler* masm) { // This stub overrides SometimesSetsUpAFrame() to return false. That means // we cannot call anything that could cause a GC from this stub. // Stack frame on entry: - // esp[0 * kPointerSize]: return address. - // esp[1 * kPointerSize]: key's hash. - // esp[2 * kPointerSize]: key. + // rsp[0 * kPointerSize] : return address. + // rsp[1 * kPointerSize] : key's hash. + // rsp[2 * kPointerSize] : key. // Registers: // dictionary_: NameDictionary to probe. // result_: used as scratch. @@ -6334,11 +6334,11 @@ void RecordWriteStub::CheckNeedsToInformIncrementalMarker( void StoreArrayLiteralElementStub::Generate(MacroAssembler* masm) { // ----------- S t a t e ------------- - // -- rax : element value to store - // -- rcx : element index as smi - // -- rsp[0] : return address - // -- rsp[8] : array literal index in function - // -- rsp[16]: array literal + // -- rax : element value to store + // -- rcx : element index as smi + // -- rsp[0] : return address + // -- rsp[8] : array literal index in function + // -- rsp[16] : array literal // clobbers rbx, rdx, rdi // ----------------------------------- @@ -6500,8 +6500,8 @@ static void CreateArrayDispatchOneArgument(MacroAssembler* masm) { // rdx - kind // rax - number of arguments // rdi - constructor? - // esp[0] - return address - // esp[4] - last argument + // rsp[0] - return address + // rsp[8] - last argument ASSERT(FAST_SMI_ELEMENTS == 0); ASSERT(FAST_HOLEY_SMI_ELEMENTS == 1); ASSERT(FAST_ELEMENTS == 2); @@ -6599,11 +6599,11 @@ void InternalArrayConstructorStubBase::GenerateStubsAheadOfTime( void ArrayConstructorStub::Generate(MacroAssembler* masm) { // ----------- S t a t e ------------- - // -- rax : argc - // -- rbx : type info cell - // -- rdi : constructor + // -- rax : argc + // -- rbx : type info cell + // -- rdi : constructor // -- rsp[0] : return address - // -- rsp[4] : last argument + // -- rsp[8] : last argument // ----------------------------------- Handle undefined_sentinel( masm->isolate()->heap()->undefined_value(), @@ -6622,7 +6622,7 @@ void ArrayConstructorStub::Generate(MacroAssembler* masm) { __ CmpObjectType(rcx, MAP_TYPE, rcx); __ Check(equal, "Unexpected initial map for Array function"); - // We should either have undefined in ebx or a valid cell + // We should either have undefined in rbx or a valid cell Label okay_here; Handle cell_map = masm->isolate()->factory()->cell_map(); __ Cmp(rbx, undefined_sentinel); @@ -6707,11 +6707,11 @@ void InternalArrayConstructorStub::GenerateCase( void InternalArrayConstructorStub::Generate(MacroAssembler* masm) { // ----------- S t a t e ------------- - // -- eax : argc - // -- ebx : type info cell - // -- edi : constructor - // -- esp[0] : return address - // -- esp[4] : last argument + // -- rax : argc + // -- rbx : type info cell + // -- rdi : constructor + // -- rsp[0] : return address + // -- rsp[8] : last argument // ----------------------------------- if (FLAG_debug_code) { diff --git a/src/x64/ic-x64.cc b/src/x64/ic-x64.cc index a0f3ead..a8de443 100644 --- a/src/x64/ic-x64.cc +++ b/src/x64/ic-x64.cc @@ -712,10 +712,10 @@ static void KeyedStoreGenerateGenericHelper( void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm, StrictModeFlag strict_mode) { // ----------- S t a t e ------------- - // -- rax : value - // -- rcx : key - // -- rdx : receiver - // -- rsp[0] : return address + // -- rax : value + // -- rcx : key + // -- rdx : receiver + // -- rsp[0] : return address // ----------------------------------- Label slow, slow_with_tagged_index, fast_object, fast_object_grow; Label fast_double, fast_double_grow; @@ -870,14 +870,14 @@ static void GenerateFunctionTailCall(MacroAssembler* masm, int argc, Label* miss) { // ----------- S t a t e ------------- - // rcx : function name - // rdi : function - // rsp[0] : return address - // rsp[8] : argument argc - // rsp[16] : argument argc - 1 + // rcx : function name + // rdi : function + // rsp[0] : return address + // rsp[8] : argument argc + // rsp[16] : argument argc - 1 // ... - // rsp[argc * 8] : argument 1 - // rsp[(argc + 1) * 8] : argument 0 = receiver + // rsp[argc * 8] : argument 1 + // rsp[(argc + 1) * 8] : argument 0 = receiver // ----------------------------------- __ JumpIfSmi(rdi, miss); // Check that the value is a JavaScript function. @@ -894,13 +894,13 @@ static void GenerateFunctionTailCall(MacroAssembler* masm, // The generated code falls through if the call should be handled by runtime. void CallICBase::GenerateNormal(MacroAssembler* masm, int argc) { // ----------- S t a t e ------------- - // rcx : function name - // rsp[0] : return address - // rsp[8] : argument argc - // rsp[16] : argument argc - 1 + // rcx : function name + // rsp[0] : return address + // rsp[8] : argument argc + // rsp[16] : argument argc - 1 // ... - // rsp[argc * 8] : argument 1 - // rsp[(argc + 1) * 8] : argument 0 = receiver + // rsp[argc * 8] : argument 1 + // rsp[(argc + 1) * 8] : argument 0 = receiver // ----------------------------------- Label miss; @@ -924,13 +924,13 @@ void CallICBase::GenerateMiss(MacroAssembler* masm, IC::UtilityId id, Code::ExtraICState extra_state) { // ----------- S t a t e ------------- - // rcx : function name - // rsp[0] : return address - // rsp[8] : argument argc - // rsp[16] : argument argc - 1 + // rcx : function name + // rsp[0] : return address + // rsp[8] : argument argc + // rsp[16] : argument argc - 1 // ... - // rsp[argc * 8] : argument 1 - // rsp[(argc + 1) * 8] : argument 0 = receiver + // rsp[argc * 8] : argument 1 + // rsp[(argc + 1) * 8] : argument 0 = receiver // ----------------------------------- Counters* counters = masm->isolate()->counters(); @@ -996,13 +996,13 @@ void CallIC::GenerateMegamorphic(MacroAssembler* masm, int argc, Code::ExtraICState extra_ic_state) { // ----------- S t a t e ------------- - // rcx : function name - // rsp[0] : return address - // rsp[8] : argument argc - // rsp[16] : argument argc - 1 + // rcx : function name + // rsp[0] : return address + // rsp[8] : argument argc + // rsp[16] : argument argc - 1 // ... - // rsp[argc * 8] : argument 1 - // rsp[(argc + 1) * 8] : argument 0 = receiver + // rsp[argc * 8] : argument 1 + // rsp[(argc + 1) * 8] : argument 0 = receiver // ----------------------------------- // Get the receiver of the function from the stack; 1 ~ return address. @@ -1014,13 +1014,13 @@ void CallIC::GenerateMegamorphic(MacroAssembler* masm, void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) { // ----------- S t a t e ------------- - // rcx : function name - // rsp[0] : return address - // rsp[8] : argument argc - // rsp[16] : argument argc - 1 + // rcx : function name + // rsp[0] : return address + // rsp[8] : argument argc + // rsp[16] : argument argc - 1 // ... - // rsp[argc * 8] : argument 1 - // rsp[(argc + 1) * 8] : argument 0 = receiver + // rsp[argc * 8] : argument 1 + // rsp[(argc + 1) * 8] : argument 0 = receiver // ----------------------------------- // Get the receiver of the function from the stack; 1 ~ return address. @@ -1125,13 +1125,13 @@ void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) { void KeyedCallIC::GenerateNormal(MacroAssembler* masm, int argc) { // ----------- S t a t e ------------- - // rcx : function name - // rsp[0] : return address - // rsp[8] : argument argc - // rsp[16] : argument argc - 1 + // rcx : function name + // rsp[0] : return address + // rsp[8] : argument argc + // rsp[16] : argument argc - 1 // ... - // rsp[argc * 8] : argument 1 - // rsp[(argc + 1) * 8] : argument 0 = receiver + // rsp[argc * 8] : argument 1 + // rsp[(argc + 1) * 8] : argument 0 = receiver // ----------------------------------- // Check if the name is really a name. @@ -1230,7 +1230,7 @@ void KeyedLoadIC::GenerateNonStrictArguments(MacroAssembler* masm) { // ----------- S t a t e ------------- // -- rax : key // -- rdx : receiver - // -- rsp[0] : return address + // -- rsp[0] : return address // ----------------------------------- Label slow, notin; Operand mapped_location = @@ -1253,10 +1253,10 @@ void KeyedLoadIC::GenerateNonStrictArguments(MacroAssembler* masm) { void KeyedStoreIC::GenerateNonStrictArguments(MacroAssembler* masm) { // ----------- S t a t e ------------- - // -- rax : value - // -- rcx : key - // -- rdx : receiver - // -- rsp[0] : return address + // -- rax : value + // -- rcx : key + // -- rdx : receiver + // -- rsp[0] : return address // ----------------------------------- Label slow, notin; Operand mapped_location = GenerateMappedArgumentsLookup( @@ -1293,13 +1293,13 @@ void KeyedStoreIC::GenerateNonStrictArguments(MacroAssembler* masm) { void KeyedCallIC::GenerateNonStrictArguments(MacroAssembler* masm, int argc) { // ----------- S t a t e ------------- - // rcx : function name - // rsp[0] : return address - // rsp[8] : argument argc - // rsp[16] : argument argc - 1 + // rcx : function name + // rsp[0] : return address + // rsp[8] : argument argc + // rsp[16] : argument argc - 1 // ... - // rsp[argc * 8] : argument 1 - // rsp[(argc + 1) * 8] : argument 0 = receiver + // rsp[argc * 8] : argument 1 + // rsp[(argc + 1) * 8] : argument 0 = receiver // ----------------------------------- Label slow, notin; __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize)); @@ -1385,7 +1385,7 @@ void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) { // ----------- S t a t e ------------- // -- rax : receiver // -- rcx : name - // -- rsp[0] : return address + // -- rsp[0] : return address // ----------------------------------- __ pop(rbx); @@ -1402,7 +1402,7 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) { // ----------- S t a t e ------------- // -- rax : key // -- rdx : receiver - // -- rsp[0] : return address + // -- rsp[0] : return address // ----------------------------------- Counters* counters = masm->isolate()->counters(); @@ -1426,7 +1426,7 @@ void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) { // ----------- S t a t e ------------- // -- rax : key // -- rdx : receiver - // -- rsp[0] : return address + // -- rsp[0] : return address // ----------------------------------- __ pop(rbx); @@ -1527,10 +1527,10 @@ void StoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm, void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm, StrictModeFlag strict_mode) { // ----------- S t a t e ------------- - // -- rax : value - // -- rcx : key - // -- rdx : receiver - // -- rsp[0] : return address + // -- rax : value + // -- rcx : key + // -- rdx : receiver + // -- rsp[0] : return address // ----------------------------------- __ pop(rbx); @@ -1548,10 +1548,10 @@ void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm, void StoreIC::GenerateSlow(MacroAssembler* masm) { // ----------- S t a t e ------------- - // -- rax : value - // -- rcx : key - // -- rdx : receiver - // -- rsp[0] : return address + // -- rax : value + // -- rcx : key + // -- rdx : receiver + // -- rsp[0] : return address // ----------------------------------- __ pop(rbx); @@ -1568,10 +1568,10 @@ void StoreIC::GenerateSlow(MacroAssembler* masm) { void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { // ----------- S t a t e ------------- - // -- rax : value - // -- rcx : key - // -- rdx : receiver - // -- rsp[0] : return address + // -- rax : value + // -- rcx : key + // -- rdx : receiver + // -- rsp[0] : return address // ----------------------------------- __ pop(rbx); @@ -1588,10 +1588,10 @@ void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { void KeyedStoreIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) { // ----------- S t a t e ------------- - // -- rax : value - // -- rcx : key - // -- rdx : receiver - // -- rsp[0] : return address + // -- rax : value + // -- rcx : key + // -- rdx : receiver + // -- rsp[0] : return address // ----------------------------------- __ pop(rbx); @@ -1611,9 +1611,9 @@ void KeyedStoreIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) { void KeyedStoreIC::GenerateTransitionElementsSmiToDouble(MacroAssembler* masm) { // ----------- S t a t e ------------- - // -- rbx : target map - // -- rdx : receiver - // -- rsp[0] : return address + // -- rbx : target map + // -- rdx : receiver + // -- rsp[0] : return address // ----------------------------------- // Must return the modified receiver in eax. if (!FLAG_trace_elements_transitions) { @@ -1636,9 +1636,9 @@ void KeyedStoreIC::GenerateTransitionElementsSmiToDouble(MacroAssembler* masm) { void KeyedStoreIC::GenerateTransitionElementsDoubleToObject( MacroAssembler* masm) { // ----------- S t a t e ------------- - // -- rbx : target map - // -- rdx : receiver - // -- rsp[0] : return address + // -- rbx : target map + // -- rdx : receiver + // -- rsp[0] : return address // ----------------------------------- // Must return the modified receiver in eax. if (!FLAG_trace_elements_transitions) { diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc index fdeee31..a1dbc67 100644 --- a/src/x64/macro-assembler-x64.cc +++ b/src/x64/macro-assembler-x64.cc @@ -645,8 +645,8 @@ void MacroAssembler::TailCallExternalReference(const ExternalReference& ext, int num_arguments, int result_size) { // ----------- S t a t e ------------- - // -- rsp[0] : return address - // -- rsp[8] : argument num_arguments - 1 + // -- rsp[0] : return address + // -- rsp[8] : argument num_arguments - 1 // ... // -- rsp[8 * num_arguments] : argument 0 (receiver) // ----------------------------------- diff --git a/src/x64/macro-assembler-x64.h b/src/x64/macro-assembler-x64.h index 14228cc..124153b 100644 --- a/src/x64/macro-assembler-x64.h +++ b/src/x64/macro-assembler-x64.h @@ -1252,7 +1252,7 @@ class MacroAssembler: public Assembler { int return_value_offset_from_rbp); // Before calling a C-function from generated code, align arguments on stack. - // After aligning the frame, arguments must be stored in esp[0], esp[4], + // After aligning the frame, arguments must be stored in rsp[0], rsp[8], // etc., not pushed. The argument count assumes all arguments are word sized. // The number of slots reserved for arguments depends on platform. On Windows // stack slots are reserved for the arguments passed in registers. On other diff --git a/src/x64/stub-cache-x64.cc b/src/x64/stub-cache-x64.cc index 1a992b4..4b3ee40 100644 --- a/src/x64/stub-cache-x64.cc +++ b/src/x64/stub-cache-x64.cc @@ -423,10 +423,11 @@ static void ReserveSpaceForFastApiCall(MacroAssembler* masm, Register scratch) { // Undoes the effects of ReserveSpaceForFastApiCall. static void FreeSpaceForFastApiCall(MacroAssembler* masm, Register scratch) { // ----------- S t a t e ------------- - // -- rsp[0] : return address. - // -- rsp[8] : last fast api call extra argument. + // -- rsp[0] : return address. + // -- rsp[8] : last fast api call extra argument. // -- ... - // -- rsp[kFastApiCallArguments * 8] : first fast api call extra argument. + // -- rsp[kFastApiCallArguments * 8] : first fast api call extra + // argument. // -- rsp[kFastApiCallArguments * 8 + 8] : last argument in the internal // frame. // ----------------------------------- @@ -3082,7 +3083,7 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement( // ----------- S t a t e ------------- // -- rax : key // -- rdx : receiver - // -- rsp[0] : return address + // -- rsp[0] : return address // ----------------------------------- TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow); @@ -3090,7 +3091,7 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement( // ----------- S t a t e ------------- // -- rax : key // -- rdx : receiver - // -- rsp[0] : return address + // -- rsp[0] : return address // ----------------------------------- TailCallBuiltin(masm, Builtins::kKeyedLoadIC_MissForceGeneric); } @@ -3125,10 +3126,10 @@ void KeyedStoreStubCompiler::GenerateStoreExternalArray( MacroAssembler* masm, ElementsKind elements_kind) { // ----------- S t a t e ------------- - // -- rax : value - // -- rcx : key - // -- rdx : receiver - // -- rsp[0] : return address + // -- rax : value + // -- rcx : key + // -- rdx : receiver + // -- rsp[0] : return address // ----------------------------------- Label slow, miss_force_generic; @@ -3285,10 +3286,10 @@ void KeyedStoreStubCompiler::GenerateStoreExternalArray( __ bind(&slow); // ----------- S t a t e ------------- - // -- rax : value - // -- rcx : key - // -- rdx : receiver - // -- rsp[0] : return address + // -- rax : value + // -- rcx : key + // -- rdx : receiver + // -- rsp[0] : return address // ----------------------------------- TailCallBuiltin(masm, Builtins::kKeyedStoreIC_Slow); -- 2.7.4