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

Side by Side Diff: src/debug/debug.cc

Issue 2650193002: [debugger] remove debugger statement support from FCG/CS. (Closed)
Patch Set: Created 3 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/debug/debug.h" 5 #include "src/debug/debug.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "src/api.h" 9 #include "src/api.h"
10 #include "src/arguments.h" 10 #include "src/arguments.h"
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 186
187 int CodeBreakIterator::GetModeMask(BreakLocatorType type) { 187 int CodeBreakIterator::GetModeMask(BreakLocatorType type) {
188 int mask = 0; 188 int mask = 0;
189 mask |= RelocInfo::ModeMask(RelocInfo::DEBUG_BREAK_SLOT_AT_RETURN); 189 mask |= RelocInfo::ModeMask(RelocInfo::DEBUG_BREAK_SLOT_AT_RETURN);
190 mask |= RelocInfo::ModeMask(RelocInfo::DEBUG_BREAK_SLOT_AT_CALL); 190 mask |= RelocInfo::ModeMask(RelocInfo::DEBUG_BREAK_SLOT_AT_CALL);
191 if (isolate()->is_tail_call_elimination_enabled()) { 191 if (isolate()->is_tail_call_elimination_enabled()) {
192 mask |= RelocInfo::ModeMask(RelocInfo::DEBUG_BREAK_SLOT_AT_TAIL_CALL); 192 mask |= RelocInfo::ModeMask(RelocInfo::DEBUG_BREAK_SLOT_AT_TAIL_CALL);
193 } 193 }
194 if (type == ALL_BREAK_LOCATIONS) { 194 if (type == ALL_BREAK_LOCATIONS) {
195 mask |= RelocInfo::ModeMask(RelocInfo::DEBUG_BREAK_SLOT_AT_POSITION); 195 mask |= RelocInfo::ModeMask(RelocInfo::DEBUG_BREAK_SLOT_AT_POSITION);
196 mask |= RelocInfo::ModeMask(RelocInfo::DEBUGGER_STATEMENT);
197 } 196 }
198 return mask; 197 return mask;
199 } 198 }
200 199
201 void CodeBreakIterator::Next() { 200 void CodeBreakIterator::Next() {
202 DisallowHeapAllocation no_gc; 201 DisallowHeapAllocation no_gc;
203 DCHECK(!Done()); 202 DCHECK(!Done());
204 203
205 // Iterate through reloc info stopping at each breakable code target. 204 // Iterate through reloc info stopping at each breakable code target.
206 bool first = break_index_ == -1; 205 bool first = break_index_ == -1;
207 206
208 if (!first) reloc_iterator_.next(); 207 if (!first) reloc_iterator_.next();
209 first = false; 208 first = false;
210 if (Done()) return; 209 if (Done()) return;
211 210
212 int offset = code_offset(); 211 int offset = code_offset();
213 while (!source_position_iterator_.done() && 212 while (!source_position_iterator_.done() &&
214 source_position_iterator_.code_offset() <= offset) { 213 source_position_iterator_.code_offset() <= offset) {
215 position_ = source_position_iterator_.source_position().ScriptOffset(); 214 position_ = source_position_iterator_.source_position().ScriptOffset();
216 if (source_position_iterator_.is_statement()) { 215 if (source_position_iterator_.is_statement()) {
217 statement_position_ = position_; 216 statement_position_ = position_;
218 } 217 }
219 source_position_iterator_.Advance(); 218 source_position_iterator_.Advance();
220 } 219 }
221 220
222 DCHECK(RelocInfo::IsDebugBreakSlot(rmode()) || 221 DCHECK(RelocInfo::IsDebugBreakSlot(rmode()));
223 RelocInfo::IsDebuggerStatement(rmode()));
224 break_index_++; 222 break_index_++;
225 } 223 }
226 224
227 DebugBreakType CodeBreakIterator::GetDebugBreakType() { 225 DebugBreakType CodeBreakIterator::GetDebugBreakType() {
228 if (RelocInfo::IsDebugBreakSlotAtReturn(rmode())) { 226 if (RelocInfo::IsDebugBreakSlotAtReturn(rmode())) {
229 return DEBUG_BREAK_SLOT_AT_RETURN; 227 return DEBUG_BREAK_SLOT_AT_RETURN;
230 } else if (RelocInfo::IsDebugBreakSlotAtCall(rmode())) { 228 } else if (RelocInfo::IsDebugBreakSlotAtCall(rmode())) {
231 return DEBUG_BREAK_SLOT_AT_CALL; 229 return DEBUG_BREAK_SLOT_AT_CALL;
232 } else if (RelocInfo::IsDebugBreakSlotAtTailCall(rmode())) { 230 } else if (RelocInfo::IsDebugBreakSlotAtTailCall(rmode())) {
233 return isolate()->is_tail_call_elimination_enabled() 231 return isolate()->is_tail_call_elimination_enabled()
234 ? DEBUG_BREAK_SLOT_AT_TAIL_CALL 232 ? DEBUG_BREAK_SLOT_AT_TAIL_CALL
235 : DEBUG_BREAK_SLOT_AT_CALL; 233 : DEBUG_BREAK_SLOT_AT_CALL;
236 } else if (RelocInfo::IsDebuggerStatement(rmode())) {
237 return DEBUGGER_STATEMENT;
238 } else if (RelocInfo::IsDebugBreakSlot(rmode())) { 234 } else if (RelocInfo::IsDebugBreakSlot(rmode())) {
239 return DEBUG_BREAK_SLOT; 235 return DEBUG_BREAK_SLOT;
240 } else { 236 } else {
241 return NOT_DEBUG_BREAK; 237 return NOT_DEBUG_BREAK;
242 } 238 }
243 } 239 }
244 240
245 void CodeBreakIterator::SkipToPosition(int position, 241 void CodeBreakIterator::SkipToPosition(int position,
246 BreakPositionAlignment alignment) { 242 BreakPositionAlignment alignment) {
247 CodeBreakIterator it(debug_info_, break_locator_type_); 243 CodeBreakIterator it(debug_info_, break_locator_type_);
248 SkipTo(it.BreakIndexFromPosition(position, alignment)); 244 SkipTo(it.BreakIndexFromPosition(position, alignment));
249 } 245 }
250 246
251 void CodeBreakIterator::SetDebugBreak() { 247 void CodeBreakIterator::SetDebugBreak() {
252 DebugBreakType debug_break_type = GetDebugBreakType(); 248 DebugBreakType debug_break_type = GetDebugBreakType();
253 if (debug_break_type == DEBUGGER_STATEMENT) return;
254 DCHECK(debug_break_type >= DEBUG_BREAK_SLOT); 249 DCHECK(debug_break_type >= DEBUG_BREAK_SLOT);
255 Builtins* builtins = isolate()->builtins(); 250 Builtins* builtins = isolate()->builtins();
256 Handle<Code> target = debug_break_type == DEBUG_BREAK_SLOT_AT_RETURN 251 Handle<Code> target = debug_break_type == DEBUG_BREAK_SLOT_AT_RETURN
257 ? builtins->Return_DebugBreak() 252 ? builtins->Return_DebugBreak()
258 : builtins->Slot_DebugBreak(); 253 : builtins->Slot_DebugBreak();
259 DebugCodegen::PatchDebugBreakSlot(isolate(), rinfo()->pc(), target); 254 DebugCodegen::PatchDebugBreakSlot(isolate(), rinfo()->pc(), target);
260 } 255 }
261 256
262 void CodeBreakIterator::ClearDebugBreak() { 257 void CodeBreakIterator::ClearDebugBreak() {
263 DebugBreakType debug_break_type = GetDebugBreakType(); 258 DebugBreakType debug_break_type = GetDebugBreakType();
264 if (debug_break_type == DEBUGGER_STATEMENT) return;
265 DCHECK(debug_break_type >= DEBUG_BREAK_SLOT); 259 DCHECK(debug_break_type >= DEBUG_BREAK_SLOT);
266 DebugCodegen::ClearDebugBreakSlot(isolate(), rinfo()->pc()); 260 DebugCodegen::ClearDebugBreakSlot(isolate(), rinfo()->pc());
267 } 261 }
268 262
269 bool CodeBreakIterator::IsDebugBreak() { 263 bool CodeBreakIterator::IsDebugBreak() {
270 DebugBreakType debug_break_type = GetDebugBreakType(); 264 DebugBreakType debug_break_type = GetDebugBreakType();
271 if (debug_break_type == DEBUGGER_STATEMENT) return false;
272 DCHECK(debug_break_type >= DEBUG_BREAK_SLOT); 265 DCHECK(debug_break_type >= DEBUG_BREAK_SLOT);
273 return DebugCodegen::DebugBreakSlotIsPatched(rinfo()->pc()); 266 return DebugCodegen::DebugBreakSlotIsPatched(rinfo()->pc());
274 } 267 }
275 268
276 BreakLocation CodeBreakIterator::GetBreakLocation() { 269 BreakLocation CodeBreakIterator::GetBreakLocation() {
277 Handle<AbstractCode> code(AbstractCode::cast(debug_info_->DebugCode())); 270 Handle<AbstractCode> code(AbstractCode::cast(debug_info_->DebugCode()));
278 return BreakLocation(code, GetDebugBreakType(), code_offset(), position_); 271 return BreakLocation(code, GetDebugBreakType(), code_offset(), position_);
279 } 272 }
280 273
281 BytecodeArrayBreakIterator::BytecodeArrayBreakIterator( 274 BytecodeArrayBreakIterator::BytecodeArrayBreakIterator(
(...skipping 2052 matching lines...) Expand 10 before | Expand all | Expand 10 after
2334 return v8::Utils::ToLocal(callback_data_); 2327 return v8::Utils::ToLocal(callback_data_);
2335 } 2328 }
2336 2329
2337 2330
2338 v8::Isolate* EventDetailsImpl::GetIsolate() const { 2331 v8::Isolate* EventDetailsImpl::GetIsolate() const {
2339 return reinterpret_cast<v8::Isolate*>(exec_state_->GetIsolate()); 2332 return reinterpret_cast<v8::Isolate*>(exec_state_->GetIsolate());
2340 } 2333 }
2341 2334
2342 } // namespace internal 2335 } // namespace internal
2343 } // namespace v8 2336 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698