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

Side by Side Diff: src/assembler.h

Issue 2693002: More precise break points and stepping when debugging... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 10 years, 6 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/arm/full-codegen-arm.cc ('k') | src/assembler.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 (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 // code which are of interest when making stack traces to pin-point the source 111 // code which are of interest when making stack traces to pin-point the source
112 // location of a stack frame as close as possible. The "statement position" is 112 // location of a stack frame as close as possible. The "statement position" is
113 // collected at the beginning at each statement, and is used to indicate 113 // collected at the beginning at each statement, and is used to indicate
114 // possible break locations. kNoPosition is used to indicate an 114 // possible break locations. kNoPosition is used to indicate an
115 // invalid/uninitialized position value. 115 // invalid/uninitialized position value.
116 static const int kNoPosition = -1; 116 static const int kNoPosition = -1;
117 117
118 enum Mode { 118 enum Mode {
119 // Please note the order is important (see IsCodeTarget, IsGCRelocMode). 119 // Please note the order is important (see IsCodeTarget, IsGCRelocMode).
120 CONSTRUCT_CALL, // code target that is a call to a JavaScript constructor. 120 CONSTRUCT_CALL, // code target that is a call to a JavaScript constructor.
121 CODE_TARGET_CONTEXT, // code target used for contextual loads. 121 CODE_TARGET_CONTEXT, // Code target used for contextual loads.
122 DEBUG_BREAK, 122 DEBUG_BREAK, // Code target for the debugger statement.
123 CODE_TARGET, // code target which is not any of the above. 123 CODE_TARGET, // Code target which is not any of the above.
124 EMBEDDED_OBJECT, 124 EMBEDDED_OBJECT,
125 125
126 // Everything after runtime_entry (inclusive) is not GC'ed. 126 // Everything after runtime_entry (inclusive) is not GC'ed.
127 RUNTIME_ENTRY, 127 RUNTIME_ENTRY,
128 JS_RETURN, // Marks start of the ExitJSFrame code. 128 JS_RETURN, // Marks start of the ExitJSFrame code.
129 COMMENT, 129 COMMENT,
130 POSITION, // See comment for kNoPosition above. 130 POSITION, // See comment for kNoPosition above.
131 STATEMENT_POSITION, // See comment for kNoPosition above. 131 STATEMENT_POSITION, // See comment for kNoPosition above.
132 DEBUG_BREAK_SLOT, // Additional code inserted for debug break slot.
132 EXTERNAL_REFERENCE, // The address of an external C++ function. 133 EXTERNAL_REFERENCE, // The address of an external C++ function.
133 INTERNAL_REFERENCE, // An address inside the same function. 134 INTERNAL_REFERENCE, // An address inside the same function.
134 135
135 // add more as needed 136 // add more as needed
136 // Pseudo-types 137 // Pseudo-types
137 NUMBER_OF_MODES, // must be no greater than 14 - see RelocInfoWriter 138 NUMBER_OF_MODES, // must be no greater than 14 - see RelocInfoWriter
138 NONE, // never recorded 139 NONE, // never recorded
139 LAST_CODE_ENUM = CODE_TARGET, 140 LAST_CODE_ENUM = CODE_TARGET,
140 LAST_GCED_ENUM = EMBEDDED_OBJECT 141 LAST_GCED_ENUM = EMBEDDED_OBJECT
141 }; 142 };
(...skipping 25 matching lines...) Expand all
167 } 168 }
168 static inline bool IsStatementPosition(Mode mode) { 169 static inline bool IsStatementPosition(Mode mode) {
169 return mode == STATEMENT_POSITION; 170 return mode == STATEMENT_POSITION;
170 } 171 }
171 static inline bool IsExternalReference(Mode mode) { 172 static inline bool IsExternalReference(Mode mode) {
172 return mode == EXTERNAL_REFERENCE; 173 return mode == EXTERNAL_REFERENCE;
173 } 174 }
174 static inline bool IsInternalReference(Mode mode) { 175 static inline bool IsInternalReference(Mode mode) {
175 return mode == INTERNAL_REFERENCE; 176 return mode == INTERNAL_REFERENCE;
176 } 177 }
178 static inline bool IsDebugBreakSlot(Mode mode) {
179 return mode == DEBUG_BREAK_SLOT;
180 }
177 static inline int ModeMask(Mode mode) { return 1 << mode; } 181 static inline int ModeMask(Mode mode) { return 1 << mode; }
178 182
179 // Accessors 183 // Accessors
180 byte* pc() const { return pc_; } 184 byte* pc() const { return pc_; }
181 void set_pc(byte* pc) { pc_ = pc; } 185 void set_pc(byte* pc) { pc_ = pc; }
182 Mode rmode() const { return rmode_; } 186 Mode rmode() const { return rmode_; }
183 intptr_t data() const { return data_; } 187 intptr_t data() const { return data_; }
184 188
185 // Apply a relocation by delta bytes 189 // Apply a relocation by delta bytes
186 INLINE(void apply(intptr_t delta)); 190 INLINE(void apply(intptr_t delta));
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 // Patch the code with some other code. 240 // Patch the code with some other code.
237 void PatchCode(byte* instructions, int instruction_count); 241 void PatchCode(byte* instructions, int instruction_count);
238 242
239 // Patch the code with a call. 243 // Patch the code with a call.
240 void PatchCodeWithCall(Address target, int guard_bytes); 244 void PatchCodeWithCall(Address target, int guard_bytes);
241 245
242 // Check whether this return sequence has been patched 246 // Check whether this return sequence has been patched
243 // with a call to the debugger. 247 // with a call to the debugger.
244 INLINE(bool IsPatchedReturnSequence()); 248 INLINE(bool IsPatchedReturnSequence());
245 249
250 // Check whether this debug break slot has been patched with a call to the
251 // debugger.
252 INLINE(bool IsPatchedDebugBreakSlotSequence());
253
246 #ifdef ENABLE_DISASSEMBLER 254 #ifdef ENABLE_DISASSEMBLER
247 // Printing 255 // Printing
248 static const char* RelocModeName(Mode rmode); 256 static const char* RelocModeName(Mode rmode);
249 void Print(); 257 void Print();
250 #endif // ENABLE_DISASSEMBLER 258 #endif // ENABLE_DISASSEMBLER
251 #ifdef DEBUG 259 #ifdef DEBUG
252 // Debugging 260 // Debugging
253 void Verify(); 261 void Verify();
254 #endif 262 #endif
255 263
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 unsigned int num_bits_set; 564 unsigned int num_bits_set;
557 for (num_bits_set = 0; x; x >>= 1) { 565 for (num_bits_set = 0; x; x >>= 1) {
558 num_bits_set += x & 1; 566 num_bits_set += x & 1;
559 } 567 }
560 return num_bits_set; 568 return num_bits_set;
561 } 569 }
562 570
563 } } // namespace v8::internal 571 } } // namespace v8::internal
564 572
565 #endif // V8_ASSEMBLER_H_ 573 #endif // V8_ASSEMBLER_H_
OLDNEW
« no previous file with comments | « src/arm/full-codegen-arm.cc ('k') | src/assembler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698