OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/ic/call-optimization.h" | 7 #include "src/ic/call-optimization.h" |
8 #include "src/ic/handler-compiler.h" | 8 #include "src/ic/handler-compiler.h" |
9 #include "src/ic/ic.h" | 9 #include "src/ic/ic.h" |
10 #include "src/isolate-inl.h" | 10 #include "src/isolate-inl.h" |
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
638 | 638 |
639 | 639 |
640 void NamedLoadHandlerCompiler::GenerateLoadConstant(Handle<Object> value) { | 640 void NamedLoadHandlerCompiler::GenerateLoadConstant(Handle<Object> value) { |
641 // Return the constant value. | 641 // Return the constant value. |
642 __ LoadObject(x0, value); | 642 __ LoadObject(x0, value); |
643 __ Ret(); | 643 __ Ret(); |
644 } | 644 } |
645 | 645 |
646 | 646 |
647 void NamedLoadHandlerCompiler::GenerateLoadCallback( | 647 void NamedLoadHandlerCompiler::GenerateLoadCallback( |
648 Register reg, Handle<ExecutableAccessorInfo> callback) { | 648 Register reg, Handle<AccessorInfo> callback) { |
649 DCHECK(!AreAliased(scratch2(), scratch3(), scratch4(), reg)); | 649 DCHECK(!AreAliased(scratch2(), scratch3(), scratch4(), reg)); |
650 | 650 |
651 // Build ExecutableAccessorInfo::args_ list on the stack and push property | 651 // Build AccessorInfo::args_ list on the stack and push property |
652 // name below the exit frame to make GC aware of them and store pointers to | 652 // name below the exit frame to make GC aware of them and store pointers to |
653 // them. | 653 // them. |
654 STATIC_ASSERT(PropertyCallbackArguments::kHolderIndex == 0); | 654 STATIC_ASSERT(PropertyCallbackArguments::kHolderIndex == 0); |
655 STATIC_ASSERT(PropertyCallbackArguments::kIsolateIndex == 1); | 655 STATIC_ASSERT(PropertyCallbackArguments::kIsolateIndex == 1); |
656 STATIC_ASSERT(PropertyCallbackArguments::kReturnValueDefaultValueIndex == 2); | 656 STATIC_ASSERT(PropertyCallbackArguments::kReturnValueDefaultValueIndex == 2); |
657 STATIC_ASSERT(PropertyCallbackArguments::kReturnValueOffset == 3); | 657 STATIC_ASSERT(PropertyCallbackArguments::kReturnValueOffset == 3); |
658 STATIC_ASSERT(PropertyCallbackArguments::kDataIndex == 4); | 658 STATIC_ASSERT(PropertyCallbackArguments::kDataIndex == 4); |
659 STATIC_ASSERT(PropertyCallbackArguments::kThisIndex == 5); | 659 STATIC_ASSERT(PropertyCallbackArguments::kThisIndex == 5); |
660 STATIC_ASSERT(PropertyCallbackArguments::kArgsLength == 6); | 660 STATIC_ASSERT(PropertyCallbackArguments::kArgsLength == 6); |
661 | 661 |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
767 DCHECK(holder()->HasNamedInterceptor()); | 767 DCHECK(holder()->HasNamedInterceptor()); |
768 DCHECK(!holder()->GetNamedInterceptor()->getter()->IsUndefined()); | 768 DCHECK(!holder()->GetNamedInterceptor()->getter()->IsUndefined()); |
769 PushInterceptorArguments(masm(), receiver(), holder_reg, this->name(), | 769 PushInterceptorArguments(masm(), receiver(), holder_reg, this->name(), |
770 holder()); | 770 holder()); |
771 | 771 |
772 __ TailCallRuntime(Runtime::kLoadPropertyWithInterceptor); | 772 __ TailCallRuntime(Runtime::kLoadPropertyWithInterceptor); |
773 } | 773 } |
774 | 774 |
775 | 775 |
776 Handle<Code> NamedStoreHandlerCompiler::CompileStoreCallback( | 776 Handle<Code> NamedStoreHandlerCompiler::CompileStoreCallback( |
777 Handle<JSObject> object, Handle<Name> name, | 777 Handle<JSObject> object, Handle<Name> name, Handle<AccessorInfo> callback) { |
778 Handle<ExecutableAccessorInfo> callback) { | |
779 ASM_LOCATION("NamedStoreHandlerCompiler::CompileStoreCallback"); | 778 ASM_LOCATION("NamedStoreHandlerCompiler::CompileStoreCallback"); |
780 Register holder_reg = Frontend(name); | 779 Register holder_reg = Frontend(name); |
781 | 780 |
782 // Stub never generated for non-global objects that require access checks. | 781 // Stub never generated for non-global objects that require access checks. |
783 DCHECK(holder()->IsJSGlobalProxy() || !holder()->IsAccessCheckNeeded()); | 782 DCHECK(holder()->IsJSGlobalProxy() || !holder()->IsAccessCheckNeeded()); |
784 | 783 |
785 // receiver() and holder_reg can alias. | 784 // receiver() and holder_reg can alias. |
786 DCHECK(!AreAliased(receiver(), scratch1(), scratch2(), value())); | 785 DCHECK(!AreAliased(receiver(), scratch1(), scratch2(), value())); |
787 DCHECK(!AreAliased(holder_reg, scratch1(), scratch2(), value())); | 786 DCHECK(!AreAliased(holder_reg, scratch1(), scratch2(), value())); |
788 // If the callback cannot leak, then push the callback directly, | 787 // If the callback cannot leak, then push the callback directly, |
(...skipping 13 matching lines...) Expand all Loading... |
802 // Return the generated code. | 801 // Return the generated code. |
803 return GetCode(kind(), Code::FAST, name); | 802 return GetCode(kind(), Code::FAST, name); |
804 } | 803 } |
805 | 804 |
806 | 805 |
807 #undef __ | 806 #undef __ |
808 } // namespace internal | 807 } // namespace internal |
809 } // namespace v8 | 808 } // namespace v8 |
810 | 809 |
811 #endif // V8_TARGET_ARCH_IA32 | 810 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |