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

Side by Side Diff: src/objects.cc

Issue 304143002: Add support for extended constant pool arrays. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 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 "v8.h" 5 #include "v8.h"
6 6
7 #include "accessors.h" 7 #include "accessors.h"
8 #include "allocation-site-scopes.h" 8 #include "allocation-site-scopes.h"
9 #include "api.h" 9 #include "api.h"
10 #include "arguments.h" 10 #include "arguments.h"
(...skipping 9945 matching lines...) Expand 10 before | Expand all | Expand 10 after
9956 9956
9957 bool Map::EquivalentToForNormalization(Map* other, 9957 bool Map::EquivalentToForNormalization(Map* other,
9958 PropertyNormalizationMode mode) { 9958 PropertyNormalizationMode mode) {
9959 int properties = mode == CLEAR_INOBJECT_PROPERTIES 9959 int properties = mode == CLEAR_INOBJECT_PROPERTIES
9960 ? 0 : other->inobject_properties(); 9960 ? 0 : other->inobject_properties();
9961 return CheckEquivalent(this, other) && inobject_properties() == properties; 9961 return CheckEquivalent(this, other) && inobject_properties() == properties;
9962 } 9962 }
9963 9963
9964 9964
9965 void ConstantPoolArray::ConstantPoolIterateBody(ObjectVisitor* v) { 9965 void ConstantPoolArray::ConstantPoolIterateBody(ObjectVisitor* v) {
9966 for (int i = 0; i < count_of_code_ptr_entries(); i++) { 9966 ConstantPoolArray::Iterator code_iter(this, ConstantPoolArray::CODE_PTR);
9967 int index = first_code_ptr_index() + i; 9967 while (!code_iter.is_finished()) {
9968 v->VisitCodeEntry(reinterpret_cast<Address>(RawFieldOfElementAt(index))); 9968 v->VisitCodeEntry(reinterpret_cast<Address>(
9969 RawFieldOfElementAt(code_iter.next_index())));
9969 } 9970 }
9970 for (int i = 0; i < count_of_heap_ptr_entries(); i++) { 9971
9971 int index = first_heap_ptr_index() + i; 9972 ConstantPoolArray::Iterator heap_iter(this, ConstantPoolArray::HEAP_PTR);
9972 v->VisitPointer(RawFieldOfElementAt(index)); 9973 while (!heap_iter.is_finished()) {
9974 v->VisitPointer(RawFieldOfElementAt(heap_iter.next_index()));
9973 } 9975 }
9974 } 9976 }
9975 9977
9978
9979 void ConstantPoolArray::ClearPtrEntries(Isolate* isolate) {
9980 if (number_of_entries(CODE_PTR, SMALL_SECTION) > 0) {
ulan 2014/06/02 12:32:58 Type type[] = {CODE_PTR, HEAP_PTR}; Address value[
rmcilroy 2014/06/03 12:32:28 Done. I'm not convinced this is clearer though.
9981 int offset = OffsetOfElementAt(first_index(CODE_PTR, SMALL_SECTION));
9982 MemsetPointer(
9983 reinterpret_cast<Address*>(HeapObject::RawField(this, offset)),
9984 isolate->builtins()->builtin(Builtins::kIllegal)->entry(),
9985 number_of_entries(CODE_PTR, SMALL_SECTION));
9986 }
9987 if (number_of_entries(HEAP_PTR, SMALL_SECTION) > 0) {
9988 int offset = OffsetOfElementAt(first_index(HEAP_PTR, SMALL_SECTION));
9989 MemsetPointer(
9990 HeapObject::RawField(this, offset),
9991 isolate->heap()->undefined_value(),
9992 number_of_entries(HEAP_PTR, SMALL_SECTION));
9993 }
9994 if (is_extended_layout()) {
9995 if (number_of_entries(CODE_PTR, EXTENDED_SECTION) > 0) {
9996 int offset = OffsetOfElementAt(first_index(CODE_PTR, EXTENDED_SECTION));
9997 MemsetPointer(
9998 reinterpret_cast<Address*>(HeapObject::RawField(this, offset)),
9999 isolate->builtins()->builtin(Builtins::kIllegal)->entry(),
10000 number_of_entries(CODE_PTR, EXTENDED_SECTION));
10001 }
10002 if (number_of_entries(HEAP_PTR, EXTENDED_SECTION) > 0) {
10003 int offset = OffsetOfElementAt(first_index(HEAP_PTR, EXTENDED_SECTION));
10004 MemsetPointer(
10005 HeapObject::RawField(this, offset),
10006 isolate->heap()->undefined_value(),
10007 number_of_entries(HEAP_PTR, EXTENDED_SECTION));
10008 }
10009 }
10010 }
10011
9976 10012
9977 void JSFunction::JSFunctionIterateBody(int object_size, ObjectVisitor* v) { 10013 void JSFunction::JSFunctionIterateBody(int object_size, ObjectVisitor* v) {
9978 // Iterate over all fields in the body but take care in dealing with 10014 // Iterate over all fields in the body but take care in dealing with
9979 // the code entry. 10015 // the code entry.
9980 IteratePointers(v, kPropertiesOffset, kCodeEntryOffset); 10016 IteratePointers(v, kPropertiesOffset, kCodeEntryOffset);
9981 v->VisitCodeEntry(this->address() + kCodeEntryOffset); 10017 v->VisitCodeEntry(this->address() + kCodeEntryOffset);
9982 IteratePointers(v, kCodeEntryOffset + kPointerSize, object_size); 10018 IteratePointers(v, kCodeEntryOffset + kPointerSize, object_size);
9983 } 10019 }
9984 10020
9985 10021
(...skipping 7283 matching lines...) Expand 10 before | Expand all | Expand 10 after
17269 #define ERROR_MESSAGES_TEXTS(C, T) T, 17305 #define ERROR_MESSAGES_TEXTS(C, T) T,
17270 static const char* error_messages_[] = { 17306 static const char* error_messages_[] = {
17271 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) 17307 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS)
17272 }; 17308 };
17273 #undef ERROR_MESSAGES_TEXTS 17309 #undef ERROR_MESSAGES_TEXTS
17274 return error_messages_[reason]; 17310 return error_messages_[reason];
17275 } 17311 }
17276 17312
17277 17313
17278 } } // namespace v8::internal 17314 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698