Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(426)

Side by Side Diff: src/lookup.cc

Issue 2405213002: V8 support for cached accessors. (Closed)
Patch Set: Centralized lookup in LookupIterator::TryLookupCacheProperty. Also rebase. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include "src/lookup.h" 5 #include "src/lookup.h"
6 6
7 #include "src/bootstrapper.h" 7 #include "src/bootstrapper.h"
8 #include "src/deoptimizer.h" 8 #include "src/deoptimizer.h"
9 #include "src/elements.h" 9 #include "src/elements.h"
10 #include "src/field-type.h" 10 #include "src/field-type.h"
(...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 if (access_check_info) { 828 if (access_check_info) {
829 Object* interceptor = IsElement() ? access_check_info->indexed_interceptor() 829 Object* interceptor = IsElement() ? access_check_info->indexed_interceptor()
830 : access_check_info->named_interceptor(); 830 : access_check_info->named_interceptor();
831 if (interceptor) { 831 if (interceptor) {
832 return handle(InterceptorInfo::cast(interceptor), isolate_); 832 return handle(InterceptorInfo::cast(interceptor), isolate_);
833 } 833 }
834 } 834 }
835 return Handle<InterceptorInfo>(); 835 return Handle<InterceptorInfo>();
836 } 836 }
837 837
838 bool LookupIterator::TryLookupCacheProperty() {
839 if (state() != LookupIterator::ACCESSOR) return false;
840
841 Handle<Object> accessors = GetAccessors();
842 if (!accessors->IsAccessorPair()) return false;
Toon Verwaest 2016/10/21 08:22:14 You should be able to make this a DCHECK and only
vogelheim 2016/11/03 16:12:24 Mostly done. There's now a LookupCachedProperty,
843
844 Handle<Object> getter(Handle<AccessorPair>::cast(accessors)->getter(),
845 isolate());
Toon Verwaest 2016/10/21 08:22:14 you don't need isolate() here
vogelheim 2016/11/03 16:12:23 The compiler disagrees. With only one param, this
Toon Verwaest 2016/11/04 10:19:52 You're right; I misread I guess. Object includes S
846 MaybeHandle<Name> maybe_name =
847 FunctionTemplateInfo::TryGetCachePropertyName(isolate(), getter);
848 if (maybe_name.is_null()) return false;
849
850 // We have found a cached property! Modify the iterator accordingly.
851 name_ = maybe_name.ToHandleChecked();
852 Restart();
853 CHECK_EQ(state(), LookupIterator::DATA);
854 return true;
855 }
856
838 } // namespace internal 857 } // namespace internal
839 } // namespace v8 858 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698