OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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 #include "src/ic/keyed-store-generic.h" | 5 #include "src/ic/keyed-store-generic.h" |
6 | 6 |
7 #include "src/code-factory.h" | 7 #include "src/code-factory.h" |
8 #include "src/code-stub-assembler.h" | 8 #include "src/code-stub-assembler.h" |
9 #include "src/contexts.h" | 9 #include "src/contexts.h" |
10 #include "src/ic/accessor-assembler-impl.h" | 10 #include "src/ic/accessor-assembler-impl.h" |
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
669 &readonly, slow); | 669 &readonly, slow); |
670 Add<NameDictionary>(properties, p->name, p->value, slow); | 670 Add<NameDictionary>(properties, p->name, p->value, slow); |
671 Return(p->value); | 671 Return(p->value); |
672 } | 672 } |
673 } | 673 } |
674 | 674 |
675 Bind(&accessor); | 675 Bind(&accessor); |
676 { | 676 { |
677 Label not_callable(this); | 677 Label not_callable(this); |
678 Node* accessor_pair = var_accessor_pair.value(); | 678 Node* accessor_pair = var_accessor_pair.value(); |
679 GotoIf(IsAccessorPairMap(LoadMap(accessor_pair)), slow); | 679 GotoIf(IsAccessorInfoMap(LoadMap(accessor_pair)), slow); |
680 CSA_ASSERT(this, HasInstanceType(accessor_pair, ACCESSOR_PAIR_TYPE)); | 680 CSA_ASSERT(this, HasInstanceType(accessor_pair, ACCESSOR_PAIR_TYPE)); |
681 Node* setter = LoadObjectField(accessor_pair, AccessorPair::kSetterOffset); | 681 Node* setter = LoadObjectField(accessor_pair, AccessorPair::kSetterOffset); |
682 Node* setter_map = LoadMap(setter); | 682 Node* setter_map = LoadMap(setter); |
683 // FunctionTemplateInfo setters are not supported yet. | 683 // FunctionTemplateInfo setters are not supported yet. |
684 GotoIf(IsFunctionTemplateInfoMap(setter_map), slow); | 684 GotoIf(IsFunctionTemplateInfoMap(setter_map), slow); |
685 GotoUnless(IsCallableMap(setter_map), ¬_callable); | 685 GotoUnless(IsCallableMap(setter_map), ¬_callable); |
686 | 686 |
687 Callable callable = CodeFactory::Call(isolate()); | 687 Callable callable = CodeFactory::Call(isolate()); |
688 CallJS(callable, p->context, setter, receiver, p->value); | 688 CallJS(callable, p->context, setter, receiver, p->value); |
689 Return(p->value); | 689 Return(p->value); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
779 Bind(&slow); | 779 Bind(&slow); |
780 { | 780 { |
781 Comment("KeyedStoreGeneric_slow"); | 781 Comment("KeyedStoreGeneric_slow"); |
782 TailCallRuntime(Runtime::kSetProperty, context, receiver, name, value, | 782 TailCallRuntime(Runtime::kSetProperty, context, receiver, name, value, |
783 SmiConstant(language_mode)); | 783 SmiConstant(language_mode)); |
784 } | 784 } |
785 } | 785 } |
786 | 786 |
787 } // namespace internal | 787 } // namespace internal |
788 } // namespace v8 | 788 } // namespace v8 |
OLD | NEW |