Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: src/arm64/code-stubs-arm64.cc

Issue 1611313003: Revert of Array length reduction should throw in strict mode if it can't delete an element. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/arm/macro-assembler-arm.h ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #if V8_TARGET_ARCH_ARM64 5 #if V8_TARGET_ARCH_ARM64
6 6
7 #include "src/bootstrapper.h" 7 #include "src/bootstrapper.h"
8 #include "src/code-stubs.h" 8 #include "src/code-stubs.h"
9 #include "src/codegen.h" 9 #include "src/codegen.h"
10 #include "src/ic/handler-compiler.h" 10 #include "src/ic/handler-compiler.h"
(...skipping 5799 matching lines...) Expand 10 before | Expand all | Expand 10 after
5810 bool is_store = this->is_store(); 5810 bool is_store = this->is_store();
5811 int argc = this->argc(); 5811 int argc = this->argc();
5812 bool call_data_undefined = this->call_data_undefined(); 5812 bool call_data_undefined = this->call_data_undefined();
5813 CallApiFunctionStubHelper(masm, ParameterCount(argc), is_store, 5813 CallApiFunctionStubHelper(masm, ParameterCount(argc), is_store,
5814 call_data_undefined); 5814 call_data_undefined);
5815 } 5815 }
5816 5816
5817 5817
5818 void CallApiGetterStub::Generate(MacroAssembler* masm) { 5818 void CallApiGetterStub::Generate(MacroAssembler* masm) {
5819 // ----------- S t a t e ------------- 5819 // ----------- S t a t e -------------
5820 // -- sp[0] : name 5820 // -- sp[0] : name
5821 // -- sp[8 .. (8 + kArgsLength*8)] : v8::PropertyCallbackInfo::args_ 5821 // -- sp[8 - kArgsLength*8] : PropertyCallbackArguments object
5822 // -- ... 5822 // -- ...
5823 // -- x2 : api_function_address 5823 // -- x2 : api_function_address
5824 // ----------------------------------- 5824 // -----------------------------------
5825 5825
5826 Register api_function_address = ApiGetterDescriptor::function_address(); 5826 Register api_function_address = ApiGetterDescriptor::function_address();
5827 DCHECK(api_function_address.is(x2)); 5827 DCHECK(api_function_address.is(x2));
5828 5828
5829 // v8::PropertyCallbackInfo::args_ array and name handle.
5830 const int kStackUnwindSpace = PropertyCallbackArguments::kArgsLength + 1;
5831
5832 // Load address of v8::PropertyAccessorInfo::args_ array and name handle.
5833 __ Mov(x0, masm->StackPointer()); // x0 = Handle<Name> 5829 __ Mov(x0, masm->StackPointer()); // x0 = Handle<Name>
5834 __ Add(x1, x0, 1 * kPointerSize); // x1 = v8::PCI::args_ 5830 __ Add(x1, x0, 1 * kPointerSize); // x1 = PCA
5835 5831
5836 const int kApiStackSpace = 1; 5832 const int kApiStackSpace = 1;
5837 5833
5838 // Allocate space for CallApiFunctionAndReturn can store some scratch 5834 // Allocate space for CallApiFunctionAndReturn can store some scratch
5839 // registeres on the stack. 5835 // registeres on the stack.
5840 const int kCallApiFunctionSpillSpace = 4; 5836 const int kCallApiFunctionSpillSpace = 4;
5841 5837
5842 FrameScope frame_scope(masm, StackFrame::MANUAL); 5838 FrameScope frame_scope(masm, StackFrame::MANUAL);
5843 __ EnterExitFrame(false, x10, kApiStackSpace + kCallApiFunctionSpillSpace); 5839 __ EnterExitFrame(false, x10, kApiStackSpace + kCallApiFunctionSpillSpace);
5844 5840
5845 // Create v8::PropertyCallbackInfo object on the stack and initialize 5841 // Create PropertyAccessorInfo instance on the stack above the exit frame with
5846 // it's args_ field. 5842 // x1 (internal::Object** args_) as the data.
5847 __ Poke(x1, 1 * kPointerSize); 5843 __ Poke(x1, 1 * kPointerSize);
5848 __ Add(x1, masm->StackPointer(), 1 * kPointerSize); 5844 __ Add(x1, masm->StackPointer(), 1 * kPointerSize); // x1 = AccessorInfo&
5849 // x1 = v8::PropertyCallbackInfo& 5845
5846 const int kStackUnwindSpace = PropertyCallbackArguments::kArgsLength + 1;
5850 5847
5851 ExternalReference thunk_ref = 5848 ExternalReference thunk_ref =
5852 ExternalReference::invoke_accessor_getter_callback(isolate()); 5849 ExternalReference::invoke_accessor_getter_callback(isolate());
5853 5850
5854 const int spill_offset = 1 + kApiStackSpace; 5851 const int spill_offset = 1 + kApiStackSpace;
5855 // +3 is to skip prolog, return address and name handle.
5856 MemOperand return_value_operand(
5857 fp, (PropertyCallbackArguments::kReturnValueOffset + 3) * kPointerSize);
5858 CallApiFunctionAndReturn(masm, api_function_address, thunk_ref, 5852 CallApiFunctionAndReturn(masm, api_function_address, thunk_ref,
5859 kStackUnwindSpace, NULL, spill_offset, 5853 kStackUnwindSpace, NULL, spill_offset,
5860 return_value_operand, NULL); 5854 MemOperand(fp, 6 * kPointerSize), NULL);
5861 } 5855 }
5862 5856
5863 5857
5864 #undef __ 5858 #undef __
5865 5859
5866 } // namespace internal 5860 } // namespace internal
5867 } // namespace v8 5861 } // namespace v8
5868 5862
5869 #endif // V8_TARGET_ARCH_ARM64 5863 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm/macro-assembler-arm.h ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698