| 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/api.h" | 5 #include "src/api.h" | 
| 6 | 6 | 
| 7 #include <string.h>  // For memcpy, strlen. | 7 #include <string.h>  // For memcpy, strlen. | 
| 8 #ifdef V8_USE_ADDRESS_SANITIZER | 8 #ifdef V8_USE_ADDRESS_SANITIZER | 
| 9 #include <sanitizer/asan_interface.h> | 9 #include <sanitizer/asan_interface.h> | 
| 10 #endif  // V8_USE_ADDRESS_SANITIZER | 10 #endif  // V8_USE_ADDRESS_SANITIZER | 
| (...skipping 9210 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 9221 } | 9221 } | 
| 9222 | 9222 | 
| 9223 namespace { | 9223 namespace { | 
| 9224 int GetSmiValue(i::Handle<i::FixedArray> array, int index) { | 9224 int GetSmiValue(i::Handle<i::FixedArray> array, int index) { | 
| 9225   return i::Smi::cast(array->get(index))->value(); | 9225   return i::Smi::cast(array->get(index))->value(); | 
| 9226 } | 9226 } | 
| 9227 }  // namespace | 9227 }  // namespace | 
| 9228 | 9228 | 
| 9229 bool debug::Script::GetPossibleBreakpoints( | 9229 bool debug::Script::GetPossibleBreakpoints( | 
| 9230     const debug::Location& start, const debug::Location& end, | 9230     const debug::Location& start, const debug::Location& end, | 
| 9231     std::vector<debug::Location>* locations) const { | 9231     bool restrict_to_function, std::vector<debug::Location>* locations) const { | 
| 9232   CHECK(!start.IsEmpty()); | 9232   CHECK(!start.IsEmpty()); | 
| 9233   i::Handle<i::Script> script = Utils::OpenHandle(this); | 9233   i::Handle<i::Script> script = Utils::OpenHandle(this); | 
| 9234   if (script->type() == i::Script::TYPE_WASM) { | 9234   if (script->type() == i::Script::TYPE_WASM) { | 
| 9235     i::Handle<i::WasmCompiledModule> compiled_module( | 9235     i::Handle<i::WasmCompiledModule> compiled_module( | 
| 9236         i::WasmCompiledModule::cast(script->wasm_compiled_module())); | 9236         i::WasmCompiledModule::cast(script->wasm_compiled_module())); | 
| 9237     return compiled_module->GetPossibleBreakpoints(start, end, locations); | 9237     return compiled_module->GetPossibleBreakpoints(start, end, locations); | 
| 9238   } | 9238   } | 
| 9239 | 9239 | 
| 9240   i::Script::InitLineEnds(script); | 9240   i::Script::InitLineEnds(script); | 
| 9241   CHECK(script->line_ends()->IsFixedArray()); | 9241   CHECK(script->line_ends()->IsFixedArray()); | 
| 9242   i::Isolate* isolate = script->GetIsolate(); | 9242   i::Isolate* isolate = script->GetIsolate(); | 
| 9243   i::Handle<i::FixedArray> line_ends = | 9243   i::Handle<i::FixedArray> line_ends = | 
| 9244       i::Handle<i::FixedArray>::cast(i::handle(script->line_ends(), isolate)); | 9244       i::Handle<i::FixedArray>::cast(i::handle(script->line_ends(), isolate)); | 
| 9245   CHECK(line_ends->length()); | 9245   CHECK(line_ends->length()); | 
| 9246 | 9246 | 
| 9247   int start_offset = GetSourcePosition(start); | 9247   int start_offset = GetSourcePosition(start); | 
| 9248   int end_offset; | 9248   int end_offset; | 
| 9249   if (end.IsEmpty()) { | 9249   if (end.IsEmpty()) { | 
| 9250     end_offset = GetSmiValue(line_ends, line_ends->length() - 1) + 1; | 9250     end_offset = GetSmiValue(line_ends, line_ends->length() - 1) + 1; | 
| 9251   } else { | 9251   } else { | 
| 9252     end_offset = GetSourcePosition(end); | 9252     end_offset = GetSourcePosition(end); | 
| 9253   } | 9253   } | 
| 9254   if (start_offset >= end_offset) return true; | 9254   if (start_offset >= end_offset) return true; | 
| 9255 | 9255 | 
| 9256   std::set<int> offsets; | 9256   std::set<int> offsets; | 
| 9257   if (!isolate->debug()->GetPossibleBreakpoints(script, start_offset, | 9257   if (!isolate->debug()->GetPossibleBreakpoints( | 
| 9258                                                 end_offset, &offsets)) { | 9258           script, start_offset, end_offset, restrict_to_function, &offsets)) { | 
| 9259     return false; | 9259     return false; | 
| 9260   } | 9260   } | 
| 9261 | 9261 | 
| 9262   int current_line_end_index = 0; | 9262   int current_line_end_index = 0; | 
| 9263   for (const auto& it : offsets) { | 9263   for (const auto& it : offsets) { | 
| 9264     int offset = it; | 9264     int offset = it; | 
| 9265     while (offset > GetSmiValue(line_ends, current_line_end_index)) { | 9265     while (offset > GetSmiValue(line_ends, current_line_end_index)) { | 
| 9266       ++current_line_end_index; | 9266       ++current_line_end_index; | 
| 9267       CHECK(current_line_end_index < line_ends->length()); | 9267       CHECK(current_line_end_index < line_ends->length()); | 
| 9268     } | 9268     } | 
| (...skipping 990 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 10259   Address callback_address = | 10259   Address callback_address = | 
| 10260       reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 10260       reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 
| 10261   VMState<EXTERNAL> state(isolate); | 10261   VMState<EXTERNAL> state(isolate); | 
| 10262   ExternalCallbackScope call_scope(isolate, callback_address); | 10262   ExternalCallbackScope call_scope(isolate, callback_address); | 
| 10263   callback(info); | 10263   callback(info); | 
| 10264 } | 10264 } | 
| 10265 | 10265 | 
| 10266 | 10266 | 
| 10267 }  // namespace internal | 10267 }  // namespace internal | 
| 10268 }  // namespace v8 | 10268 }  // namespace v8 | 
| OLD | NEW | 
|---|