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

Side by Side Diff: src/ic.cc

Issue 390833003: Remove PropertyAttributes from SetProperty (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 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 | Annotate | Revision Log
« no previous file with comments | « src/i18n.cc ('k') | src/isolate.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/api.h" 8 #include "src/api.h"
9 #include "src/arguments.h" 9 #include "src/arguments.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 1269 matching lines...) Expand 10 before | Expand all | Expand 10 after
1280 1280
1281 1281
1282 MaybeHandle<Object> StoreIC::Store(Handle<Object> object, 1282 MaybeHandle<Object> StoreIC::Store(Handle<Object> object,
1283 Handle<String> name, 1283 Handle<String> name,
1284 Handle<Object> value, 1284 Handle<Object> value,
1285 JSReceiver::StoreFromKeyed store_mode) { 1285 JSReceiver::StoreFromKeyed store_mode) {
1286 if (MigrateDeprecated(object) || object->IsJSProxy()) { 1286 if (MigrateDeprecated(object) || object->IsJSProxy()) {
1287 Handle<JSReceiver> receiver = Handle<JSReceiver>::cast(object); 1287 Handle<JSReceiver> receiver = Handle<JSReceiver>::cast(object);
1288 Handle<Object> result; 1288 Handle<Object> result;
1289 ASSIGN_RETURN_ON_EXCEPTION( 1289 ASSIGN_RETURN_ON_EXCEPTION(
1290 isolate(), 1290 isolate(), result,
1291 result, 1291 JSReceiver::SetProperty(receiver, name, value, strict_mode()), Object);
1292 JSReceiver::SetProperty(receiver, name, value, NONE, strict_mode()),
1293 Object);
1294 return result; 1292 return result;
1295 } 1293 }
1296 1294
1297 // If the object is undefined or null it's illegal to try to set any 1295 // If the object is undefined or null it's illegal to try to set any
1298 // properties on it; throw a TypeError in that case. 1296 // properties on it; throw a TypeError in that case.
1299 if (object->IsUndefined() || object->IsNull()) { 1297 if (object->IsUndefined() || object->IsNull()) {
1300 return TypeError("non_object_property_store", object, name); 1298 return TypeError("non_object_property_store", object, name);
1301 } 1299 }
1302 1300
1303 // The length property of string values is read-only. Throw in strict mode. 1301 // The length property of string values is read-only. Throw in strict mode.
(...skipping 17 matching lines...) Expand all
1321 result, 1319 result,
1322 JSObject::SetElement(receiver, index, value, NONE, strict_mode()), 1320 JSObject::SetElement(receiver, index, value, NONE, strict_mode()),
1323 Object); 1321 Object);
1324 return value; 1322 return value;
1325 } 1323 }
1326 1324
1327 // Observed objects are always modified through the runtime. 1325 // Observed objects are always modified through the runtime.
1328 if (receiver->map()->is_observed()) { 1326 if (receiver->map()->is_observed()) {
1329 Handle<Object> result; 1327 Handle<Object> result;
1330 ASSIGN_RETURN_ON_EXCEPTION( 1328 ASSIGN_RETURN_ON_EXCEPTION(
1331 isolate(), 1329 isolate(), result, JSReceiver::SetProperty(receiver, name, value,
1332 result, 1330 strict_mode(), store_mode),
1333 JSReceiver::SetProperty(
1334 receiver, name, value, NONE, strict_mode(), store_mode),
1335 Object); 1331 Object);
1336 return result; 1332 return result;
1337 } 1333 }
1338 1334
1339 LookupResult lookup(isolate()); 1335 LookupResult lookup(isolate());
1340 bool can_store = LookupForWrite(receiver, name, value, &lookup, this); 1336 bool can_store = LookupForWrite(receiver, name, value, &lookup, this);
1341 if (!can_store && 1337 if (!can_store &&
1342 strict_mode() == STRICT && 1338 strict_mode() == STRICT &&
1343 !(lookup.IsProperty() && lookup.IsReadOnly()) && 1339 !(lookup.IsProperty() && lookup.IsReadOnly()) &&
1344 object->IsGlobalObject()) { 1340 object->IsGlobalObject()) {
(...skipping 10 matching lines...) Expand all
1355 } else if (lookup.IsNormal() || 1351 } else if (lookup.IsNormal() ||
1356 (lookup.IsField() && lookup.CanHoldValue(value))) { 1352 (lookup.IsField() && lookup.CanHoldValue(value))) {
1357 Handle<Code> stub = generic_stub(); 1353 Handle<Code> stub = generic_stub();
1358 set_target(*stub); 1354 set_target(*stub);
1359 } 1355 }
1360 } 1356 }
1361 1357
1362 // Set the property. 1358 // Set the property.
1363 Handle<Object> result; 1359 Handle<Object> result;
1364 ASSIGN_RETURN_ON_EXCEPTION( 1360 ASSIGN_RETURN_ON_EXCEPTION(
1365 isolate(), 1361 isolate(), result,
1366 result, 1362 JSReceiver::SetProperty(receiver, name, value, strict_mode(), store_mode),
1367 JSReceiver::SetProperty(
1368 receiver, name, value, NONE, strict_mode(), store_mode),
1369 Object); 1363 Object);
1370 return result; 1364 return result;
1371 } 1365 }
1372 1366
1373 1367
1374 OStream& operator<<(OStream& os, const CallIC::State& s) { 1368 OStream& operator<<(OStream& os, const CallIC::State& s) {
1375 return os << "(args(" << s.arg_count() << "), " 1369 return os << "(args(" << s.arg_count() << "), "
1376 << (s.call_type() == CallIC::METHOD ? "METHOD" : "FUNCTION") 1370 << (s.call_type() == CallIC::METHOD ? "METHOD" : "FUNCTION")
1377 << ", "; 1371 << ", ";
1378 } 1372 }
(...skipping 1720 matching lines...) Expand 10 before | Expand all | Expand 10 after
3099 #undef ADDR 3093 #undef ADDR
3100 }; 3094 };
3101 3095
3102 3096
3103 Address IC::AddressFromUtilityId(IC::UtilityId id) { 3097 Address IC::AddressFromUtilityId(IC::UtilityId id) {
3104 return IC_utilities[id]; 3098 return IC_utilities[id];
3105 } 3099 }
3106 3100
3107 3101
3108 } } // namespace v8::internal 3102 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/i18n.cc ('k') | src/isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698