Index: test/mjsunit/debug-compile-event.js |
=================================================================== |
--- test/mjsunit/debug-compile-event.js (revision 2090) |
+++ test/mjsunit/debug-compile-event.js (working copy) |
@@ -32,8 +32,11 @@ |
var exception = false; // Exception in debug event listener. |
var before_compile_count = 0; |
var after_compile_count = 0; |
-var current_source = ''; // Current source compiled. |
-var source_count = 0; // Total number of scource sompiled. |
+var current_source = ''; // Current source being compiled. |
+var source_count = 0; // Total number of scources compiled. |
+var host_compilations = 0; // Number of scources compiled through the API. |
+var eval_compilations = 0; // Number of scources compiled through eval. |
+var json_compilations = 0; // Number of scources compiled through JSON.parse. |
function compileSource(source) { |
@@ -52,14 +55,32 @@ |
before_compile_count++; |
} else { |
after_compile_count++; |
+ switch (event_data.script().compilationType()) { |
+ case Debug.ScriptCompilationType.Host: |
+ host_compilations++; |
+ break; |
+ case Debug.ScriptCompilationType.Eval: |
+ eval_compilations++; |
+ break; |
+ case Debug.ScriptCompilationType.JSON: |
+ json_compilations++; |
+ break; |
+ } |
} |
- |
+ |
// If the compiled source contains 'eval' there will be additional compile |
// events for the source inside eval. |
if (current_source.indexOf('eval') == 0) { |
// For source with 'eval' there will be compile events with substrings |
// as well as with with the exact source. |
assertTrue(current_source.indexOf(event_data.script().source()) >= 0); |
+ } else if (current_source.indexOf('JSON.parse') == 0) { |
+ // For JSON the JSON source will be in parentheses. |
+ var s = event_data.script().source(); |
+ if (s[0] == '(') { |
+ s = s.substring(1, s.length - 2); |
+ } |
+ assertTrue(current_source.indexOf(s) >= 0); |
} else { |
// For source without 'eval' there will be a compile events with the |
// exact source. |
@@ -86,6 +107,8 @@ |
source_count++; // Using eval causes additional compilation event. |
compileSource('eval("eval(\'function(){return a;}\')")'); |
source_count += 2; // Using eval causes additional compilation event. |
+compileSource('JSON.parse("{a:1,b:2}")'); |
+source_count++; // Using JSON.parse causes additional compilation event. |
// Make sure that the debug event listener was invoked. |
assertFalse(exception, "exception in listener") |
@@ -93,7 +116,11 @@ |
// Number of before and after compile events should be the same. |
assertEquals(before_compile_count, after_compile_count); |
-// Check the actual number of events. |
+// Check the actual number of events (no compilation through the API as all |
+// source compiled through eval except for one JSON.parse call). |
assertEquals(source_count, after_compile_count); |
+assertEquals(0, host_compilations); |
+assertEquals(source_count - 1, eval_compilations); |
+assertEquals(1, json_compilations); |
Debug.setListener(null); |