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

Side by Side Diff: src/objects.cc

Issue 1241973003: Fix DefineOwnProperty for data properties wrt failed access checks (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 | 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 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 4171 matching lines...) Expand 10 before | Expand all | Expand 10 after
4182 4182
4183 for (; it->IsFound(); it->Next()) { 4183 for (; it->IsFound(); it->Next()) {
4184 switch (it->state()) { 4184 switch (it->state()) {
4185 case LookupIterator::JSPROXY: 4185 case LookupIterator::JSPROXY:
4186 case LookupIterator::NOT_FOUND: 4186 case LookupIterator::NOT_FOUND:
4187 case LookupIterator::TRANSITION: 4187 case LookupIterator::TRANSITION:
4188 UNREACHABLE(); 4188 UNREACHABLE();
4189 4189
4190 case LookupIterator::ACCESS_CHECK: 4190 case LookupIterator::ACCESS_CHECK:
4191 if (!it->HasAccess()) { 4191 if (!it->HasAccess()) {
4192 return SetPropertyWithFailedAccessCheck(it, value); 4192 it->isolate()->ReportFailedAccessCheck(it->GetHolder<JSObject>());
4193 RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(it->isolate(), Object);
4194 return value;
4193 } 4195 }
4194 break; 4196 break;
4195 4197
4196 // If there's an interceptor, try to store the property with the 4198 // If there's an interceptor, try to store the property with the
4197 // interceptor. 4199 // interceptor.
4198 // In case of success, the attributes will have been reset to the default 4200 // In case of success, the attributes will have been reset to the default
4199 // attributes of the interceptor, rather than the incoming attributes. 4201 // attributes of the interceptor, rather than the incoming attributes.
4200 // 4202 //
4201 // TODO(verwaest): JSProxy afterwards verify the attributes that the 4203 // TODO(verwaest): JSProxy afterwards verify the attributes that the
4202 // JSProxy claims it has, and verifies that they are compatible. If not, 4204 // JSProxy claims it has, and verifies that they are compatible. If not,
(...skipping 11695 matching lines...) Expand 10 before | Expand all | Expand 10 after
15898 Handle<Object> new_value) { 15900 Handle<Object> new_value) {
15899 if (cell->value() != *new_value) { 15901 if (cell->value() != *new_value) {
15900 cell->set_value(*new_value); 15902 cell->set_value(*new_value);
15901 Isolate* isolate = cell->GetIsolate(); 15903 Isolate* isolate = cell->GetIsolate();
15902 cell->dependent_code()->DeoptimizeDependentCodeGroup( 15904 cell->dependent_code()->DeoptimizeDependentCodeGroup(
15903 isolate, DependentCode::kPropertyCellChangedGroup); 15905 isolate, DependentCode::kPropertyCellChangedGroup);
15904 } 15906 }
15905 } 15907 }
15906 } // namespace internal 15908 } // namespace internal
15907 } // namespace v8 15909 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698