OLD | NEW |
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 #include "src/keys.h" | 5 #include "src/keys.h" |
6 | 6 |
7 #include "src/api-arguments.h" | 7 #include "src/api-arguments.h" |
8 #include "src/elements.h" | 8 #include "src/elements.h" |
9 #include "src/factory.h" | 9 #include "src/factory.h" |
10 #include "src/identity-map.h" | 10 #include "src/identity-map.h" |
(...skipping 762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
773 Maybe<bool> found = JSReceiver::GetOwnPropertyDescriptor( | 773 Maybe<bool> found = JSReceiver::GetOwnPropertyDescriptor( |
774 isolate_, target, handle(target_keys->get(i), isolate_), &desc); | 774 isolate_, target, handle(target_keys->get(i), isolate_), &desc); |
775 MAYBE_RETURN(found, Nothing<bool>()); | 775 MAYBE_RETURN(found, Nothing<bool>()); |
776 // 14b. If desc is not undefined and desc.[[Configurable]] is false, then | 776 // 14b. If desc is not undefined and desc.[[Configurable]] is false, then |
777 if (found.FromJust() && !desc.configurable()) { | 777 if (found.FromJust() && !desc.configurable()) { |
778 // 14b i. Append key as an element of targetNonconfigurableKeys. | 778 // 14b i. Append key as an element of targetNonconfigurableKeys. |
779 target_nonconfigurable_keys->set(nonconfigurable_keys_length, | 779 target_nonconfigurable_keys->set(nonconfigurable_keys_length, |
780 target_keys->get(i)); | 780 target_keys->get(i)); |
781 nonconfigurable_keys_length++; | 781 nonconfigurable_keys_length++; |
782 // The key was moved, null it out in the original list. | 782 // The key was moved, null it out in the original list. |
783 target_keys->set(i, Smi::kZero); | 783 target_keys->set(i, Smi::FromInt(0)); |
784 } else { | 784 } else { |
785 // 14c. Else, | 785 // 14c. Else, |
786 // 14c i. Append key as an element of targetConfigurableKeys. | 786 // 14c i. Append key as an element of targetConfigurableKeys. |
787 // (No-op, just keep it in |target_keys|.) | 787 // (No-op, just keep it in |target_keys|.) |
788 } | 788 } |
789 } | 789 } |
790 // 15. If extensibleTarget is true and targetNonconfigurableKeys is empty, | 790 // 15. If extensibleTarget is true and targetNonconfigurableKeys is empty, |
791 // then: | 791 // then: |
792 if (extensible_target && nonconfigurable_keys_length == 0) { | 792 if (extensible_target && nonconfigurable_keys_length == 0) { |
793 // 15a. Return trapResult. | 793 // 15a. Return trapResult. |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
862 isolate_, keys, | 862 isolate_, keys, |
863 KeyAccumulator::GetKeys(target, KeyCollectionMode::kOwnOnly, filter_, | 863 KeyAccumulator::GetKeys(target, KeyCollectionMode::kOwnOnly, filter_, |
864 GetKeysConversion::kConvertToString, is_for_in_), | 864 GetKeysConversion::kConvertToString, is_for_in_), |
865 Nothing<bool>()); | 865 Nothing<bool>()); |
866 Maybe<bool> result = AddKeysFromJSProxy(proxy, keys); | 866 Maybe<bool> result = AddKeysFromJSProxy(proxy, keys); |
867 return result; | 867 return result; |
868 } | 868 } |
869 | 869 |
870 } // namespace internal | 870 } // namespace internal |
871 } // namespace v8 | 871 } // namespace v8 |
OLD | NEW |