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

Side by Side Diff: src/objects.cc

Issue 2169523002: [keys] Postpone shadowed key checking in the KeyAccumulator (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: typo Created 4 years, 5 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
« no previous file with comments | « src/keys.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/objects.h" 5 #include "src/objects.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <iomanip> 8 #include <iomanip>
9 #include <sstream> 9 #include <sstream>
10 10
(...skipping 17508 matching lines...) Expand 10 before | Expand all | Expand 10 after
17519 PropertyDetails details = dictionary->DetailsAt(i); 17519 PropertyDetails details = dictionary->DetailsAt(i);
17520 if (details.IsDontEnum()) { 17520 if (details.IsDontEnum()) {
17521 if (mode == KeyCollectionMode::kIncludePrototypes) { 17521 if (mode == KeyCollectionMode::kIncludePrototypes) {
17522 is_shadowing_key = true; 17522 is_shadowing_key = true;
17523 } else { 17523 } else {
17524 continue; 17524 continue;
17525 } 17525 }
17526 } 17526 }
17527 if (dictionary->IsDeleted(i)) continue; 17527 if (dictionary->IsDeleted(i)) continue;
17528 if (is_shadowing_key) { 17528 if (is_shadowing_key) {
17529 accumulator->AddShadowKey(key); 17529 accumulator->AddShadowingKey(key);
17530 continue; 17530 continue;
17531 } else { 17531 } else {
17532 storage->set(properties, Smi::FromInt(i)); 17532 storage->set(properties, Smi::FromInt(i));
17533 } 17533 }
17534 properties++; 17534 properties++;
17535 if (properties == length) break; 17535 if (properties == length) break;
17536 } 17536 }
17537 17537
17538 CHECK_EQ(length, properties); 17538 CHECK_EQ(length, properties);
17539 DisallowHeapAllocation no_gc; 17539 DisallowHeapAllocation no_gc;
(...skipping 19 matching lines...) Expand all
17559 PropertyFilter filter = keys->filter(); 17559 PropertyFilter filter = keys->filter();
17560 { 17560 {
17561 DisallowHeapAllocation no_gc; 17561 DisallowHeapAllocation no_gc;
17562 Dictionary<Derived, Shape, Key>* raw_dict = *dictionary; 17562 Dictionary<Derived, Shape, Key>* raw_dict = *dictionary;
17563 for (int i = 0; i < capacity; i++) { 17563 for (int i = 0; i < capacity; i++) {
17564 Object* k = raw_dict->KeyAt(i); 17564 Object* k = raw_dict->KeyAt(i);
17565 if (!raw_dict->IsKey(isolate, k) || k->FilterKey(filter)) continue; 17565 if (!raw_dict->IsKey(isolate, k) || k->FilterKey(filter)) continue;
17566 if (raw_dict->IsDeleted(i)) continue; 17566 if (raw_dict->IsDeleted(i)) continue;
17567 PropertyDetails details = raw_dict->DetailsAt(i); 17567 PropertyDetails details = raw_dict->DetailsAt(i);
17568 if ((details.attributes() & filter) != 0) { 17568 if ((details.attributes() & filter) != 0) {
17569 keys->AddShadowKey(k); 17569 keys->AddShadowingKey(k);
17570 continue; 17570 continue;
17571 } 17571 }
17572 if (filter & ONLY_ALL_CAN_READ) { 17572 if (filter & ONLY_ALL_CAN_READ) {
17573 if (details.kind() != kAccessor) continue; 17573 if (details.kind() != kAccessor) continue;
17574 Object* accessors = raw_dict->ValueAt(i); 17574 Object* accessors = raw_dict->ValueAt(i);
17575 if (accessors->IsPropertyCell()) { 17575 if (accessors->IsPropertyCell()) {
17576 accessors = PropertyCell::cast(accessors)->value(); 17576 accessors = PropertyCell::cast(accessors)->value();
17577 } 17577 }
17578 if (!accessors->IsAccessorInfo()) continue; 17578 if (!accessors->IsAccessorInfo()) continue;
17579 if (!AccessorInfo::cast(accessors)->all_can_read()) continue; 17579 if (!AccessorInfo::cast(accessors)->all_can_read()) continue;
(...skipping 1354 matching lines...) Expand 10 before | Expand all | Expand 10 after
18934 18934
18935 Object* data_obj = 18935 Object* data_obj =
18936 constructor->shared()->get_api_func_data()->access_check_info(); 18936 constructor->shared()->get_api_func_data()->access_check_info();
18937 if (data_obj->IsUndefined(isolate)) return nullptr; 18937 if (data_obj->IsUndefined(isolate)) return nullptr;
18938 18938
18939 return AccessCheckInfo::cast(data_obj); 18939 return AccessCheckInfo::cast(data_obj);
18940 } 18940 }
18941 18941
18942 } // namespace internal 18942 } // namespace internal
18943 } // namespace v8 18943 } // namespace v8
OLDNEW
« no previous file with comments | « src/keys.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698