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 1230793002: [es6] silence access-check failure for well-known symbol properties (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Remove pointless test part 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
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 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 if (js_object->map()->is_access_check_needed()) return false; 120 if (js_object->map()->is_access_check_needed()) return false;
121 auto isolate = js_object->GetIsolate(); 121 auto isolate = js_object->GetIsolate();
122 // TODO(dcarney): this should just be read from the symbol registry so as not 122 // TODO(dcarney): this should just be read from the symbol registry so as not
123 // to be context dependent. 123 // to be context dependent.
124 auto key = isolate->promise_status(); 124 auto key = isolate->promise_status();
125 // Shouldn't be possible to throw here. 125 // Shouldn't be possible to throw here.
126 return JSObject::HasRealNamedProperty(js_object, key).FromJust(); 126 return JSObject::HasRealNamedProperty(js_object, key).FromJust();
127 } 127 }
128 128
129 129
130 MaybeHandle<Object> Object::GetProperty(LookupIterator* it, 130 MaybeHandle<Object> Object::GetPropertyInternal(LookupIterator* it,
131 LanguageMode language_mode) { 131 bool* failedAccessCheck,
132 LanguageMode language_mode) {
132 for (; it->IsFound(); it->Next()) { 133 for (; it->IsFound(); it->Next()) {
133 switch (it->state()) { 134 switch (it->state()) {
134 case LookupIterator::NOT_FOUND: 135 case LookupIterator::NOT_FOUND:
135 case LookupIterator::TRANSITION: 136 case LookupIterator::TRANSITION:
136 UNREACHABLE(); 137 UNREACHABLE();
137 case LookupIterator::JSPROXY: 138 case LookupIterator::JSPROXY:
138 return JSProxy::GetPropertyWithHandler( 139 return JSProxy::GetPropertyWithHandler(
139 it->GetHolder<JSProxy>(), it->GetReceiver(), it->GetName()); 140 it->GetHolder<JSProxy>(), it->GetReceiver(), it->GetName());
140 case LookupIterator::INTERCEPTOR: { 141 case LookupIterator::INTERCEPTOR: {
141 bool done; 142 bool done;
142 Handle<Object> result; 143 Handle<Object> result;
143 ASSIGN_RETURN_ON_EXCEPTION( 144 ASSIGN_RETURN_ON_EXCEPTION(
144 it->isolate(), result, 145 it->isolate(), result,
145 JSObject::GetPropertyWithInterceptor(it, &done), Object); 146 JSObject::GetPropertyWithInterceptor(it, &done), Object);
146 if (done) return result; 147 if (done) return result;
147 break; 148 break;
148 } 149 }
149 case LookupIterator::ACCESS_CHECK: 150 case LookupIterator::ACCESS_CHECK:
150 if (it->HasAccess()) break; 151 if (it->HasAccess()) break;
151 return JSObject::GetPropertyWithFailedAccessCheck(it); 152 *failedAccessCheck = true;
153 return MaybeHandle<Object>();
152 case LookupIterator::ACCESSOR: 154 case LookupIterator::ACCESSOR:
153 return GetPropertyWithAccessor(it, language_mode); 155 return GetPropertyWithAccessor(it, language_mode);
154 case LookupIterator::INTEGER_INDEXED_EXOTIC: 156 case LookupIterator::INTEGER_INDEXED_EXOTIC:
155 return ReadAbsentProperty(it, language_mode); 157 return ReadAbsentProperty(it, language_mode);
156 case LookupIterator::DATA: 158 case LookupIterator::DATA:
157 return it->GetDataValue(); 159 return it->GetDataValue();
158 } 160 }
159 } 161 }
160 return ReadAbsentProperty(it, language_mode); 162 return ReadAbsentProperty(it, language_mode);
161 } 163 }
(...skipping 15964 matching lines...) Expand 10 before | Expand all | Expand 10 after
16126 Handle<Object> new_value) { 16128 Handle<Object> new_value) {
16127 if (cell->value() != *new_value) { 16129 if (cell->value() != *new_value) {
16128 cell->set_value(*new_value); 16130 cell->set_value(*new_value);
16129 Isolate* isolate = cell->GetIsolate(); 16131 Isolate* isolate = cell->GetIsolate();
16130 cell->dependent_code()->DeoptimizeDependentCodeGroup( 16132 cell->dependent_code()->DeoptimizeDependentCodeGroup(
16131 isolate, DependentCode::kPropertyCellChangedGroup); 16133 isolate, DependentCode::kPropertyCellChangedGroup);
16132 } 16134 }
16133 } 16135 }
16134 } // namespace internal 16136 } // namespace internal
16135 } // namespace v8 16137 } // namespace v8
OLDNEW
« no previous file with comments | « src/objects.h ('k') | src/objects-inl.h » ('j') | test/cctest/test-api.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698