| OLD | NEW |
| (Empty) |
| 1 // Copyright 2008 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 --expose-gc --send-idle-notification | |
| 29 // Flags: --allow-natives-syntax --expose-natives-as natives | |
| 30 // Flags: --noharmony-shipping | |
| 31 // Flags: --nostress-opt | |
| 32 | |
| 33 // --nostress-opt is specified because in stress mode the compilation cache | |
| 34 // may hold on to old copies of scripts (see bug 1641). | |
| 35 | |
| 36 // Note: this test checks that that the number of scripts reported as native | |
| 37 // by Debug.scripts() is the same as a number of core native scripts. | |
| 38 // Native scripts that are added by --harmony-shipping are classified | |
| 39 // as 'experimental', but are still returned by Debug.scripts(), so | |
| 40 // we disable harmony-shipping for this test | |
| 41 | |
| 42 // Get the Debug object exposed from the debug context global object. | |
| 43 Debug = debug.Debug; | |
| 44 Debug.setListener(function(){}); | |
| 45 | |
| 46 Date(); | |
| 47 RegExp(); | |
| 48 | |
| 49 // Count script types. | |
| 50 var named_native_count = 0; | |
| 51 var named_native_names = {}; | |
| 52 var extension_count = 0; | |
| 53 var normal_count = 0; | |
| 54 var scripts = Debug.scripts(); | |
| 55 for (i = 0; i < scripts.length; i++) { | |
| 56 if (scripts[i].type == Debug.ScriptType.Native) { | |
| 57 if (scripts[i].name) { | |
| 58 // TODO(1641): Remove check for equally named native scripts once the | |
| 59 // underlying issue is fixed. | |
| 60 if (!named_native_names[scripts[i].name]) { | |
| 61 named_native_names[scripts[i].name] = true; | |
| 62 named_native_count++; | |
| 63 } | |
| 64 } | |
| 65 } else if (scripts[i].type == Debug.ScriptType.Extension) { | |
| 66 extension_count++; | |
| 67 } else if (scripts[i].type == Debug.ScriptType.Normal) { | |
| 68 normal_count++; | |
| 69 } else { | |
| 70 assertUnreachable('Unexpected type ' + scripts[i].type); | |
| 71 } | |
| 72 } | |
| 73 | |
| 74 // This has to be updated if the number of native scripts change. | |
| 75 assertEquals(%NativeScriptsCount(), named_native_count); | |
| 76 // The 'gc' extension and one or two extras scripts are loaded. | |
| 77 assertTrue(extension_count == 2 || extension_count == 3); | |
| 78 // This script and mjsunit.js has been loaded. If using d8, d8 loads | |
| 79 // a normal script during startup too. | |
| 80 assertTrue(normal_count == 2 || normal_count == 3); | |
| 81 | |
| 82 // Test a builtins script. | |
| 83 var array_script = Debug.findScript('native array.js'); | |
| 84 assertEquals('native array.js', array_script.name); | |
| 85 assertEquals(Debug.ScriptType.Native, array_script.type); | |
| 86 | |
| 87 // Test a debugger script. | |
| 88 var debug_delay_script = Debug.findScript('native debug.js'); | |
| 89 assertEquals('native debug.js', debug_delay_script.name); | |
| 90 assertEquals(Debug.ScriptType.Native, debug_delay_script.type); | |
| 91 | |
| 92 // Test an extension script. | |
| 93 var extension_gc_script = Debug.findScript('v8/gc'); | |
| 94 if (extension_gc_script) { | |
| 95 assertEquals('v8/gc', extension_gc_script.name); | |
| 96 assertEquals(Debug.ScriptType.Extension, extension_gc_script.type); | |
| 97 } | |
| 98 | |
| 99 // Test a normal script. | |
| 100 var debug_script = Debug.findScript(/debug-script.js/); | |
| 101 assertTrue(/debug-script.js/.test(debug_script.name)); | |
| 102 assertEquals(Debug.ScriptType.Normal, debug_script.type); | |
| 103 | |
| 104 // Check a nonexistent script. | |
| 105 var dummy_script = Debug.findScript('dummy.js'); | |
| 106 assertTrue(typeof dummy_script == 'undefined'); | |
| 107 | |
| 108 Debug.setListener(null); | |
| OLD | NEW |