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

Side by Side Diff: src/mark-compact.cc

Issue 6696042: Adding 'isolates' argument to LOG to get rid of multiple TLS fetches in profiling. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/isolates
Patch Set: Addressing code review feedback + rebase Created 9 years, 9 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 | « src/log.cc ('k') | src/objects.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 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 2884 matching lines...) Expand 10 before | Expand all | Expand 10 after
2895 heap_->MoveBlockToOldSpaceAndUpdateRegionMarks(new_addr, 2895 heap_->MoveBlockToOldSpaceAndUpdateRegionMarks(new_addr,
2896 old_addr, 2896 old_addr,
2897 obj_size); 2897 obj_size);
2898 } 2898 }
2899 } 2899 }
2900 2900
2901 ASSERT(!HeapObject::FromAddress(new_addr)->IsCode()); 2901 ASSERT(!HeapObject::FromAddress(new_addr)->IsCode());
2902 2902
2903 HeapObject* copied_to = HeapObject::FromAddress(new_addr); 2903 HeapObject* copied_to = HeapObject::FromAddress(new_addr);
2904 if (copied_to->IsSharedFunctionInfo()) { 2904 if (copied_to->IsSharedFunctionInfo()) {
2905 PROFILE(SharedFunctionInfoMoveEvent(old_addr, new_addr)); 2905 PROFILE(heap_->isolate(),
2906 SharedFunctionInfoMoveEvent(old_addr, new_addr));
2906 } 2907 }
2907 HEAP_PROFILE(heap_, ObjectMoveEvent(old_addr, new_addr)); 2908 HEAP_PROFILE(heap_, ObjectMoveEvent(old_addr, new_addr));
2908 2909
2909 return obj_size; 2910 return obj_size;
2910 } 2911 }
2911 2912
2912 2913
2913 int MarkCompactCollector::RelocateOldPointerObject(HeapObject* obj) { 2914 int MarkCompactCollector::RelocateOldPointerObject(HeapObject* obj) {
2914 return RelocateOldNonCodeObject(obj, heap_->old_pointer_space()); 2915 return RelocateOldNonCodeObject(obj, heap_->old_pointer_space());
2915 } 2916 }
(...skipping 26 matching lines...) Expand all
2942 if (new_addr != old_addr) { 2943 if (new_addr != old_addr) {
2943 // Move contents. 2944 // Move contents.
2944 heap_->MoveBlock(new_addr, old_addr, obj_size); 2945 heap_->MoveBlock(new_addr, old_addr, obj_size);
2945 } 2946 }
2946 2947
2947 HeapObject* copied_to = HeapObject::FromAddress(new_addr); 2948 HeapObject* copied_to = HeapObject::FromAddress(new_addr);
2948 if (copied_to->IsCode()) { 2949 if (copied_to->IsCode()) {
2949 // May also update inline cache target. 2950 // May also update inline cache target.
2950 Code::cast(copied_to)->Relocate(new_addr - old_addr); 2951 Code::cast(copied_to)->Relocate(new_addr - old_addr);
2951 // Notify the logger that compiled code has moved. 2952 // Notify the logger that compiled code has moved.
2952 PROFILE(CodeMoveEvent(old_addr, new_addr)); 2953 PROFILE(heap_->isolate(), CodeMoveEvent(old_addr, new_addr));
2953 } 2954 }
2954 HEAP_PROFILE(heap_, ObjectMoveEvent(old_addr, new_addr)); 2955 HEAP_PROFILE(heap_, ObjectMoveEvent(old_addr, new_addr));
2955 2956
2956 return obj_size; 2957 return obj_size;
2957 } 2958 }
2958 2959
2959 2960
2960 int MarkCompactCollector::RelocateNewObject(HeapObject* obj) { 2961 int MarkCompactCollector::RelocateNewObject(HeapObject* obj) {
2961 int obj_size = obj->Size(); 2962 int obj_size = obj->Size();
2962 2963
(...skipping 24 matching lines...) Expand all
2987 } 2988 }
2988 2989
2989 #ifdef DEBUG 2990 #ifdef DEBUG
2990 if (FLAG_gc_verbose) { 2991 if (FLAG_gc_verbose) {
2991 PrintF("relocate %p -> %p\n", old_addr, new_addr); 2992 PrintF("relocate %p -> %p\n", old_addr, new_addr);
2992 } 2993 }
2993 #endif 2994 #endif
2994 2995
2995 HeapObject* copied_to = HeapObject::FromAddress(new_addr); 2996 HeapObject* copied_to = HeapObject::FromAddress(new_addr);
2996 if (copied_to->IsSharedFunctionInfo()) { 2997 if (copied_to->IsSharedFunctionInfo()) {
2997 PROFILE(SharedFunctionInfoMoveEvent(old_addr, new_addr)); 2998 PROFILE(heap_->isolate(),
2999 SharedFunctionInfoMoveEvent(old_addr, new_addr));
2998 } 3000 }
2999 HEAP_PROFILE(heap_, ObjectMoveEvent(old_addr, new_addr)); 3001 HEAP_PROFILE(heap_, ObjectMoveEvent(old_addr, new_addr));
3000 3002
3001 return obj_size; 3003 return obj_size;
3002 } 3004 }
3003 3005
3004 3006
3005 void MarkCompactCollector::EnableCodeFlushing(bool enable) { 3007 void MarkCompactCollector::EnableCodeFlushing(bool enable) {
3006 if (enable) { 3008 if (enable) {
3007 if (code_flusher_ != NULL) return; 3009 if (code_flusher_ != NULL) return;
3008 code_flusher_ = new CodeFlusher(heap_->isolate()); 3010 code_flusher_ = new CodeFlusher(heap_->isolate());
3009 } else { 3011 } else {
3010 if (code_flusher_ == NULL) return; 3012 if (code_flusher_ == NULL) return;
3011 delete code_flusher_; 3013 delete code_flusher_;
3012 code_flusher_ = NULL; 3014 code_flusher_ = NULL;
3013 } 3015 }
3014 } 3016 }
3015 3017
3016 3018
3017 void MarkCompactCollector::ReportDeleteIfNeeded(HeapObject* obj) { 3019 void MarkCompactCollector::ReportDeleteIfNeeded(HeapObject* obj) {
3018 #ifdef ENABLE_GDB_JIT_INTERFACE 3020 #ifdef ENABLE_GDB_JIT_INTERFACE
3019 if (obj->IsCode()) { 3021 if (obj->IsCode()) {
3020 GDBJITInterface::RemoveCode(reinterpret_cast<Code*>(obj)); 3022 GDBJITInterface::RemoveCode(reinterpret_cast<Code*>(obj));
3021 } 3023 }
3022 #endif 3024 #endif
3023 #ifdef ENABLE_LOGGING_AND_PROFILING 3025 #ifdef ENABLE_LOGGING_AND_PROFILING
3024 if (obj->IsCode()) { 3026 if (obj->IsCode()) {
3025 PROFILE(CodeDeleteEvent(obj->address())); 3027 PROFILE(ISOLATE, CodeDeleteEvent(obj->address()));
3026 } 3028 }
3027 #endif 3029 #endif
3028 } 3030 }
3029 3031
3030 3032
3031 int MarkCompactCollector::SizeOfMarkedObject(HeapObject* obj) { 3033 int MarkCompactCollector::SizeOfMarkedObject(HeapObject* obj) {
3032 MapWord map_word = obj->map_word(); 3034 MapWord map_word = obj->map_word();
3033 map_word.ClearMark(); 3035 map_word.ClearMark();
3034 return obj->SizeFromMap(map_word.ToMap()); 3036 return obj->SizeFromMap(map_word.ToMap());
3035 } 3037 }
3036 3038
3037 3039
3038 void MarkCompactCollector::Initialize() { 3040 void MarkCompactCollector::Initialize() {
3039 StaticPointersToNewGenUpdatingVisitor::Initialize(); 3041 StaticPointersToNewGenUpdatingVisitor::Initialize();
3040 StaticMarkingVisitor::Initialize(); 3042 StaticMarkingVisitor::Initialize();
3041 } 3043 }
3042 3044
3043 3045
3044 } } // namespace v8::internal 3046 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/log.cc ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698