| OLD | NEW |
| 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/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #include "src/api.h" | 7 #include "src/api.h" |
| 8 #include "src/arguments.h" | 8 #include "src/arguments.h" |
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 | 314 |
| 315 if (IsExit()) { | 315 if (IsExit()) { |
| 316 // Restore the frame exit code with a break point. | 316 // Restore the frame exit code with a break point. |
| 317 RestoreFromOriginal(Assembler::kJSReturnSequenceLength); | 317 RestoreFromOriginal(Assembler::kJSReturnSequenceLength); |
| 318 } else if (IsDebugBreakSlot()) { | 318 } else if (IsDebugBreakSlot()) { |
| 319 // Restore the code in the break slot. | 319 // Restore the code in the break slot. |
| 320 RestoreFromOriginal(Assembler::kDebugBreakSlotLength); | 320 RestoreFromOriginal(Assembler::kDebugBreakSlotLength); |
| 321 } else { | 321 } else { |
| 322 // Restore the IC call. | 322 // Restore the IC call. |
| 323 rinfo().set_target_address(original_rinfo().target_address()); | 323 rinfo().set_target_address(original_rinfo().target_address()); |
| 324 // Some ICs store data in the feedback vector. Clear this to ensure we |
| 325 // won't miss future stepping requirements. |
| 326 SharedFunctionInfo* shared = debug_info_->shared(); |
| 327 shared->feedback_vector()->ClearICSlots(shared); |
| 324 } | 328 } |
| 325 DCHECK(!IsDebugBreak()); | 329 DCHECK(!IsDebugBreak()); |
| 326 } | 330 } |
| 327 | 331 |
| 328 | 332 |
| 329 void BreakLocation::RestoreFromOriginal(int length_in_bytes) { | 333 void BreakLocation::RestoreFromOriginal(int length_in_bytes) { |
| 330 memcpy(pc(), original_pc(), length_in_bytes); | 334 memcpy(pc(), original_pc(), length_in_bytes); |
| 331 CpuFeatures::FlushICache(pc(), length_in_bytes); | 335 CpuFeatures::FlushICache(pc(), length_in_bytes); |
| 332 } | 336 } |
| 333 | 337 |
| (...skipping 1777 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2111 | 2115 |
| 2112 // There will be at least one break point when we are done. | 2116 // There will be at least one break point when we are done. |
| 2113 has_break_points_ = true; | 2117 has_break_points_ = true; |
| 2114 | 2118 |
| 2115 // Ensure function is compiled. Return false if this failed. | 2119 // Ensure function is compiled. Return false if this failed. |
| 2116 if (!function.is_null() && | 2120 if (!function.is_null() && |
| 2117 !Compiler::EnsureCompiled(function, CLEAR_EXCEPTION)) { | 2121 !Compiler::EnsureCompiled(function, CLEAR_EXCEPTION)) { |
| 2118 return false; | 2122 return false; |
| 2119 } | 2123 } |
| 2120 | 2124 |
| 2125 // Make sure IC state is clean. |
| 2126 shared->code()->ClearInlineCaches(); |
| 2127 shared->feedback_vector()->ClearICSlots(*shared); |
| 2128 |
| 2121 // Create the debug info object. | 2129 // Create the debug info object. |
| 2122 Handle<DebugInfo> debug_info = isolate->factory()->NewDebugInfo(shared); | 2130 Handle<DebugInfo> debug_info = isolate->factory()->NewDebugInfo(shared); |
| 2123 | 2131 |
| 2124 // Add debug info to the list. | 2132 // Add debug info to the list. |
| 2125 DebugInfoListNode* node = new DebugInfoListNode(*debug_info); | 2133 DebugInfoListNode* node = new DebugInfoListNode(*debug_info); |
| 2126 node->set_next(debug_info_list_); | 2134 node->set_next(debug_info_list_); |
| 2127 debug_info_list_ = node; | 2135 debug_info_list_ = node; |
| 2128 | 2136 |
| 2129 return true; | 2137 return true; |
| 2130 } | 2138 } |
| (...skipping 1251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3382 logger_->DebugEvent("Put", message.text()); | 3390 logger_->DebugEvent("Put", message.text()); |
| 3383 } | 3391 } |
| 3384 | 3392 |
| 3385 | 3393 |
| 3386 void LockingCommandMessageQueue::Clear() { | 3394 void LockingCommandMessageQueue::Clear() { |
| 3387 base::LockGuard<base::Mutex> lock_guard(&mutex_); | 3395 base::LockGuard<base::Mutex> lock_guard(&mutex_); |
| 3388 queue_.Clear(); | 3396 queue_.Clear(); |
| 3389 } | 3397 } |
| 3390 | 3398 |
| 3391 } } // namespace v8::internal | 3399 } } // namespace v8::internal |
| OLD | NEW |