Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 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 14 matching lines...) Expand all Loading... | |
| 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 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. | 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 | 27 |
| 28 // Flags: --expose-debug-as debug | 28 // Flags: --expose-debug-as debug |
| 29 // Get the Debug object exposed from the debug context global object. | 29 // Get the Debug object exposed from the debug context global object. |
| 30 Debug = debug.Debug | 30 Debug = debug.Debug |
| 31 | 31 |
| 32 var exception = false; // Exception in debug event listener. | 32 var exception = false; // Exception in debug event listener. |
| 33 var before_compile_count = 0; | 33 var before_compile_count = 0; |
| 34 var after_compile_count = 0; | 34 var after_compile_count = 0; |
| 35 var compile_error_count = 0; | |
| 35 var current_source = ''; // Current source being compiled. | 36 var current_source = ''; // Current source being compiled. |
| 36 var source_count = 0; // Total number of scources compiled. | 37 var source_count = 0; // Total number of scources compiled. |
| 37 var host_compilations = 0; // Number of scources compiled through the API. | 38 var host_compilations = 0; // Number of scources compiled through the API. |
| 38 var eval_compilations = 0; // Number of scources compiled through eval. | 39 var eval_compilations = 0; // Number of scources compiled through eval. |
| 39 | 40 |
| 40 | 41 |
| 41 function compileSource(source) { | 42 function compileSource(source) { |
| 42 current_source = source; | 43 current_source = source; |
| 43 eval(current_source); | 44 eval(current_source); |
| 44 source_count++; | 45 source_count++; |
| 45 } | 46 } |
| 46 | 47 |
| 47 | 48 |
| 48 function listener(event, exec_state, event_data, data) { | 49 function listener(event, exec_state, event_data, data) { |
| 49 try { | 50 try { |
| 50 if (event == Debug.DebugEvent.BeforeCompile || | 51 if (event == Debug.DebugEvent.BeforeCompile || |
| 51 event == Debug.DebugEvent.AfterCompile) { | 52 event == Debug.DebugEvent.AfterCompile || |
| 53 event == Debug.DebugEvent.CompileError) { | |
| 52 // Count the events. | 54 // Count the events. |
| 53 if (event == Debug.DebugEvent.BeforeCompile) { | 55 if (event == Debug.DebugEvent.BeforeCompile) { |
| 54 before_compile_count++; | 56 before_compile_count++; |
| 55 } else { | 57 } else if (event == Debug.DebugEvent.AfterCompile) { |
| 56 after_compile_count++; | 58 after_compile_count++; |
| 57 switch (event_data.script().compilationType()) { | 59 switch (event_data.script().compilationType()) { |
| 58 case Debug.ScriptCompilationType.Host: | 60 case Debug.ScriptCompilationType.Host: |
| 59 host_compilations++; | 61 host_compilations++; |
| 60 break; | 62 break; |
| 61 case Debug.ScriptCompilationType.Eval: | 63 case Debug.ScriptCompilationType.Eval: |
| 62 eval_compilations++; | 64 eval_compilations++; |
| 63 break; | 65 break; |
| 64 } | 66 } |
| 67 } else { | |
| 68 compile_error_count++; | |
| 65 } | 69 } |
| 66 | 70 |
| 67 // If the compiled source contains 'eval' there will be additional compile | 71 // If the compiled source contains 'eval' there will be additional compile |
| 68 // events for the source inside eval. | 72 // events for the source inside eval. |
| 69 if (current_source.indexOf('eval') == 0) { | 73 if (current_source.indexOf('eval') == 0) { |
| 70 // For source with 'eval' there will be compile events with substrings | 74 // For source with 'eval' there will be compile events with substrings |
| 71 // as well as with with the exact source. | 75 // as well as with with the exact source. |
| 72 assertTrue(current_source.indexOf(event_data.script().source()) >= 0); | 76 assertTrue(current_source.indexOf(event_data.script().source()) >= 0); |
| 73 } else { | 77 } else { |
| 74 // For source without 'eval' there will be a compile events with the | 78 // For source without 'eval' there will be a compile events with the |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 98 compileSource('a=1'); | 102 compileSource('a=1'); |
| 99 compileSource('(function(){})'); | 103 compileSource('(function(){})'); |
| 100 compileSource('eval("a=2")'); | 104 compileSource('eval("a=2")'); |
| 101 source_count++; // Using eval causes additional compilation event. | 105 source_count++; // Using eval causes additional compilation event. |
| 102 compileSource('eval("eval(\'(function(){return a;})\')")'); | 106 compileSource('eval("eval(\'(function(){return a;})\')")'); |
| 103 source_count += 2; // Using eval causes additional compilation event. | 107 source_count += 2; // Using eval causes additional compilation event. |
| 104 compileSource('JSON.parse(\'{"a":1,"b":2}\')'); | 108 compileSource('JSON.parse(\'{"a":1,"b":2}\')'); |
| 105 // Using JSON.parse does not causes additional compilation events. | 109 // Using JSON.parse does not causes additional compilation events. |
| 106 compileSource('x=1; //# sourceURL=myscript.js'); | 110 compileSource('x=1; //# sourceURL=myscript.js'); |
| 107 | 111 |
| 112 try { | |
| 113 compileSource('}'); | |
| 114 } catch(e) { | |
| 115 } | |
| 116 | |
| 108 // Make sure that the debug event listener was invoked. | 117 // Make sure that the debug event listener was invoked. |
| 109 assertFalse(exception, "exception in listener") | 118 assertFalse(exception, "exception in listener") |
| 110 | 119 |
| 111 // Number of before and after compile events should be the same. | 120 // Number of before and after + error events should be the same. |
| 112 assertEquals(before_compile_count, after_compile_count); | 121 assertEquals(before_compile_count, after_compile_count + compile_error_count); |
|
Yang
2014/06/26 10:25:39
Can we also assert the value of compile_error_coun
| |
| 113 | 122 |
| 114 // Check the actual number of events (no compilation through the API as all | 123 // Check the actual number of events (no compilation through the API as all |
| 115 // source compiled through eval). | 124 // source compiled through eval). |
| 116 assertEquals(source_count, after_compile_count); | 125 assertEquals(source_count, after_compile_count); |
| 117 assertEquals(0, host_compilations); | 126 assertEquals(0, host_compilations); |
| 118 assertEquals(source_count, eval_compilations); | 127 assertEquals(source_count, eval_compilations); |
| 119 | 128 |
| 120 Debug.setListener(null); | 129 Debug.setListener(null); |
| OLD | NEW |