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

Side by Side Diff: src/objects.cc

Issue 494063002: Rename IsDontDelete to IsConfigurable (and invert conditions) (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 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
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 "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/allocation-site-scopes.h" 8 #include "src/allocation-site-scopes.h"
9 #include "src/api.h" 9 #include "src/api.h"
10 #include "src/arguments.h" 10 #include "src/arguments.h"
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 Handle<Name> name, 702 Handle<Name> name,
703 DeleteMode mode) { 703 DeleteMode mode) {
704 DCHECK(!object->HasFastProperties()); 704 DCHECK(!object->HasFastProperties());
705 Isolate* isolate = object->GetIsolate(); 705 Isolate* isolate = object->GetIsolate();
706 Handle<NameDictionary> dictionary(object->property_dictionary()); 706 Handle<NameDictionary> dictionary(object->property_dictionary());
707 int entry = dictionary->FindEntry(name); 707 int entry = dictionary->FindEntry(name);
708 if (entry != NameDictionary::kNotFound) { 708 if (entry != NameDictionary::kNotFound) {
709 // If we have a global object set the cell to the hole. 709 // If we have a global object set the cell to the hole.
710 if (object->IsGlobalObject()) { 710 if (object->IsGlobalObject()) {
711 PropertyDetails details = dictionary->DetailsAt(entry); 711 PropertyDetails details = dictionary->DetailsAt(entry);
712 if (details.IsDontDelete()) { 712 if (!details.IsConfigurable()) {
713 if (mode != FORCE_DELETION) return isolate->factory()->false_value(); 713 if (mode != FORCE_DELETION) return isolate->factory()->false_value();
714 // When forced to delete global properties, we have to make a 714 // When forced to delete global properties, we have to make a
715 // map change to invalidate any ICs that think they can load 715 // map change to invalidate any ICs that think they can load
716 // from the DontDelete cell without checking if it contains 716 // from the non-configurable cell without checking if it contains
717 // the hole value. 717 // the hole value.
718 Handle<Map> new_map = Map::CopyDropDescriptors(handle(object->map())); 718 Handle<Map> new_map = Map::CopyDropDescriptors(handle(object->map()));
719 DCHECK(new_map->is_dictionary_map()); 719 DCHECK(new_map->is_dictionary_map());
720 JSObject::MigrateToMap(object, new_map); 720 JSObject::MigrateToMap(object, new_map);
721 } 721 }
722 Handle<PropertyCell> cell(PropertyCell::cast(dictionary->ValueAt(entry))); 722 Handle<PropertyCell> cell(PropertyCell::cast(dictionary->ValueAt(entry)));
723 Handle<Object> value = isolate->factory()->the_hole_value(); 723 Handle<Object> value = isolate->factory()->the_hole_value();
724 PropertyCell::SetValueInferType(cell, value); 724 PropertyCell::SetValueInferType(cell, value);
725 dictionary->DetailsAtPut(entry, details.AsDeleted()); 725 dictionary->DetailsAtPut(entry, details.AsDeleted());
726 } else { 726 } else {
(...skipping 5274 matching lines...) Expand 10 before | Expand all | Expand 10 after
6001 SeededNumberDictionary* dictionary, 6001 SeededNumberDictionary* dictionary,
6002 uint32_t index, 6002 uint32_t index,
6003 Object* getter, 6003 Object* getter,
6004 Object* setter, 6004 Object* setter,
6005 PropertyAttributes attributes) { 6005 PropertyAttributes attributes) {
6006 int entry = dictionary->FindEntry(index); 6006 int entry = dictionary->FindEntry(index);
6007 if (entry != SeededNumberDictionary::kNotFound) { 6007 if (entry != SeededNumberDictionary::kNotFound) {
6008 Object* result = dictionary->ValueAt(entry); 6008 Object* result = dictionary->ValueAt(entry);
6009 PropertyDetails details = dictionary->DetailsAt(entry); 6009 PropertyDetails details = dictionary->DetailsAt(entry);
6010 if (details.type() == CALLBACKS && result->IsAccessorPair()) { 6010 if (details.type() == CALLBACKS && result->IsAccessorPair()) {
6011 DCHECK(!details.IsDontDelete()); 6011 DCHECK(details.IsConfigurable());
6012 if (details.attributes() != attributes) { 6012 if (details.attributes() != attributes) {
6013 dictionary->DetailsAtPut( 6013 dictionary->DetailsAtPut(
6014 entry, 6014 entry,
6015 PropertyDetails(attributes, CALLBACKS, index)); 6015 PropertyDetails(attributes, CALLBACKS, index));
6016 } 6016 }
6017 AccessorPair::cast(result)->SetComponents(getter, setter); 6017 AccessorPair::cast(result)->SetComponents(getter, setter);
6018 return true; 6018 return true;
6019 } 6019 }
6020 } 6020 }
6021 return false; 6021 return false;
(...skipping 9092 matching lines...) Expand 10 before | Expand all | Expand 10 after
15114 15114
15115 15115
15116 template<typename Derived, typename Shape, typename Key> 15116 template<typename Derived, typename Shape, typename Key>
15117 Handle<Object> Dictionary<Derived, Shape, Key>::DeleteProperty( 15117 Handle<Object> Dictionary<Derived, Shape, Key>::DeleteProperty(
15118 Handle<Derived> dictionary, 15118 Handle<Derived> dictionary,
15119 int entry, 15119 int entry,
15120 JSObject::DeleteMode mode) { 15120 JSObject::DeleteMode mode) {
15121 Factory* factory = dictionary->GetIsolate()->factory(); 15121 Factory* factory = dictionary->GetIsolate()->factory();
15122 PropertyDetails details = dictionary->DetailsAt(entry); 15122 PropertyDetails details = dictionary->DetailsAt(entry);
15123 // Ignore attributes if forcing a deletion. 15123 // Ignore attributes if forcing a deletion.
15124 if (details.IsDontDelete() && mode != JSReceiver::FORCE_DELETION) { 15124 if (!details.IsConfigurable() && mode != JSReceiver::FORCE_DELETION) {
15125 return factory->false_value(); 15125 return factory->false_value();
15126 } 15126 }
15127 15127
15128 dictionary->SetEntry( 15128 dictionary->SetEntry(
15129 entry, factory->the_hole_value(), factory->the_hole_value()); 15129 entry, factory->the_hole_value(), factory->the_hole_value());
15130 dictionary->ElementRemoved(); 15130 dictionary->ElementRemoved();
15131 return factory->true_value(); 15131 return factory->true_value();
15132 } 15132 }
15133 15133
15134 15134
(...skipping 1392 matching lines...) Expand 10 before | Expand all | Expand 10 after
16527 #define ERROR_MESSAGES_TEXTS(C, T) T, 16527 #define ERROR_MESSAGES_TEXTS(C, T) T,
16528 static const char* error_messages_[] = { 16528 static const char* error_messages_[] = {
16529 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) 16529 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS)
16530 }; 16530 };
16531 #undef ERROR_MESSAGES_TEXTS 16531 #undef ERROR_MESSAGES_TEXTS
16532 return error_messages_[reason]; 16532 return error_messages_[reason];
16533 } 16533 }
16534 16534
16535 16535
16536 } } // namespace v8::internal 16536 } } // namespace v8::internal
OLDNEW
« src/hydrogen-instructions.h ('K') | « src/lookup.h ('k') | src/property.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698