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

Side by Side Diff: src/objects.cc

Issue 9178021: When adjusting page's live bytes counter from the mutator adjust owners unswept free bytes counter. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 11 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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 975 matching lines...) Expand 10 before | Expand all | Expand 10 after
986 : heap->short_external_string_map())); 986 : heap->short_external_string_map()));
987 } 987 }
988 ExternalTwoByteString* self = ExternalTwoByteString::cast(this); 988 ExternalTwoByteString* self = ExternalTwoByteString::cast(this);
989 self->set_resource(resource); 989 self->set_resource(resource);
990 if (is_symbol) self->Hash(); // Force regeneration of the hash value. 990 if (is_symbol) self->Hash(); // Force regeneration of the hash value.
991 991
992 // Fill the remainder of the string with dead wood. 992 // Fill the remainder of the string with dead wood.
993 int new_size = this->Size(); // Byte size of the external String object. 993 int new_size = this->Size(); // Byte size of the external String object.
994 heap->CreateFillerObjectAt(this->address() + new_size, size - new_size); 994 heap->CreateFillerObjectAt(this->address() + new_size, size - new_size);
995 if (Marking::IsBlack(Marking::MarkBitFrom(this))) { 995 if (Marking::IsBlack(Marking::MarkBitFrom(this))) {
996 MemoryChunk::IncrementLiveBytes(this->address(), new_size - size); 996 MemoryChunk::IncrementLiveBytesFromMutator(this->address(), new_size - size) ;
997 } 997 }
998 return true; 998 return true;
999 } 999 }
1000 1000
1001 1001
1002 bool String::MakeExternal(v8::String::ExternalAsciiStringResource* resource) { 1002 bool String::MakeExternal(v8::String::ExternalAsciiStringResource* resource) {
1003 #ifdef DEBUG 1003 #ifdef DEBUG
1004 if (FLAG_enable_slow_asserts) { 1004 if (FLAG_enable_slow_asserts) {
1005 // Assert that the resource and the string are equivalent. 1005 // Assert that the resource and the string are equivalent.
1006 ASSERT(static_cast<size_t>(this->length()) == resource->length()); 1006 ASSERT(static_cast<size_t>(this->length()) == resource->length());
(...skipping 23 matching lines...) Expand all
1030 : heap->short_external_ascii_string_map()); 1030 : heap->short_external_ascii_string_map());
1031 } 1031 }
1032 ExternalAsciiString* self = ExternalAsciiString::cast(this); 1032 ExternalAsciiString* self = ExternalAsciiString::cast(this);
1033 self->set_resource(resource); 1033 self->set_resource(resource);
1034 if (is_symbol) self->Hash(); // Force regeneration of the hash value. 1034 if (is_symbol) self->Hash(); // Force regeneration of the hash value.
1035 1035
1036 // Fill the remainder of the string with dead wood. 1036 // Fill the remainder of the string with dead wood.
1037 int new_size = this->Size(); // Byte size of the external String object. 1037 int new_size = this->Size(); // Byte size of the external String object.
1038 heap->CreateFillerObjectAt(this->address() + new_size, size - new_size); 1038 heap->CreateFillerObjectAt(this->address() + new_size, size - new_size);
1039 if (Marking::IsBlack(Marking::MarkBitFrom(this))) { 1039 if (Marking::IsBlack(Marking::MarkBitFrom(this))) {
1040 MemoryChunk::IncrementLiveBytes(this->address(), new_size - size); 1040 MemoryChunk::IncrementLiveBytesFromMutator(this->address(), new_size - size) ;
1041 } 1041 }
1042 return true; 1042 return true;
1043 } 1043 }
1044 1044
1045 1045
1046 void String::StringShortPrint(StringStream* accumulator) { 1046 void String::StringShortPrint(StringStream* accumulator) {
1047 int len = length(); 1047 int len = length();
1048 if (len > kMaxShortPrintLength) { 1048 if (len > kMaxShortPrintLength) {
1049 accumulator->Add("<Very long string[%u]>", len); 1049 accumulator->Add("<Very long string[%u]>", len);
1050 return; 1050 return;
(...skipping 2402 matching lines...) Expand 10 before | Expand all | Expand 10 after
3453 // We have now successfully allocated all the necessary objects. 3453 // We have now successfully allocated all the necessary objects.
3454 // Changes can now be made with the guarantee that all of them take effect. 3454 // Changes can now be made with the guarantee that all of them take effect.
3455 3455
3456 // Resize the object in the heap if necessary. 3456 // Resize the object in the heap if necessary.
3457 int new_instance_size = new_map->instance_size(); 3457 int new_instance_size = new_map->instance_size();
3458 int instance_size_delta = map_of_this->instance_size() - new_instance_size; 3458 int instance_size_delta = map_of_this->instance_size() - new_instance_size;
3459 ASSERT(instance_size_delta >= 0); 3459 ASSERT(instance_size_delta >= 0);
3460 current_heap->CreateFillerObjectAt(this->address() + new_instance_size, 3460 current_heap->CreateFillerObjectAt(this->address() + new_instance_size,
3461 instance_size_delta); 3461 instance_size_delta);
3462 if (Marking::IsBlack(Marking::MarkBitFrom(this))) { 3462 if (Marking::IsBlack(Marking::MarkBitFrom(this))) {
3463 MemoryChunk::IncrementLiveBytes(this->address(), -instance_size_delta); 3463 MemoryChunk::IncrementLiveBytesFromMutator(this->address(),
3464 -instance_size_delta);
3464 } 3465 }
3465 3466
3466 3467
3467 set_map(new_map); 3468 set_map(new_map);
3468 new_map->clear_instance_descriptors(); 3469 new_map->clear_instance_descriptors();
3469 3470
3470 set_properties(dictionary); 3471 set_properties(dictionary);
3471 3472
3472 current_heap->isolate()->counters()->props_to_dictionary()->Increment(); 3473 current_heap->isolate()->counters()->props_to_dictionary()->Increment();
3473 3474
(...skipping 9332 matching lines...) Expand 10 before | Expand all | Expand 10 after
12806 if (break_point_objects()->IsUndefined()) return 0; 12807 if (break_point_objects()->IsUndefined()) return 0;
12807 // Single break point. 12808 // Single break point.
12808 if (!break_point_objects()->IsFixedArray()) return 1; 12809 if (!break_point_objects()->IsFixedArray()) return 1;
12809 // Multiple break points. 12810 // Multiple break points.
12810 return FixedArray::cast(break_point_objects())->length(); 12811 return FixedArray::cast(break_point_objects())->length();
12811 } 12812 }
12812 #endif // ENABLE_DEBUGGER_SUPPORT 12813 #endif // ENABLE_DEBUGGER_SUPPORT
12813 12814
12814 12815
12815 } } // namespace v8::internal 12816 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/mark-compact-inl.h ('k') | src/runtime.cc » ('j') | src/spaces.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698