| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index b517bef1fd1eb2d463b0a11fee3ba5425a7033dd..c935d285602429565b5c378afe2935342d3002e8 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -18462,10 +18462,10 @@ bool JSWeakCollection::Delete(Handle<JSWeakCollection> weak_collection,
|
| return was_present;
|
| }
|
|
|
| -// Check if there is a break point at this code offset.
|
| -bool DebugInfo::HasBreakPoint(int code_offset) {
|
| +// Check if there is a break point at this source position.
|
| +bool DebugInfo::HasBreakPoint(int source_position) {
|
| // Get the break point info object for this code offset.
|
| - Object* break_point_info = GetBreakPointInfo(code_offset);
|
| + Object* break_point_info = GetBreakPointInfo(source_position);
|
|
|
| // If there is no break point info object or no break points in the break
|
| // point info object there is no break point at this code offset.
|
| @@ -18473,34 +18473,42 @@ bool DebugInfo::HasBreakPoint(int code_offset) {
|
| return BreakPointInfo::cast(break_point_info)->GetBreakPointCount() > 0;
|
| }
|
|
|
| -// Get the break point info object for this code offset.
|
| -Object* DebugInfo::GetBreakPointInfo(int code_offset) {
|
| - // Find the index of the break point info object for this code offset.
|
| - int index = GetBreakPointInfoIndex(code_offset);
|
| -
|
| - // Return the break point info object if any.
|
| - if (index == kNoBreakPointInfo) return GetHeap()->undefined_value();
|
| - return BreakPointInfo::cast(break_points()->get(index));
|
| +// Get the break point info object for this source position.
|
| +Object* DebugInfo::GetBreakPointInfo(int source_position) {
|
| + Isolate* isolate = GetIsolate();
|
| + if (!break_points()->IsUndefined(isolate)) {
|
| + for (int i = 0; i < break_points()->length(); i++) {
|
| + if (!break_points()->get(i)->IsUndefined(isolate)) {
|
| + BreakPointInfo* break_point_info =
|
| + BreakPointInfo::cast(break_points()->get(i));
|
| + if (break_point_info->source_position() == source_position) {
|
| + return break_point_info;
|
| + }
|
| + }
|
| + }
|
| + }
|
| + return isolate->heap()->undefined_value();
|
| }
|
|
|
| -// Clear a break point at the specified code offset.
|
| -void DebugInfo::ClearBreakPoint(Handle<DebugInfo> debug_info, int code_offset,
|
| +// Clear a break point at the specified source_position.
|
| +void DebugInfo::ClearBreakPoint(Handle<DebugInfo> debug_info,
|
| + int source_position,
|
| Handle<Object> break_point_object) {
|
| Isolate* isolate = debug_info->GetIsolate();
|
| - Handle<Object> break_point_info(debug_info->GetBreakPointInfo(code_offset),
|
| - isolate);
|
| + Handle<Object> break_point_info(
|
| + debug_info->GetBreakPointInfo(source_position), isolate);
|
| if (break_point_info->IsUndefined(isolate)) return;
|
| BreakPointInfo::ClearBreakPoint(
|
| Handle<BreakPointInfo>::cast(break_point_info),
|
| break_point_object);
|
| }
|
|
|
| -void DebugInfo::SetBreakPoint(Handle<DebugInfo> debug_info, int code_offset,
|
| - int source_position, int statement_position,
|
| +void DebugInfo::SetBreakPoint(Handle<DebugInfo> debug_info, int source_position,
|
| + int statement_position,
|
| Handle<Object> break_point_object) {
|
| Isolate* isolate = debug_info->GetIsolate();
|
| - Handle<Object> break_point_info(debug_info->GetBreakPointInfo(code_offset),
|
| - isolate);
|
| + Handle<Object> break_point_info(
|
| + debug_info->GetBreakPointInfo(source_position), isolate);
|
| if (!break_point_info->IsUndefined(isolate)) {
|
| BreakPointInfo::SetBreakPoint(
|
| Handle<BreakPointInfo>::cast(break_point_info),
|
| @@ -18510,6 +18518,7 @@ void DebugInfo::SetBreakPoint(Handle<DebugInfo> debug_info, int code_offset,
|
|
|
| // Adding a new break point for a code offset which did not have any
|
| // break points before. Try to find a free slot.
|
| + static const int kNoBreakPointInfo = -1;
|
| int index = kNoBreakPointInfo;
|
| for (int i = 0; i < debug_info->break_points()->length(); i++) {
|
| if (debug_info->break_points()->get(i)->IsUndefined(isolate)) {
|
| @@ -18537,18 +18546,16 @@ void DebugInfo::SetBreakPoint(Handle<DebugInfo> debug_info, int code_offset,
|
| // Allocate new BreakPointInfo object and set the break point.
|
| Handle<BreakPointInfo> new_break_point_info = Handle<BreakPointInfo>::cast(
|
| isolate->factory()->NewStruct(BREAK_POINT_INFO_TYPE));
|
| - new_break_point_info->set_code_offset(code_offset);
|
| new_break_point_info->set_source_position(source_position);
|
| - new_break_point_info->set_statement_position(statement_position);
|
| new_break_point_info->set_break_point_objects(
|
| isolate->heap()->undefined_value());
|
| BreakPointInfo::SetBreakPoint(new_break_point_info, break_point_object);
|
| debug_info->break_points()->set(index, *new_break_point_info);
|
| }
|
|
|
| -// Get the break point objects for a code offset.
|
| -Handle<Object> DebugInfo::GetBreakPointObjects(int code_offset) {
|
| - Object* break_point_info = GetBreakPointInfo(code_offset);
|
| +// Get the break point objects for a source position.
|
| +Handle<Object> DebugInfo::GetBreakPointObjects(int source_position) {
|
| + Object* break_point_info = GetBreakPointInfo(source_position);
|
| Isolate* isolate = GetIsolate();
|
| if (break_point_info->IsUndefined(isolate)) {
|
| return isolate->factory()->undefined_value();
|
| @@ -18592,25 +18599,6 @@ Handle<Object> DebugInfo::FindBreakPointInfo(
|
| return isolate->factory()->undefined_value();
|
| }
|
|
|
| -
|
| -// Find the index of the break point info object for the specified code
|
| -// position.
|
| -int DebugInfo::GetBreakPointInfoIndex(int code_offset) {
|
| - Isolate* isolate = GetIsolate();
|
| - if (break_points()->IsUndefined(isolate)) return kNoBreakPointInfo;
|
| - for (int i = 0; i < break_points()->length(); i++) {
|
| - if (!break_points()->get(i)->IsUndefined(isolate)) {
|
| - BreakPointInfo* break_point_info =
|
| - BreakPointInfo::cast(break_points()->get(i));
|
| - if (break_point_info->code_offset() == code_offset) {
|
| - return i;
|
| - }
|
| - }
|
| - }
|
| - return kNoBreakPointInfo;
|
| -}
|
| -
|
| -
|
| // Remove the specified break point object.
|
| void BreakPointInfo::ClearBreakPoint(Handle<BreakPointInfo> break_point_info,
|
| Handle<Object> break_point_object) {
|
|
|