| OLD | NEW |
| 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 985 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 996 } | 996 } |
| 997 | 997 |
| 998 return Heap::undefined_value(); | 998 return Heap::undefined_value(); |
| 999 } | 999 } |
| 1000 | 1000 |
| 1001 | 1001 |
| 1002 // Check the break point objects for whether one or more are actually | 1002 // Check the break point objects for whether one or more are actually |
| 1003 // triggered. This function returns a JSArray with the break point objects | 1003 // triggered. This function returns a JSArray with the break point objects |
| 1004 // which is triggered. | 1004 // which is triggered. |
| 1005 Handle<Object> Debug::CheckBreakPoints(Handle<Object> break_point_objects) { | 1005 Handle<Object> Debug::CheckBreakPoints(Handle<Object> break_point_objects) { |
| 1006 // Count the number of break points hit. If there are multiple break points |
| 1007 // they are in a FixedArray. |
| 1008 Handle<FixedArray> break_points_hit; |
| 1006 int break_points_hit_count = 0; | 1009 int break_points_hit_count = 0; |
| 1007 Handle<JSArray> break_points_hit = Factory::NewJSArray(1); | |
| 1008 | |
| 1009 // If there are multiple break points they are in a FixedArray. | |
| 1010 ASSERT(!break_point_objects->IsUndefined()); | 1010 ASSERT(!break_point_objects->IsUndefined()); |
| 1011 if (break_point_objects->IsFixedArray()) { | 1011 if (break_point_objects->IsFixedArray()) { |
| 1012 Handle<FixedArray> array(FixedArray::cast(*break_point_objects)); | 1012 Handle<FixedArray> array(FixedArray::cast(*break_point_objects)); |
| 1013 break_points_hit = Factory::NewFixedArray(array->length()); |
| 1013 for (int i = 0; i < array->length(); i++) { | 1014 for (int i = 0; i < array->length(); i++) { |
| 1014 Handle<Object> o(array->get(i)); | 1015 Handle<Object> o(array->get(i)); |
| 1015 if (CheckBreakPoint(o)) { | 1016 if (CheckBreakPoint(o)) { |
| 1016 SetElement(break_points_hit, | 1017 break_points_hit->set(break_points_hit_count++, *o); |
| 1017 break_points_hit_count++, | |
| 1018 o, | |
| 1019 kNonStrictMode); | |
| 1020 } | 1018 } |
| 1021 } | 1019 } |
| 1022 } else { | 1020 } else { |
| 1021 break_points_hit = Factory::NewFixedArray(1); |
| 1023 if (CheckBreakPoint(break_point_objects)) { | 1022 if (CheckBreakPoint(break_point_objects)) { |
| 1024 SetElement(break_points_hit, | 1023 break_points_hit->set(break_points_hit_count++, *break_point_objects); |
| 1025 break_points_hit_count++, | |
| 1026 break_point_objects, | |
| 1027 kNonStrictMode); | |
| 1028 } | 1024 } |
| 1029 } | 1025 } |
| 1030 | 1026 |
| 1031 // Return undefined if no break points were triggered. | 1027 // Return undefined if no break points were triggered. |
| 1032 if (break_points_hit_count == 0) { | 1028 if (break_points_hit_count == 0) { |
| 1033 return Factory::undefined_value(); | 1029 return Factory::undefined_value(); |
| 1034 } | 1030 } |
| 1035 return break_points_hit; | 1031 // Return break points hit as a JSArray. |
| 1032 Handle<JSArray> result = Factory::NewJSArrayWithElements(break_points_hit); |
| 1033 result->set_length(Smi::FromInt(break_points_hit_count)); |
| 1034 return result; |
| 1036 } | 1035 } |
| 1037 | 1036 |
| 1038 | 1037 |
| 1039 // Check whether a single break point object is triggered. | 1038 // Check whether a single break point object is triggered. |
| 1040 bool Debug::CheckBreakPoint(Handle<Object> break_point_object) { | 1039 bool Debug::CheckBreakPoint(Handle<Object> break_point_object) { |
| 1041 HandleScope scope; | 1040 HandleScope scope; |
| 1042 | 1041 |
| 1043 // Ignore check if break point object is not a JSObject. | 1042 // Ignore check if break point object is not a JSObject. |
| 1044 if (!break_point_object->IsJSObject()) return true; | 1043 if (!break_point_object->IsJSObject()) return true; |
| 1045 | 1044 |
| 1046 // Get the function CheckBreakPoint (defined in debug.js). | 1045 // Get the function IsBreakPointTriggered (defined in debug-debugger.js). |
| 1047 Handle<String> is_break_point_triggered_symbol = | 1046 Handle<String> is_break_point_triggered_symbol = |
| 1048 Factory::LookupAsciiSymbol("IsBreakPointTriggered"); | 1047 Factory::LookupAsciiSymbol("IsBreakPointTriggered"); |
| 1049 Handle<JSFunction> check_break_point = | 1048 Handle<JSFunction> check_break_point = |
| 1050 Handle<JSFunction>(JSFunction::cast( | 1049 Handle<JSFunction>(JSFunction::cast( |
| 1051 debug_context()->global()->GetPropertyNoExceptionThrown( | 1050 debug_context()->global()->GetPropertyNoExceptionThrown( |
| 1052 *is_break_point_triggered_symbol))); | 1051 *is_break_point_triggered_symbol))); |
| 1053 | 1052 |
| 1054 // Get the break id as an object. | 1053 // Get the break id as an object. |
| 1055 Handle<Object> break_id = Factory::NewNumberFromInt(Debug::break_id()); | 1054 Handle<Object> break_id = Factory::NewNumberFromInt(Debug::break_id()); |
| 1056 | 1055 |
| (...skipping 2023 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3080 { | 3079 { |
| 3081 Locker locker; | 3080 Locker locker; |
| 3082 Debugger::CallMessageDispatchHandler(); | 3081 Debugger::CallMessageDispatchHandler(); |
| 3083 } | 3082 } |
| 3084 } | 3083 } |
| 3085 } | 3084 } |
| 3086 | 3085 |
| 3087 #endif // ENABLE_DEBUGGER_SUPPORT | 3086 #endif // ENABLE_DEBUGGER_SUPPORT |
| 3088 | 3087 |
| 3089 } } // namespace v8::internal | 3088 } } // namespace v8::internal |
| OLD | NEW |