| 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 <sstream> | 5 #include <sstream> |
| 6 | 6 |
| 7 #include "src/v8.h" | 7 #include "src/v8.h" |
| 8 | 8 |
| 9 #include "src/accessors.h" | 9 #include "src/accessors.h" |
| 10 #include "src/allocation-site-scopes.h" | 10 #include "src/allocation-site-scopes.h" |
| (...skipping 2913 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2924 map = ReconfigureProperty(map, i, kData, details.attributes(), | 2924 map = ReconfigureProperty(map, i, kData, details.attributes(), |
| 2925 Representation::Tagged(), | 2925 Representation::Tagged(), |
| 2926 HeapType::Any(map->GetIsolate()), FORCE_FIELD); | 2926 HeapType::Any(map->GetIsolate()), FORCE_FIELD); |
| 2927 } | 2927 } |
| 2928 } | 2928 } |
| 2929 return map; | 2929 return map; |
| 2930 } | 2930 } |
| 2931 | 2931 |
| 2932 | 2932 |
| 2933 // static | 2933 // static |
| 2934 MaybeHandle<Map> Map::TryUpdate(Handle<Map> map) { | 2934 MaybeHandle<Map> Map::TryUpdate(Handle<Map> old_map) { |
| 2935 Handle<Map> proto_map(map); | |
| 2936 while (proto_map->prototype()->IsJSObject()) { | |
| 2937 Handle<JSObject> holder(JSObject::cast(proto_map->prototype())); | |
| 2938 proto_map = Handle<Map>(holder->map()); | |
| 2939 if (proto_map->is_deprecated() && JSObject::TryMigrateInstance(holder)) { | |
| 2940 proto_map = Handle<Map>(holder->map()); | |
| 2941 } | |
| 2942 } | |
| 2943 return TryUpdateInternal(map); | |
| 2944 } | |
| 2945 | |
| 2946 | |
| 2947 // static | |
| 2948 Handle<Map> Map::Update(Handle<Map> map) { | |
| 2949 if (!map->is_deprecated()) return map; | |
| 2950 return ReconfigureProperty(map, -1, kData, NONE, Representation::None(), | |
| 2951 HeapType::None(map->GetIsolate()), | |
| 2952 ALLOW_IN_DESCRIPTOR); | |
| 2953 } | |
| 2954 | |
| 2955 | |
| 2956 // static | |
| 2957 MaybeHandle<Map> Map::TryUpdateInternal(Handle<Map> old_map) { | |
| 2958 DisallowHeapAllocation no_allocation; | 2935 DisallowHeapAllocation no_allocation; |
| 2959 DisallowDeoptimization no_deoptimization(old_map->GetIsolate()); | 2936 DisallowDeoptimization no_deoptimization(old_map->GetIsolate()); |
| 2960 | 2937 |
| 2961 if (!old_map->is_deprecated()) return old_map; | 2938 if (!old_map->is_deprecated()) return old_map; |
| 2962 | 2939 |
| 2963 // Check the state of the root map. | 2940 // Check the state of the root map. |
| 2964 Map* root_map = old_map->FindRootMap(); | 2941 Map* root_map = old_map->FindRootMap(); |
| 2965 if (!old_map->EquivalentToForTransition(root_map)) return MaybeHandle<Map>(); | 2942 if (!old_map->EquivalentToForTransition(root_map)) return MaybeHandle<Map>(); |
| 2966 int root_nof = root_map->NumberOfOwnDescriptors(); | 2943 int root_nof = root_map->NumberOfOwnDescriptors(); |
| 2967 | 2944 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3011 return MaybeHandle<Map>(); | 2988 return MaybeHandle<Map>(); |
| 3012 } | 2989 } |
| 3013 break; | 2990 break; |
| 3014 } | 2991 } |
| 3015 } | 2992 } |
| 3016 if (new_map->NumberOfOwnDescriptors() != old_nof) return MaybeHandle<Map>(); | 2993 if (new_map->NumberOfOwnDescriptors() != old_nof) return MaybeHandle<Map>(); |
| 3017 return handle(new_map); | 2994 return handle(new_map); |
| 3018 } | 2995 } |
| 3019 | 2996 |
| 3020 | 2997 |
| 2998 // static |
| 2999 Handle<Map> Map::Update(Handle<Map> map) { |
| 3000 if (!map->is_deprecated()) return map; |
| 3001 return ReconfigureProperty(map, -1, kData, NONE, Representation::None(), |
| 3002 HeapType::None(map->GetIsolate()), |
| 3003 ALLOW_IN_DESCRIPTOR); |
| 3004 } |
| 3005 |
| 3006 |
| 3021 MaybeHandle<Object> JSObject::SetPropertyWithInterceptor(LookupIterator* it, | 3007 MaybeHandle<Object> JSObject::SetPropertyWithInterceptor(LookupIterator* it, |
| 3022 Handle<Object> value) { | 3008 Handle<Object> value) { |
| 3023 Handle<Name> name = it->name(); | 3009 Handle<Name> name = it->name(); |
| 3024 Handle<JSObject> holder = it->GetHolder<JSObject>(); | 3010 Handle<JSObject> holder = it->GetHolder<JSObject>(); |
| 3025 Handle<InterceptorInfo> interceptor(holder->GetNamedInterceptor()); | 3011 Handle<InterceptorInfo> interceptor(holder->GetNamedInterceptor()); |
| 3026 if (interceptor->setter()->IsUndefined() || | 3012 if (interceptor->setter()->IsUndefined() || |
| 3027 (name->IsSymbol() && !interceptor->can_intercept_symbols())) { | 3013 (name->IsSymbol() && !interceptor->can_intercept_symbols())) { |
| 3028 return MaybeHandle<Object>(); | 3014 return MaybeHandle<Object>(); |
| 3029 } | 3015 } |
| 3030 | 3016 |
| (...skipping 14313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 17344 CompilationInfo* info) { | 17330 CompilationInfo* info) { |
| 17345 Handle<DependentCode> codes = DependentCode::InsertCompilationInfo( | 17331 Handle<DependentCode> codes = DependentCode::InsertCompilationInfo( |
| 17346 handle(cell->dependent_code(), info->isolate()), | 17332 handle(cell->dependent_code(), info->isolate()), |
| 17347 DependentCode::kPropertyCellChangedGroup, info->object_wrapper()); | 17333 DependentCode::kPropertyCellChangedGroup, info->object_wrapper()); |
| 17348 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes); | 17334 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes); |
| 17349 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add( | 17335 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add( |
| 17350 cell, info->zone()); | 17336 cell, info->zone()); |
| 17351 } | 17337 } |
| 17352 | 17338 |
| 17353 } } // namespace v8::internal | 17339 } } // namespace v8::internal |
| OLD | NEW |