| OLD | NEW | 
 | (Empty) | 
|    1 // Copyright 2009 the V8 project authors. All rights reserved. |  | 
|    2 // Redistribution and use in source and binary forms, with or without |  | 
|    3 // modification, are permitted provided that the following conditions are |  | 
|    4 // met: |  | 
|    5 // |  | 
|    6 //     * Redistributions of source code must retain the above copyright |  | 
|    7 //       notice, this list of conditions and the following disclaimer. |  | 
|    8 //     * Redistributions in binary form must reproduce the above |  | 
|    9 //       copyright notice, this list of conditions and the following |  | 
|   10 //       disclaimer in the documentation and/or other materials provided |  | 
|   11 //       with the distribution. |  | 
|   12 //     * Neither the name of Google Inc. nor the names of its |  | 
|   13 //       contributors may be used to endorse or promote products derived |  | 
|   14 //       from this software without specific prior written permission. |  | 
|   15 // |  | 
|   16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |  | 
|   17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |  | 
|   18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |  | 
|   19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |  | 
|   20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |  | 
|   21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |  | 
|   22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |  | 
|   23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |  | 
|   24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |  | 
|   25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |  | 
|   26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |  | 
|   27  |  | 
|   28 // Flags: --expose-debug-as debug |  | 
|   29 // Get the Debug object exposed from the debug context global object. |  | 
|   30 Debug = debug.Debug |  | 
|   31  |  | 
|   32 var exception = null; |  | 
|   33  |  | 
|   34 // Simple debug event handler which counts the number of breaks hit and steps. |  | 
|   35 var break_point_hit_count = 0; |  | 
|   36 function listener(event, exec_state, event_data, data) { |  | 
|   37   try { |  | 
|   38     if (event == Debug.DebugEvent.Break) { |  | 
|   39       break_point_hit_count++; |  | 
|   40       // Continue stepping until returned to bottom frame. |  | 
|   41       if (exec_state.frameCount() > 1) { |  | 
|   42         exec_state.prepareStep(Debug.StepAction.StepOut); |  | 
|   43       } |  | 
|   44  |  | 
|   45     } |  | 
|   46   } catch(e) { |  | 
|   47     exception = e; |  | 
|   48   } |  | 
|   49  |  | 
|   50 }; |  | 
|   51  |  | 
|   52 function BeginTest(name) { |  | 
|   53   test_name = name; |  | 
|   54   break_point_hit_count = 0; |  | 
|   55   exception = null; |  | 
|   56 } |  | 
|   57  |  | 
|   58 function EndTest(expected_break_point_hit_count) { |  | 
|   59   assertEquals(expected_break_point_hit_count, break_point_hit_count, test_name)
     ; |  | 
|   60   assertNull(exception, test_name); |  | 
|   61   test_name = null; |  | 
|   62 } |  | 
|   63  |  | 
|   64 // Add the debug event listener. |  | 
|   65 Debug.setListener(listener); |  | 
|   66  |  | 
|   67  |  | 
|   68 var shouldBreak = null; |  | 
|   69 function fact(x) { |  | 
|   70   if (shouldBreak(x)) { |  | 
|   71     debugger; |  | 
|   72   } |  | 
|   73   if (x < 2) { |  | 
|   74     return 1; |  | 
|   75   } else { |  | 
|   76     return x*fact(x-1); |  | 
|   77   } |  | 
|   78 } |  | 
|   79  |  | 
|   80 BeginTest('Test 1'); |  | 
|   81 shouldBreak = function(x) { return x == 3; }; |  | 
|   82 fact(3); |  | 
|   83 EndTest(2); |  | 
|   84  |  | 
|   85 BeginTest('Test 2'); |  | 
|   86 shouldBreak = function(x) { return x == 2; }; |  | 
|   87 fact(3); |  | 
|   88 EndTest(3); |  | 
|   89  |  | 
|   90 BeginTest('Test 3'); |  | 
|   91 shouldBreak = function(x) { return x == 1; }; |  | 
|   92 fact(3); |  | 
|   93 EndTest(4); |  | 
|   94  |  | 
|   95 BeginTest('Test 4'); |  | 
|   96 shouldBreak = function(x) { return x == 1 || x == 3; }; |  | 
|   97 fact(3); |  | 
|   98 EndTest(5); |  | 
|   99  |  | 
|  100 // Get rid of the debug event listener. |  | 
|  101 Debug.setListener(null); |  | 
| OLD | NEW |