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

Side by Side Diff: src/heap.cc

Issue 11859027: Temporarily disable deferred stack trace formatting. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 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
« no previous file with comments | « no previous file | src/isolate.cc » ('j') | src/isolate.cc » ('J')
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 // 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 7270 matching lines...) Expand 10 before | Expand all | Expand 10 after
7281 MapWord first_word = object->map_word(); 7281 MapWord first_word = object->map_word();
7282 if (first_word.IsForwardingAddress()) { 7282 if (first_word.IsForwardingAddress()) {
7283 list_[i] = first_word.ToForwardingAddress(); 7283 list_[i] = first_word.ToForwardingAddress();
7284 } 7284 }
7285 } 7285 }
7286 } 7286 }
7287 7287
7288 7288
7289 // Unforwarded objects in new space are dead and removed from the list. 7289 // Unforwarded objects in new space are dead and removed from the list.
7290 void ErrorObjectList::UpdateReferencesInNewSpace(Heap* heap) { 7290 void ErrorObjectList::UpdateReferencesInNewSpace(Heap* heap) {
7291 if (list_.is_empty()) return;
7291 if (!nested_) { 7292 if (!nested_) {
7292 int write_index = 0; 7293 int write_index = 0;
7293 for (int i = 0; i < list_.length(); i++) { 7294 for (int i = 0; i < list_.length(); i++) {
7294 MapWord first_word = HeapObject::cast(list_[i])->map_word(); 7295 MapWord first_word = HeapObject::cast(list_[i])->map_word();
7295 if (first_word.IsForwardingAddress()) { 7296 if (first_word.IsForwardingAddress()) {
7296 list_[write_index++] = first_word.ToForwardingAddress(); 7297 list_[write_index++] = first_word.ToForwardingAddress();
7297 } 7298 }
7298 } 7299 }
7299 list_.Rewind(write_index); 7300 list_.Rewind(write_index);
7300 } else { 7301 } else {
7301 // If a GC is triggered during DeferredFormatStackTrace, we do not move 7302 // If a GC is triggered during DeferredFormatStackTrace, we do not move
7302 // objects in the list, just remove dead ones, as to not confuse the 7303 // objects in the list, just remove dead ones, as to not confuse the
7303 // loop in DeferredFormatStackTrace. 7304 // loop in DeferredFormatStackTrace.
7304 for (int i = 0; i < list_.length(); i++) { 7305 for (int i = 0; i < list_.length(); i++) {
7305 MapWord first_word = HeapObject::cast(list_[i])->map_word(); 7306 MapWord first_word = HeapObject::cast(list_[i])->map_word();
7306 list_[i] = first_word.IsForwardingAddress() 7307 list_[i] = first_word.IsForwardingAddress()
7307 ? first_word.ToForwardingAddress() 7308 ? first_word.ToForwardingAddress()
7308 : heap->the_hole_value(); 7309 : heap->the_hole_value();
7309 } 7310 }
7310 } 7311 }
7311 } 7312 }
7312 7313
7313 7314
7314 void ErrorObjectList::DeferredFormatStackTrace(Isolate* isolate) { 7315 void ErrorObjectList::DeferredFormatStackTrace(Isolate* isolate) {
7315 // If formatting the stack trace causes a GC, this method will be 7316 // If formatting the stack trace causes a GC, this method will be
7316 // recursively called. In that case, skip the recursive call, since 7317 // recursively called. In that case, skip the recursive call, since
7317 // the loop modifies the list while iterating over it. 7318 // the loop modifies the list while iterating over it.
7318 if (nested_ || isolate->has_pending_exception()) return; 7319 if (nested_ || list_.is_empty() || isolate->has_pending_exception()) return;
7319 nested_ = true; 7320 nested_ = true;
7320 HandleScope scope(isolate); 7321 HandleScope scope(isolate);
7321 Handle<String> stack_key = isolate->factory()->stack_symbol(); 7322 Handle<String> stack_key = isolate->factory()->stack_symbol();
7322 int write_index = 0; 7323 int write_index = 0;
7323 int budget = kBudgetPerGC; 7324 int budget = kBudgetPerGC;
7324 for (int i = 0; i < list_.length(); i++) { 7325 for (int i = 0; i < list_.length(); i++) {
7325 Object* object = list_[i]; 7326 Object* object = list_[i];
7326 JSFunction* getter_fun; 7327 JSFunction* getter_fun;
7327 7328
7328 { AssertNoAllocation assert; 7329 { AssertNoAllocation assert;
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
7507 static_cast<int>(object_sizes_last_time_[index])); 7508 static_cast<int>(object_sizes_last_time_[index]));
7508 FIXED_ARRAY_SUB_INSTANCE_TYPE_LIST(ADJUST_LAST_TIME_OBJECT_COUNT) 7509 FIXED_ARRAY_SUB_INSTANCE_TYPE_LIST(ADJUST_LAST_TIME_OBJECT_COUNT)
7509 #undef ADJUST_LAST_TIME_OBJECT_COUNT 7510 #undef ADJUST_LAST_TIME_OBJECT_COUNT
7510 7511
7511 memcpy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); 7512 memcpy(object_counts_last_time_, object_counts_, sizeof(object_counts_));
7512 memcpy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); 7513 memcpy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_));
7513 ClearObjectStats(); 7514 ClearObjectStats();
7514 } 7515 }
7515 7516
7516 } } // namespace v8::internal 7517 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | src/isolate.cc » ('j') | src/isolate.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698