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

Side by Side Diff: src/deoptimizer.h

Issue 256653004: Always include debugger support. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Makefile Created 6 years, 8 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/debug-agent.cc ('k') | src/deoptimizer.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 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 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 int jsframe_count() const { return jsframe_count_; } 162 int jsframe_count() const { return jsframe_count_; }
163 163
164 static Deoptimizer* New(JSFunction* function, 164 static Deoptimizer* New(JSFunction* function,
165 BailoutType type, 165 BailoutType type,
166 unsigned bailout_id, 166 unsigned bailout_id,
167 Address from, 167 Address from,
168 int fp_to_sp_delta, 168 int fp_to_sp_delta,
169 Isolate* isolate); 169 Isolate* isolate);
170 static Deoptimizer* Grab(Isolate* isolate); 170 static Deoptimizer* Grab(Isolate* isolate);
171 171
172 #ifdef ENABLE_DEBUGGER_SUPPORT
173 // The returned object with information on the optimized frame needs to be 172 // The returned object with information on the optimized frame needs to be
174 // freed before another one can be generated. 173 // freed before another one can be generated.
175 static DeoptimizedFrameInfo* DebuggerInspectableFrame(JavaScriptFrame* frame, 174 static DeoptimizedFrameInfo* DebuggerInspectableFrame(JavaScriptFrame* frame,
176 int jsframe_index, 175 int jsframe_index,
177 Isolate* isolate); 176 Isolate* isolate);
178 static void DeleteDebuggerInspectableFrame(DeoptimizedFrameInfo* info, 177 static void DeleteDebuggerInspectableFrame(DeoptimizedFrameInfo* info,
179 Isolate* isolate); 178 Isolate* isolate);
180 #endif
181 179
182 // Makes sure that there is enough room in the relocation 180 // Makes sure that there is enough room in the relocation
183 // information of a code object to perform lazy deoptimization 181 // information of a code object to perform lazy deoptimization
184 // patching. If there is not enough room a new relocation 182 // patching. If there is not enough room a new relocation
185 // information object is allocated and comments are added until it 183 // information object is allocated and comments are added until it
186 // is big enough. 184 // is big enough.
187 static void EnsureRelocSpaceForLazyDeoptimization(Handle<Code> code); 185 static void EnsureRelocSpaceForLazyDeoptimization(Handle<Code> code);
188 186
189 // Deoptimize the function now. Its current optimized code will never be run 187 // Deoptimize the function now. Its current optimized code will never be run
190 // again and any activations of the optimized code will get deoptimized when 188 // again and any activations of the optimized code will get deoptimized when
(...skipping 14 matching lines...) Expand all
205 // Visit all the known optimized functions in a given isolate. 203 // Visit all the known optimized functions in a given isolate.
206 static void VisitAllOptimizedFunctions( 204 static void VisitAllOptimizedFunctions(
207 Isolate* isolate, OptimizedFunctionVisitor* visitor); 205 Isolate* isolate, OptimizedFunctionVisitor* visitor);
208 206
209 // The size in bytes of the code required at a lazy deopt patch site. 207 // The size in bytes of the code required at a lazy deopt patch site.
210 static int patch_size(); 208 static int patch_size();
211 209
212 ~Deoptimizer(); 210 ~Deoptimizer();
213 211
214 void MaterializeHeapObjects(JavaScriptFrameIterator* it); 212 void MaterializeHeapObjects(JavaScriptFrameIterator* it);
215 #ifdef ENABLE_DEBUGGER_SUPPORT 213
216 void MaterializeHeapNumbersForDebuggerInspectableFrame( 214 void MaterializeHeapNumbersForDebuggerInspectableFrame(
217 Address parameters_top, 215 Address parameters_top,
218 uint32_t parameters_size, 216 uint32_t parameters_size,
219 Address expressions_top, 217 Address expressions_top,
220 uint32_t expressions_size, 218 uint32_t expressions_size,
221 DeoptimizedFrameInfo* info); 219 DeoptimizedFrameInfo* info);
222 #endif
223 220
224 static void ComputeOutputFrames(Deoptimizer* deoptimizer); 221 static void ComputeOutputFrames(Deoptimizer* deoptimizer);
225 222
226 223
227 enum GetEntryMode { 224 enum GetEntryMode {
228 CALCULATE_ENTRY_ADDRESS, 225 CALCULATE_ENTRY_ADDRESS,
229 ENSURE_ENTRY_CODE 226 ENSURE_ENTRY_CODE
230 }; 227 };
231 228
232 229
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 634
638 int ComputeFixedSize(); 635 int ComputeFixedSize();
639 }; 636 };
640 637
641 638
642 class DeoptimizerData { 639 class DeoptimizerData {
643 public: 640 public:
644 explicit DeoptimizerData(MemoryAllocator* allocator); 641 explicit DeoptimizerData(MemoryAllocator* allocator);
645 ~DeoptimizerData(); 642 ~DeoptimizerData();
646 643
647 #ifdef ENABLE_DEBUGGER_SUPPORT
648 void Iterate(ObjectVisitor* v); 644 void Iterate(ObjectVisitor* v);
649 #endif
650 645
651 private: 646 private:
652 MemoryAllocator* allocator_; 647 MemoryAllocator* allocator_;
653 int deopt_entry_code_entries_[Deoptimizer::kBailoutTypesWithCodeEntry]; 648 int deopt_entry_code_entries_[Deoptimizer::kBailoutTypesWithCodeEntry];
654 MemoryChunk* deopt_entry_code_[Deoptimizer::kBailoutTypesWithCodeEntry]; 649 MemoryChunk* deopt_entry_code_[Deoptimizer::kBailoutTypesWithCodeEntry];
655 650
656 #ifdef ENABLE_DEBUGGER_SUPPORT
657 DeoptimizedFrameInfo* deoptimized_frame_info_; 651 DeoptimizedFrameInfo* deoptimized_frame_info_;
658 #endif
659 652
660 Deoptimizer* current_; 653 Deoptimizer* current_;
661 654
662 friend class Deoptimizer; 655 friend class Deoptimizer;
663 656
664 DISALLOW_COPY_AND_ASSIGN(DeoptimizerData); 657 DISALLOW_COPY_AND_ASSIGN(DeoptimizerData);
665 }; 658 };
666 659
667 660
668 class TranslationBuffer BASE_EMBEDDED { 661 class TranslationBuffer BASE_EMBEDDED {
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 Handle<FixedArray> GetStackEntries(); 905 Handle<FixedArray> GetStackEntries();
913 Handle<FixedArray> EnsureStackEntries(int size); 906 Handle<FixedArray> EnsureStackEntries(int size);
914 907
915 int StackIdToIndex(Address fp); 908 int StackIdToIndex(Address fp);
916 909
917 Isolate* isolate_; 910 Isolate* isolate_;
918 List<Address> frame_fps_; 911 List<Address> frame_fps_;
919 }; 912 };
920 913
921 914
922 #ifdef ENABLE_DEBUGGER_SUPPORT
923 // Class used to represent an unoptimized frame when the debugger 915 // Class used to represent an unoptimized frame when the debugger
924 // needs to inspect a frame that is part of an optimized frame. The 916 // needs to inspect a frame that is part of an optimized frame. The
925 // internally used FrameDescription objects are not GC safe so for use 917 // internally used FrameDescription objects are not GC safe so for use
926 // by the debugger frame information is copied to an object of this type. 918 // by the debugger frame information is copied to an object of this type.
927 // Represents parameters in unadapted form so their number might mismatch 919 // Represents parameters in unadapted form so their number might mismatch
928 // formal parameter count. 920 // formal parameter count.
929 class DeoptimizedFrameInfo : public Malloced { 921 class DeoptimizedFrameInfo : public Malloced {
930 public: 922 public:
931 DeoptimizedFrameInfo(Deoptimizer* deoptimizer, 923 DeoptimizedFrameInfo(Deoptimizer* deoptimizer,
932 int frame_index, 924 int frame_index,
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
986 JSFunction* function_; 978 JSFunction* function_;
987 bool has_construct_stub_; 979 bool has_construct_stub_;
988 int parameters_count_; 980 int parameters_count_;
989 int expression_count_; 981 int expression_count_;
990 Object** parameters_; 982 Object** parameters_;
991 Object** expression_stack_; 983 Object** expression_stack_;
992 int source_position_; 984 int source_position_;
993 985
994 friend class Deoptimizer; 986 friend class Deoptimizer;
995 }; 987 };
996 #endif
997 988
998 } } // namespace v8::internal 989 } } // namespace v8::internal
999 990
1000 #endif // V8_DEOPTIMIZER_H_ 991 #endif // V8_DEOPTIMIZER_H_
OLDNEW
« no previous file with comments | « src/debug-agent.cc ('k') | src/deoptimizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698