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

Side by Side Diff: src/objects.cc

Issue 8342037: Switch UnreachableObjectsFilter to use Marking instead of InstrusiveMarking. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years, 2 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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 871 matching lines...) Expand 10 before | Expand all | Expand 10 after
882 self->Hash(); // Force regeneration of the hash value. 882 self->Hash(); // Force regeneration of the hash value.
883 // Now morph this external string into a external symbol. 883 // Now morph this external string into a external symbol.
884 this->set_map(is_ascii ? 884 this->set_map(is_ascii ?
885 heap->external_symbol_with_ascii_data_map() : 885 heap->external_symbol_with_ascii_data_map() :
886 heap->external_symbol_map()); 886 heap->external_symbol_map());
887 } 887 }
888 888
889 // Fill the remainder of the string with dead wood. 889 // Fill the remainder of the string with dead wood.
890 int new_size = this->Size(); // Byte size of the external String object. 890 int new_size = this->Size(); // Byte size of the external String object.
891 heap->CreateFillerObjectAt(this->address() + new_size, size - new_size); 891 heap->CreateFillerObjectAt(this->address() + new_size, size - new_size);
892 if (Marking::IsBlack(Marking::MarkBitFrom(this))) { 892 if (MarkCompactCollector::IsLiveBytesUpdateRequired(this)) {
893 MemoryChunk::IncrementLiveBytes(this->address(), new_size - size); 893 MemoryChunk::IncrementLiveBytes(this->address(), new_size - size);
894 } 894 }
895 return true; 895 return true;
896 } 896 }
897 897
898 898
899 bool String::MakeExternal(v8::String::ExternalAsciiStringResource* resource) { 899 bool String::MakeExternal(v8::String::ExternalAsciiStringResource* resource) {
900 #ifdef DEBUG 900 #ifdef DEBUG
901 if (FLAG_enable_slow_asserts) { 901 if (FLAG_enable_slow_asserts) {
902 // Assert that the resource and the string are equivalent. 902 // Assert that the resource and the string are equivalent.
(...skipping 28 matching lines...) Expand all
931 // was a symbol to start with. 931 // was a symbol to start with.
932 if (is_symbol) { 932 if (is_symbol) {
933 self->Hash(); // Force regeneration of the hash value. 933 self->Hash(); // Force regeneration of the hash value.
934 // Now morph this external string into a external symbol. 934 // Now morph this external string into a external symbol.
935 this->set_map(heap->external_ascii_symbol_map()); 935 this->set_map(heap->external_ascii_symbol_map());
936 } 936 }
937 937
938 // Fill the remainder of the string with dead wood. 938 // Fill the remainder of the string with dead wood.
939 int new_size = this->Size(); // Byte size of the external String object. 939 int new_size = this->Size(); // Byte size of the external String object.
940 heap->CreateFillerObjectAt(this->address() + new_size, size - new_size); 940 heap->CreateFillerObjectAt(this->address() + new_size, size - new_size);
941 if (Marking::IsBlack(Marking::MarkBitFrom(this))) { 941 if (MarkCompactCollector::IsLiveBytesUpdateRequired(this)) {
942 MemoryChunk::IncrementLiveBytes(this->address(), new_size - size); 942 MemoryChunk::IncrementLiveBytes(this->address(), new_size - size);
943 } 943 }
944 944
945 return true; 945 return true;
946 } 946 }
947 947
948 948
949 void String::StringShortPrint(StringStream* accumulator) { 949 void String::StringShortPrint(StringStream* accumulator) {
950 int len = length(); 950 int len = length();
951 if (len > kMaxShortPrintLength) { 951 if (len > kMaxShortPrintLength) {
(...skipping 2296 matching lines...) Expand 10 before | Expand all | Expand 10 after
3248 3248
3249 // We have now successfully allocated all the necessary objects. 3249 // We have now successfully allocated all the necessary objects.
3250 // Changes can now be made with the guarantee that all of them take effect. 3250 // Changes can now be made with the guarantee that all of them take effect.
3251 3251
3252 // Resize the object in the heap if necessary. 3252 // Resize the object in the heap if necessary.
3253 int new_instance_size = new_map->instance_size(); 3253 int new_instance_size = new_map->instance_size();
3254 int instance_size_delta = map_of_this->instance_size() - new_instance_size; 3254 int instance_size_delta = map_of_this->instance_size() - new_instance_size;
3255 ASSERT(instance_size_delta >= 0); 3255 ASSERT(instance_size_delta >= 0);
3256 current_heap->CreateFillerObjectAt(this->address() + new_instance_size, 3256 current_heap->CreateFillerObjectAt(this->address() + new_instance_size,
3257 instance_size_delta); 3257 instance_size_delta);
3258 if (Marking::IsBlack(Marking::MarkBitFrom(this))) { 3258 if (MarkCompactCollector::IsLiveBytesUpdateRequired(this)) {
3259 MemoryChunk::IncrementLiveBytes(this->address(), -instance_size_delta); 3259 MemoryChunk::IncrementLiveBytes(this->address(), -instance_size_delta);
3260 } 3260 }
3261 3261
3262 3262
3263 set_map(new_map); 3263 set_map(new_map);
3264 new_map->clear_instance_descriptors(); 3264 new_map->clear_instance_descriptors();
3265 3265
3266 set_properties(dictionary); 3266 set_properties(dictionary);
3267 3267
3268 current_heap->isolate()->counters()->props_to_dictionary()->Increment(); 3268 current_heap->isolate()->counters()->props_to_dictionary()->Increment();
(...skipping 9069 matching lines...) Expand 10 before | Expand all | Expand 10 after
12338 if (break_point_objects()->IsUndefined()) return 0; 12338 if (break_point_objects()->IsUndefined()) return 0;
12339 // Single break point. 12339 // Single break point.
12340 if (!break_point_objects()->IsFixedArray()) return 1; 12340 if (!break_point_objects()->IsFixedArray()) return 1;
12341 // Multiple break points. 12341 // Multiple break points.
12342 return FixedArray::cast(break_point_objects())->length(); 12342 return FixedArray::cast(break_point_objects())->length();
12343 } 12343 }
12344 #endif // ENABLE_DEBUGGER_SUPPORT 12344 #endif // ENABLE_DEBUGGER_SUPPORT
12345 12345
12346 12346
12347 } } // namespace v8::internal 12347 } } // namespace v8::internal
OLDNEW
« src/mark-compact.cc ('K') | « src/mark-compact-inl.h ('k') | src/runtime.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698