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

Side by Side Diff: src/objects.cc

Issue 1228113007: Fix object enumeration wrt access checked objects (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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 | « no previous file | test/cctest/test-api.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <iomanip> 5 #include <iomanip>
6 #include <sstream> 6 #include <sstream>
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/accessors.h" 10 #include "src/accessors.h"
(...skipping 6159 matching lines...) Expand 10 before | Expand all | Expand 10 after
6170 content, Handle<JSObject>::cast(names)), 6170 content, Handle<JSObject>::cast(names)),
6171 FixedArray); 6171 FixedArray);
6172 break; 6172 break;
6173 } 6173 }
6174 6174
6175 Handle<JSObject> current = 6175 Handle<JSObject> current =
6176 Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter)); 6176 Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter));
6177 6177
6178 // Check access rights if required. 6178 // Check access rights if required.
6179 if (current->IsAccessCheckNeeded() && !isolate->MayAccess(current)) { 6179 if (current->IsAccessCheckNeeded() && !isolate->MayAccess(current)) {
6180 isolate->ReportFailedAccessCheck(current); 6180 return content;
6181 RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, FixedArray);
6182 break;
6183 } 6181 }
6184 6182
6185 // Compute the element keys. 6183 // Compute the element keys.
6186 Handle<FixedArray> element_keys = 6184 Handle<FixedArray> element_keys =
6187 isolate->factory()->NewFixedArray(current->NumberOfEnumElements()); 6185 isolate->factory()->NewFixedArray(current->NumberOfEnumElements());
6188 current->GetEnumElementKeys(*element_keys); 6186 current->GetEnumElementKeys(*element_keys);
6189 ASSIGN_RETURN_ON_EXCEPTION( 6187 ASSIGN_RETURN_ON_EXCEPTION(
6190 isolate, content, 6188 isolate, content,
6191 FixedArray::UnionOfKeys(content, element_keys), 6189 FixedArray::UnionOfKeys(content, element_keys),
6192 FixedArray); 6190 FixedArray);
(...skipping 9705 matching lines...) Expand 10 before | Expand all | Expand 10 after
15898 Handle<Object> new_value) { 15896 Handle<Object> new_value) {
15899 if (cell->value() != *new_value) { 15897 if (cell->value() != *new_value) {
15900 cell->set_value(*new_value); 15898 cell->set_value(*new_value);
15901 Isolate* isolate = cell->GetIsolate(); 15899 Isolate* isolate = cell->GetIsolate();
15902 cell->dependent_code()->DeoptimizeDependentCodeGroup( 15900 cell->dependent_code()->DeoptimizeDependentCodeGroup(
15903 isolate, DependentCode::kPropertyCellChangedGroup); 15901 isolate, DependentCode::kPropertyCellChangedGroup);
15904 } 15902 }
15905 } 15903 }
15906 } // namespace internal 15904 } // namespace internal
15907 } // namespace v8 15905 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | test/cctest/test-api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698