| 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 |