From 083ee0f8b7a8d98d51bf2debf47d68117f13087f Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Thu, 12 Aug 2010 10:11:03 -0700 Subject: Upgrade V8 to 2.3.7 --- deps/v8/test/cctest/test-api.cc | 6 +- deps/v8/test/cctest/test-cpu-profiler.cc | 15 + deps/v8/test/cctest/test-heap-profiler.cc | 224 +++++++--- .../mjsunit/api-call-after-bypassed-exception.js | 52 +-- deps/v8/test/mjsunit/debug-clearbreakpointgroup.js | 234 +++++----- .../mjsunit/debug-evaluate-bool-constructor.js | 160 +++---- deps/v8/test/mjsunit/debug-references.js | 236 +++++----- deps/v8/test/mjsunit/debug-stepin-accessor.js | 496 ++++++++++----------- deps/v8/test/mjsunit/debug-stepin-builtin.js | 156 +++---- .../mjsunit/debug-stepin-call-function-stub.js | 230 +++++----- deps/v8/test/mjsunit/debug-stepin-function-call.js | 296 ++++++------ deps/v8/test/mjsunit/debug-stepnext-do-while.js | 158 +++---- .../mjsunit/debug-stepout-recursive-function.js | 212 ++++----- deps/v8/test/mjsunit/debug-stepout-to-builtin.js | 168 +++---- .../test/mjsunit/global-deleted-property-keyed.js | 76 ++-- deps/v8/test/mjsunit/object-literal.js | 32 +- deps/v8/test/mjsunit/regexp-capture.js | 114 ++--- .../test/mjsunit/regress/bitops-register-alias.js | 31 ++ deps/v8/test/mjsunit/regress/regress-246.js | 60 +-- deps/v8/test/sputnik/sputnik.status | 4 +- 20 files changed, 1547 insertions(+), 1413 deletions(-) create mode 100644 deps/v8/test/mjsunit/regress/bitops-register-alias.js (limited to 'deps/v8/test') diff --git a/deps/v8/test/cctest/test-api.cc b/deps/v8/test/cctest/test-api.cc index 82b93c95cd..47a55e6a52 100644 --- a/deps/v8/test/cctest/test-api.cc +++ b/deps/v8/test/cctest/test-api.cc @@ -27,6 +27,8 @@ #include +#define USE_NEW_QUERY_CALLBACKS + #include "v8.h" #include "api.h" @@ -1194,12 +1196,12 @@ v8::Handle CheckThisNamedPropertySetter(Local property, return v8::Handle(); } -v8::Handle CheckThisIndexedPropertyQuery( +v8::Handle CheckThisIndexedPropertyQuery( uint32_t index, const AccessorInfo& info) { ApiTestFuzzer::Fuzz(); CHECK(info.This()->Equals(bottom)); - return v8::Handle(); + return v8::Handle(); } diff --git a/deps/v8/test/cctest/test-cpu-profiler.cc b/deps/v8/test/cctest/test-cpu-profiler.cc index 0e6f09d2ef..239d8ae695 100644 --- a/deps/v8/test/cctest/test-cpu-profiler.cc +++ b/deps/v8/test/cctest/test-cpu-profiler.cc @@ -12,6 +12,7 @@ namespace i = v8::internal; using i::CodeEntry; using i::CpuProfile; +using i::CpuProfiler; using i::CpuProfilesCollection; using i::ProfileGenerator; using i::ProfileNode; @@ -225,4 +226,18 @@ TEST(TickEvents) { CHECK_EQ("bbb", bottom_up_ddd_stub_children->last()->entry()->name()); } + +// http://crbug/51594 +// This test must not crash. +TEST(CrashIfStoppingLastNonExistentProfile) { + InitializeVM(); + TestSetup test_setup; + CpuProfiler::Setup(); + CpuProfiler::StartProfiling("1"); + CpuProfiler::StopProfiling("2"); + CpuProfiler::StartProfiling("1"); + CpuProfiler::StopProfiling(""); + CpuProfiler::TearDown(); +} + #endif // ENABLE_LOGGING_AND_PROFILING diff --git a/deps/v8/test/cctest/test-heap-profiler.cc b/deps/v8/test/cctest/test-heap-profiler.cc index 1819aa461e..92ad0a4002 100644 --- a/deps/v8/test/cctest/test-heap-profiler.cc +++ b/deps/v8/test/cctest/test-heap-profiler.cc @@ -396,20 +396,17 @@ class NamedEntriesDetector { has_A2(false), has_B2(false), has_C2(false) { } - void Apply(i::HeapEntry* entry) { - const char* node_name = entry->name(); - if (strcmp("A1", node_name) == 0 - && entry->GetRetainingPaths()->length() > 0) has_A1 = true; - if (strcmp("B1", node_name) == 0 - && entry->GetRetainingPaths()->length() > 0) has_B1 = true; - if (strcmp("C1", node_name) == 0 - && entry->GetRetainingPaths()->length() > 0) has_C1 = true; - if (strcmp("A2", node_name) == 0 - && entry->GetRetainingPaths()->length() > 0) has_A2 = true; - if (strcmp("B2", node_name) == 0 - && entry->GetRetainingPaths()->length() > 0) has_B2 = true; - if (strcmp("C2", node_name) == 0 - && entry->GetRetainingPaths()->length() > 0) has_C2 = true; + void Apply(i::HeapEntry** entry_ptr) { + if (IsReachableNodeWithName(*entry_ptr, "A1")) has_A1 = true; + if (IsReachableNodeWithName(*entry_ptr, "B1")) has_B1 = true; + if (IsReachableNodeWithName(*entry_ptr, "C1")) has_C1 = true; + if (IsReachableNodeWithName(*entry_ptr, "A2")) has_A2 = true; + if (IsReachableNodeWithName(*entry_ptr, "B2")) has_B2 = true; + if (IsReachableNodeWithName(*entry_ptr, "C2")) has_C2 = true; + } + + static bool IsReachableNodeWithName(i::HeapEntry* entry, const char* name) { + return strcmp(name, entry->name()) == 0 && entry->painted_reachable(); } bool has_A1; @@ -460,7 +457,7 @@ static bool HasString(const v8::HeapGraphNode* node, const char* contents) { for (int i = 0, count = node->GetChildrenCount(); i < count; ++i) { const v8::HeapGraphEdge* prop = node->GetChild(i); const v8::HeapGraphNode* node = prop->GetToNode(); - if (node->GetType() == v8::HeapGraphNode::STRING) { + if (node->GetType() == v8::HeapGraphNode::kString) { v8::String::AsciiValue node_name(node->GetName()); if (strcmp(contents, *node_name) == 0) return true; } @@ -496,26 +493,34 @@ TEST(HeapSnapshot) { "var c2 = new C2(a2);"); const v8::HeapSnapshot* snapshot_env2 = v8::HeapProfiler::TakeSnapshot(v8::String::New("env2")); + i::HeapSnapshot* i_snapshot_env2 = + const_cast( + reinterpret_cast(snapshot_env2)); const v8::HeapGraphNode* global_env2 = GetGlobalObject(snapshot_env2); + // Paint all nodes reachable from global object. + i_snapshot_env2->ClearPaint(); + const_cast( + reinterpret_cast(global_env2))->PaintAllReachable(); // Verify, that JS global object of env2 doesn't have '..1' // properties, but has '..2' properties. - CHECK_EQ(NULL, GetProperty(global_env2, v8::HeapGraphEdge::PROPERTY, "a1")); - CHECK_EQ(NULL, GetProperty(global_env2, v8::HeapGraphEdge::PROPERTY, "b1_1")); - CHECK_EQ(NULL, GetProperty(global_env2, v8::HeapGraphEdge::PROPERTY, "b1_2")); - CHECK_EQ(NULL, GetProperty(global_env2, v8::HeapGraphEdge::PROPERTY, "c1")); + CHECK_EQ(NULL, GetProperty(global_env2, v8::HeapGraphEdge::kProperty, "a1")); + CHECK_EQ( + NULL, GetProperty(global_env2, v8::HeapGraphEdge::kProperty, "b1_1")); + CHECK_EQ( + NULL, GetProperty(global_env2, v8::HeapGraphEdge::kProperty, "b1_2")); + CHECK_EQ(NULL, GetProperty(global_env2, v8::HeapGraphEdge::kProperty, "c1")); const v8::HeapGraphNode* a2_node = - GetProperty(global_env2, v8::HeapGraphEdge::PROPERTY, "a2"); + GetProperty(global_env2, v8::HeapGraphEdge::kProperty, "a2"); CHECK_NE(NULL, a2_node); - CHECK_NE(NULL, GetProperty(global_env2, v8::HeapGraphEdge::PROPERTY, "b2_1")); - CHECK_NE(NULL, GetProperty(global_env2, v8::HeapGraphEdge::PROPERTY, "b2_2")); - CHECK_NE(NULL, GetProperty(global_env2, v8::HeapGraphEdge::PROPERTY, "c2")); + CHECK_NE( + NULL, GetProperty(global_env2, v8::HeapGraphEdge::kProperty, "b2_1")); + CHECK_NE( + NULL, GetProperty(global_env2, v8::HeapGraphEdge::kProperty, "b2_2")); + CHECK_NE(NULL, GetProperty(global_env2, v8::HeapGraphEdge::kProperty, "c2")); // Verify that anything related to '[ABC]1' is not reachable. NamedEntriesDetector det; - i::HeapSnapshot* i_snapshot_env2 = - const_cast( - reinterpret_cast(snapshot_env2)); i_snapshot_env2->IterateEntries(&det); CHECK(!det.has_A1); CHECK(!det.has_B1); @@ -539,7 +544,7 @@ TEST(HeapSnapshot) { const v8::HeapGraphEdge* last_edge = path->GetEdge(edges_count - 1); v8::String::AsciiValue last_edge_name(last_edge->GetName()); if (strcmp("a2", *last_edge_name) == 0 - && last_edge->GetType() == v8::HeapGraphEdge::PROPERTY) { + && last_edge->GetType() == v8::HeapGraphEdge::kProperty) { has_global_obj_a2_ref = true; continue; } @@ -547,19 +552,19 @@ TEST(HeapSnapshot) { const v8::HeapGraphEdge* prev_edge = path->GetEdge(edges_count - 2); v8::String::AsciiValue prev_edge_name(prev_edge->GetName()); if (strcmp("x1", *last_edge_name) == 0 - && last_edge->GetType() == v8::HeapGraphEdge::PROPERTY + && last_edge->GetType() == v8::HeapGraphEdge::kProperty && strcmp("c2", *prev_edge_name) == 0) has_c2_x1_ref = true; if (strcmp("x2", *last_edge_name) == 0 - && last_edge->GetType() == v8::HeapGraphEdge::PROPERTY + && last_edge->GetType() == v8::HeapGraphEdge::kProperty && strcmp("c2", *prev_edge_name) == 0) has_c2_x2_ref = true; if (strcmp("1", *last_edge_name) == 0 - && last_edge->GetType() == v8::HeapGraphEdge::ELEMENT + && last_edge->GetType() == v8::HeapGraphEdge::kElement && strcmp("c2", *prev_edge_name) == 0) has_c2_1_ref = true; if (strcmp("x", *last_edge_name) == 0 - && last_edge->GetType() == v8::HeapGraphEdge::CONTEXT_VARIABLE + && last_edge->GetType() == v8::HeapGraphEdge::kContextVariable && strcmp("b2_1", *prev_edge_name) == 0) has_b2_1_x_ref = true; if (strcmp("x", *last_edge_name) == 0 - && last_edge->GetType() == v8::HeapGraphEdge::CONTEXT_VARIABLE + && last_edge->GetType() == v8::HeapGraphEdge::kContextVariable && strcmp("b2_2", *prev_edge_name) == 0) has_b2_2_x_ref = true; } CHECK(has_global_obj_a2_ref); @@ -571,6 +576,73 @@ TEST(HeapSnapshot) { } +TEST(HeapSnapshotObjectSizes) { + v8::HandleScope scope; + LocalContext env; + + // -a-> X1 --a + // x -b-> X2 <-| + CompileAndRunScript( + "function X(a, b) { this.a = a; this.b = b; }\n" + "x = new X(new X(), new X());\n" + "x.a.a = x.b;"); + const v8::HeapSnapshot* snapshot = + v8::HeapProfiler::TakeSnapshot(v8::String::New("sizes")); + const v8::HeapGraphNode* global = GetGlobalObject(snapshot); + const v8::HeapGraphNode* x = + GetProperty(global, v8::HeapGraphEdge::kProperty, "x"); + CHECK_NE(NULL, x); + const v8::HeapGraphNode* x_prototype = + GetProperty(x, v8::HeapGraphEdge::kProperty, "prototype"); + CHECK_NE(NULL, x_prototype); + const v8::HeapGraphNode* x1 = + GetProperty(x, v8::HeapGraphEdge::kProperty, "a"); + CHECK_NE(NULL, x1); + const v8::HeapGraphNode* x2 = + GetProperty(x, v8::HeapGraphEdge::kProperty, "b"); + CHECK_NE(NULL, x2); + CHECK_EQ( + x->GetSelfSize() * 3, + x->GetReachableSize() - x_prototype->GetReachableSize()); + CHECK_EQ( + x->GetSelfSize() * 3 + x_prototype->GetSelfSize(), x->GetRetainedSize()); + CHECK_EQ( + x1->GetSelfSize() * 2, + x1->GetReachableSize() - x_prototype->GetReachableSize()); + CHECK_EQ( + x1->GetSelfSize(), x1->GetRetainedSize()); + CHECK_EQ( + x2->GetSelfSize(), + x2->GetReachableSize() - x_prototype->GetReachableSize()); + CHECK_EQ( + x2->GetSelfSize(), x2->GetRetainedSize()); +} + + +TEST(HeapSnapshotEntryChildren) { + v8::HandleScope scope; + LocalContext env; + + CompileAndRunScript( + "function A() { }\n" + "a = new A;"); + const v8::HeapSnapshot* snapshot = + v8::HeapProfiler::TakeSnapshot(v8::String::New("children")); + const v8::HeapGraphNode* global = GetGlobalObject(snapshot); + for (int i = 0, count = global->GetChildrenCount(); i < count; ++i) { + const v8::HeapGraphEdge* prop = global->GetChild(i); + CHECK_EQ(global, prop->GetFromNode()); + } + const v8::HeapGraphNode* a = + GetProperty(global, v8::HeapGraphEdge::kProperty, "a"); + CHECK_NE(NULL, a); + for (int i = 0, count = a->GetChildrenCount(); i < count; ++i) { + const v8::HeapGraphEdge* prop = a->GetChild(i); + CHECK_EQ(a, prop->GetFromNode()); + } +} + + TEST(HeapSnapshotCodeObjects) { v8::HandleScope scope; LocalContext env; @@ -584,20 +656,20 @@ TEST(HeapSnapshotCodeObjects) { const v8::HeapGraphNode* global = GetGlobalObject(snapshot); const v8::HeapGraphNode* compiled = - GetProperty(global, v8::HeapGraphEdge::PROPERTY, "compiled"); + GetProperty(global, v8::HeapGraphEdge::kProperty, "compiled"); CHECK_NE(NULL, compiled); - CHECK_EQ(v8::HeapGraphNode::CLOSURE, compiled->GetType()); + CHECK_EQ(v8::HeapGraphNode::kClosure, compiled->GetType()); const v8::HeapGraphNode* lazy = - GetProperty(global, v8::HeapGraphEdge::PROPERTY, "lazy"); + GetProperty(global, v8::HeapGraphEdge::kProperty, "lazy"); CHECK_NE(NULL, lazy); - CHECK_EQ(v8::HeapGraphNode::CLOSURE, lazy->GetType()); + CHECK_EQ(v8::HeapGraphNode::kClosure, lazy->GetType()); // Find references to code. const v8::HeapGraphNode* compiled_code = - GetProperty(compiled, v8::HeapGraphEdge::INTERNAL, "code"); + GetProperty(compiled, v8::HeapGraphEdge::kInternal, "code"); CHECK_NE(NULL, compiled_code); const v8::HeapGraphNode* lazy_code = - GetProperty(lazy, v8::HeapGraphEdge::INTERNAL, "code"); + GetProperty(lazy, v8::HeapGraphEdge::kInternal, "code"); CHECK_NE(NULL, lazy_code); // Verify that non-compiled code doesn't contain references to "x" @@ -607,7 +679,7 @@ TEST(HeapSnapshotCodeObjects) { for (int i = 0, count = compiled_code->GetChildrenCount(); i < count; ++i) { const v8::HeapGraphEdge* prop = compiled_code->GetChild(i); const v8::HeapGraphNode* node = prop->GetToNode(); - if (node->GetType() == v8::HeapGraphNode::ARRAY) { + if (node->GetType() == v8::HeapGraphNode::kArray) { if (HasString(node, "x")) { compiled_references_x = true; break; @@ -617,7 +689,7 @@ TEST(HeapSnapshotCodeObjects) { for (int i = 0, count = lazy_code->GetChildrenCount(); i < count; ++i) { const v8::HeapGraphEdge* prop = lazy_code->GetChild(i); const v8::HeapGraphNode* node = prop->GetToNode(); - if (node->GetType() == v8::HeapGraphNode::ARRAY) { + if (node->GetType() == v8::HeapGraphNode::kArray) { if (HasString(node, "x")) { lazy_references_x = true; break; @@ -634,11 +706,8 @@ TEST(HeapSnapshotCodeObjects) { // them to a signed type. #define CHECK_EQ_UINT64_T(a, b) \ CHECK_EQ(static_cast(a), static_cast(b)) -#define CHECK_NE_UINT64_T(a, b) do \ - { \ - bool ne = a != b; \ - CHECK(ne); \ - } while (false) +#define CHECK_NE_UINT64_T(a, b) \ + CHECK((a) != (b)) // NOLINT TEST(HeapEntryIdsAndGC) { v8::HandleScope scope; @@ -662,27 +731,35 @@ TEST(HeapEntryIdsAndGC) { CHECK_NE_UINT64_T(0, global1->GetId()); CHECK_EQ_UINT64_T(global1->GetId(), global2->GetId()); const v8::HeapGraphNode* A1 = - GetProperty(global1, v8::HeapGraphEdge::PROPERTY, "A"); + GetProperty(global1, v8::HeapGraphEdge::kProperty, "A"); + CHECK_NE(NULL, A1); const v8::HeapGraphNode* A2 = - GetProperty(global2, v8::HeapGraphEdge::PROPERTY, "A"); + GetProperty(global2, v8::HeapGraphEdge::kProperty, "A"); + CHECK_NE(NULL, A2); CHECK_NE_UINT64_T(0, A1->GetId()); CHECK_EQ_UINT64_T(A1->GetId(), A2->GetId()); const v8::HeapGraphNode* B1 = - GetProperty(global1, v8::HeapGraphEdge::PROPERTY, "B"); + GetProperty(global1, v8::HeapGraphEdge::kProperty, "B"); + CHECK_NE(NULL, B1); const v8::HeapGraphNode* B2 = - GetProperty(global2, v8::HeapGraphEdge::PROPERTY, "B"); + GetProperty(global2, v8::HeapGraphEdge::kProperty, "B"); + CHECK_NE(NULL, B2); CHECK_NE_UINT64_T(0, B1->GetId()); CHECK_EQ_UINT64_T(B1->GetId(), B2->GetId()); const v8::HeapGraphNode* a1 = - GetProperty(global1, v8::HeapGraphEdge::PROPERTY, "a"); + GetProperty(global1, v8::HeapGraphEdge::kProperty, "a"); + CHECK_NE(NULL, a1); const v8::HeapGraphNode* a2 = - GetProperty(global2, v8::HeapGraphEdge::PROPERTY, "a"); + GetProperty(global2, v8::HeapGraphEdge::kProperty, "a"); + CHECK_NE(NULL, a2); CHECK_NE_UINT64_T(0, a1->GetId()); CHECK_EQ_UINT64_T(a1->GetId(), a2->GetId()); const v8::HeapGraphNode* b1 = - GetProperty(global1, v8::HeapGraphEdge::PROPERTY, "b"); + GetProperty(global1, v8::HeapGraphEdge::kProperty, "b"); + CHECK_NE(NULL, b1); const v8::HeapGraphNode* b2 = - GetProperty(global2, v8::HeapGraphEdge::PROPERTY, "b"); + GetProperty(global2, v8::HeapGraphEdge::kProperty, "b"); + CHECK_NE(NULL, b2); CHECK_NE_UINT64_T(0, b1->GetId()); CHECK_EQ_UINT64_T(b1->GetId(), b2->GetId()); } @@ -717,15 +794,15 @@ TEST(HeapSnapshotsDiff) { for (int i = 0, count = additions_root->GetChildrenCount(); i < count; ++i) { const v8::HeapGraphEdge* prop = additions_root->GetChild(i); const v8::HeapGraphNode* node = prop->GetToNode(); - if (node->GetType() == v8::HeapGraphNode::OBJECT) { + if (node->GetType() == v8::HeapGraphNode::kObject) { v8::String::AsciiValue node_name(node->GetName()); if (strcmp(*node_name, "A") == 0) { - CHECK(IsNodeRetainedAs(node, v8::HeapGraphEdge::PROPERTY, "a")); + CHECK(IsNodeRetainedAs(node, v8::HeapGraphEdge::kProperty, "a")); CHECK(!found_A); found_A = true; s1_A_id = node->GetId(); } else if (strcmp(*node_name, "B") == 0) { - CHECK(IsNodeRetainedAs(node, v8::HeapGraphEdge::PROPERTY, "b2")); + CHECK(IsNodeRetainedAs(node, v8::HeapGraphEdge::kProperty, "b2")); CHECK(!found_B); found_B = true; } @@ -741,10 +818,10 @@ TEST(HeapSnapshotsDiff) { for (int i = 0, count = deletions_root->GetChildrenCount(); i < count; ++i) { const v8::HeapGraphEdge* prop = deletions_root->GetChild(i); const v8::HeapGraphNode* node = prop->GetToNode(); - if (node->GetType() == v8::HeapGraphNode::OBJECT) { + if (node->GetType() == v8::HeapGraphNode::kObject) { v8::String::AsciiValue node_name(node->GetName()); if (strcmp(*node_name, "A") == 0) { - CHECK(IsNodeRetainedAs(node, v8::HeapGraphEdge::PROPERTY, "a")); + CHECK(IsNodeRetainedAs(node, v8::HeapGraphEdge::kProperty, "a")); CHECK(!found_A_del); found_A_del = true; s2_A_id = node->GetId(); @@ -756,4 +833,35 @@ TEST(HeapSnapshotsDiff) { CHECK(s1_A_id != s2_A_id); } + +namespace v8 { +namespace internal { + +class HeapSnapshotTester { + public: + static int CalculateNetworkSize(JSObject* obj) { + return HeapSnapshot::CalculateNetworkSize(obj); + } +}; + +} } // namespace v8::internal + +// http://code.google.com/p/v8/issues/detail?id=822 +// Trying to call CalculateNetworkSize on an object with elements set +// to non-FixedArray may cause an assertion error in debug builds. +TEST(Issue822) { + v8::HandleScope scope; + LocalContext context; + const int kElementCount = 260; + uint8_t* pixel_data = reinterpret_cast(malloc(kElementCount)); + i::Handle pixels = i::Factory::NewPixelArray(kElementCount, + pixel_data); + v8::Handle obj = v8::Object::New(); + // Set the elements to be the pixels. + obj->SetIndexedPropertiesToPixelData(pixel_data, kElementCount); + i::Handle jsobj = v8::Utils::OpenHandle(*obj); + // This call must not cause an assertion error in debug builds. + i::HeapSnapshotTester::CalculateNetworkSize(*jsobj); +} + #endif // ENABLE_LOGGING_AND_PROFILING diff --git a/deps/v8/test/mjsunit/api-call-after-bypassed-exception.js b/deps/v8/test/mjsunit/api-call-after-bypassed-exception.js index f77b5140c1..4a1855881e 100644 --- a/deps/v8/test/mjsunit/api-call-after-bypassed-exception.js +++ b/deps/v8/test/mjsunit/api-call-after-bypassed-exception.js @@ -1,29 +1,29 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Copyright 2008 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // This is a test of making an API call after an exception thrown in JavaScript // has been bypassed by a return in the finally block. diff --git a/deps/v8/test/mjsunit/debug-clearbreakpointgroup.js b/deps/v8/test/mjsunit/debug-clearbreakpointgroup.js index aad6c3aff7..e6677f9396 100644 --- a/deps/v8/test/mjsunit/debug-clearbreakpointgroup.js +++ b/deps/v8/test/mjsunit/debug-clearbreakpointgroup.js @@ -1,117 +1,117 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-debug-as debug -// Get the Debug object exposed from the debug context global object. -var Debug = debug.Debug - -// Simple function which stores the last debug event. -var listenerComplete = false; -var exception = false; - -var base_request = '"seq":0,"type":"request","command":"clearbreakpointgroup"'; -var scriptId = null; - -function safeEval(code) { - try { - return eval('(' + code + ')'); - } catch (e) { - assertEquals(void 0, e); - return undefined; - } -} - -function testArguments(dcp, arguments, success) { - var request = '{' + base_request + ',"arguments":' + arguments + '}' - var json_response = dcp.processDebugJSONRequest(request); - var response = safeEval(json_response); - if (success) { - assertTrue(response.success, json_response); - } else { - assertFalse(response.success, json_response); - } -} - -function listener(event, exec_state, event_data, data) { - try { - if (event == Debug.DebugEvent.Break) { - // Get the debug command processor. - var dcp = exec_state.debugCommandProcessor("unspecified_running_state"); - - // Clear breakpoint group 1. - testArguments(dcp, '{"groupId":1}', true); - - // Indicate that all was processed. - listenerComplete = true; - } else if (event == Debug.DebugEvent.AfterCompile) { - scriptId = event_data.script().id(); - assertEquals(source, event_data.script().source()); - } - } catch (e) { - exception = e - }; -}; - - -// Add the debug event listener. -Debug.setListener(listener); - -var source = 'function f(n) {\nreturn n+1;\n}\nfunction g() {return f(10);}' + - '\nvar r = g(); g;'; -eval(source); - -assertNotNull(scriptId); - -var groupId1 = 1; -var groupId2 = 2; -// Set a break point and call to invoke the debug event listener. -var bp1 = Debug.setScriptBreakPointById(scriptId, 1, null, null, groupId1); -var bp2 = Debug.setScriptBreakPointById(scriptId, 1, null, null, groupId2); -var bp3 = Debug.setScriptBreakPointById(scriptId, 1, null, null, null); -var bp4 = Debug.setScriptBreakPointById(scriptId, 3, null, null, groupId1); -var bp5 = Debug.setScriptBreakPointById(scriptId, 4, null, null, groupId2); - -assertEquals(5, Debug.scriptBreakPoints().length); - -// Call function 'g' from the compiled script to trigger breakpoint. -g(); - -// Make sure that the debug event listener vas invoked. -assertTrue(listenerComplete, - "listener did not run to completion: " + exception); - -var breakpoints = Debug.scriptBreakPoints(); -assertEquals(3, breakpoints.length); -var breakpointNumbers = breakpoints.map( - function(scriptBreakpoint) { return scriptBreakpoint.number(); }, - breakpointNumbers); - -// Check that all breakpoints from group 1 were deleted and all the -// rest are preserved. -assertEquals([bp2, bp3, bp5].sort(), breakpointNumbers.sort()); - -assertFalse(exception, "exception in listener"); +// Copyright 2008 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Flags: --expose-debug-as debug +// Get the Debug object exposed from the debug context global object. +var Debug = debug.Debug + +// Simple function which stores the last debug event. +var listenerComplete = false; +var exception = false; + +var base_request = '"seq":0,"type":"request","command":"clearbreakpointgroup"'; +var scriptId = null; + +function safeEval(code) { + try { + return eval('(' + code + ')'); + } catch (e) { + assertEquals(void 0, e); + return undefined; + } +} + +function testArguments(dcp, arguments, success) { + var request = '{' + base_request + ',"arguments":' + arguments + '}' + var json_response = dcp.processDebugJSONRequest(request); + var response = safeEval(json_response); + if (success) { + assertTrue(response.success, json_response); + } else { + assertFalse(response.success, json_response); + } +} + +function listener(event, exec_state, event_data, data) { + try { + if (event == Debug.DebugEvent.Break) { + // Get the debug command processor. + var dcp = exec_state.debugCommandProcessor("unspecified_running_state"); + + // Clear breakpoint group 1. + testArguments(dcp, '{"groupId":1}', true); + + // Indicate that all was processed. + listenerComplete = true; + } else if (event == Debug.DebugEvent.AfterCompile) { + scriptId = event_data.script().id(); + assertEquals(source, event_data.script().source()); + } + } catch (e) { + exception = e + }; +}; + + +// Add the debug event listener. +Debug.setListener(listener); + +var source = 'function f(n) {\nreturn n+1;\n}\nfunction g() {return f(10);}' + + '\nvar r = g(); g;'; +eval(source); + +assertNotNull(scriptId); + +var groupId1 = 1; +var groupId2 = 2; +// Set a break point and call to invoke the debug event listener. +var bp1 = Debug.setScriptBreakPointById(scriptId, 1, null, null, groupId1); +var bp2 = Debug.setScriptBreakPointById(scriptId, 1, null, null, groupId2); +var bp3 = Debug.setScriptBreakPointById(scriptId, 1, null, null, null); +var bp4 = Debug.setScriptBreakPointById(scriptId, 3, null, null, groupId1); +var bp5 = Debug.setScriptBreakPointById(scriptId, 4, null, null, groupId2); + +assertEquals(5, Debug.scriptBreakPoints().length); + +// Call function 'g' from the compiled script to trigger breakpoint. +g(); + +// Make sure that the debug event listener vas invoked. +assertTrue(listenerComplete, + "listener did not run to completion: " + exception); + +var breakpoints = Debug.scriptBreakPoints(); +assertEquals(3, breakpoints.length); +var breakpointNumbers = breakpoints.map( + function(scriptBreakpoint) { return scriptBreakpoint.number(); }, + breakpointNumbers); + +// Check that all breakpoints from group 1 were deleted and all the +// rest are preserved. +assertEquals([bp2, bp3, bp5].sort(), breakpointNumbers.sort()); + +assertFalse(exception, "exception in listener"); diff --git a/deps/v8/test/mjsunit/debug-evaluate-bool-constructor.js b/deps/v8/test/mjsunit/debug-evaluate-bool-constructor.js index 809a5ccc69..d268091704 100644 --- a/deps/v8/test/mjsunit/debug-evaluate-bool-constructor.js +++ b/deps/v8/test/mjsunit/debug-evaluate-bool-constructor.js @@ -1,80 +1,80 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-debug-as debug -// Get the Debug object exposed from the debug context global object. -Debug = debug.Debug - -var listenerComplete = false; -var exception = false; - -function listener(event, exec_state, event_data, data) { - try { - if (event == Debug.DebugEvent.Break) { - // Get the debug command processor. - var dcp = exec_state.debugCommandProcessor(); - - var request = { - seq: 0, - type: 'request', - command: 'evaluate', - arguments: { - expression: 'a', - frame: 0 - } - }; - request = JSON.stringify(request); - - var resp = dcp.processDebugJSONRequest(request); - var response = JSON.parse(resp); - assertTrue(response.success, 'Command failed: ' + resp); - assertEquals('object', response.body.type); - assertEquals('Object', response.body.className); - - // Indicate that all was processed. - listenerComplete = true; - } - } catch (e) { - exception = e - }; -}; - -// Add the debug event listener. -Debug.setListener(listener); - -function callDebugger() { - // Add set constructor field to a non-function value. - var a = {constructor:true}; - debugger; -} - -callDebugger(); - - -// Make sure that the debug event listener vas invoked. -assertFalse(exception, "exception in listener") -assertTrue(listenerComplete, "listener did not run to completion"); +// Copyright 2009 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Flags: --expose-debug-as debug +// Get the Debug object exposed from the debug context global object. +Debug = debug.Debug + +var listenerComplete = false; +var exception = false; + +function listener(event, exec_state, event_data, data) { + try { + if (event == Debug.DebugEvent.Break) { + // Get the debug command processor. + var dcp = exec_state.debugCommandProcessor(); + + var request = { + seq: 0, + type: 'request', + command: 'evaluate', + arguments: { + expression: 'a', + frame: 0 + } + }; + request = JSON.stringify(request); + + var resp = dcp.processDebugJSONRequest(request); + var response = JSON.parse(resp); + assertTrue(response.success, 'Command failed: ' + resp); + assertEquals('object', response.body.type); + assertEquals('Object', response.body.className); + + // Indicate that all was processed. + listenerComplete = true; + } + } catch (e) { + exception = e + }; +}; + +// Add the debug event listener. +Debug.setListener(listener); + +function callDebugger() { + // Add set constructor field to a non-function value. + var a = {constructor:true}; + debugger; +} + +callDebugger(); + + +// Make sure that the debug event listener vas invoked. +assertFalse(exception, "exception in listener") +assertTrue(listenerComplete, "listener did not run to completion"); diff --git a/deps/v8/test/mjsunit/debug-references.js b/deps/v8/test/mjsunit/debug-references.js index 452761cf1c..ab6c6292e3 100644 --- a/deps/v8/test/mjsunit/debug-references.js +++ b/deps/v8/test/mjsunit/debug-references.js @@ -1,118 +1,118 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-debug-as debug -// Get the Debug object exposed from the debug context global object. -Debug = debug.Debug - -listenerComplete = false; -exception = false; - -// The base part of all evaluate requests. -var base_request = '"seq":0,"type":"request","command":"references"' - -function safeEval(code) { - try { - return eval('(' + code + ')'); - } catch (e) { - assertEquals(void 0, e); - return undefined; - } -} - -function testRequest(dcp, arguments, success, count) { - // Generate request with the supplied arguments. - var request; - if (arguments) { - request = '{' + base_request + ',"arguments":' + arguments + '}'; - } else { - request = '{' + base_request + '}' - } - - // Process the request and check expectation. - var response = safeEval(dcp.processDebugJSONRequest(request)); - if (success) { - assertTrue(response.success, request + ' -> ' + response.message); - assertTrue(response.body instanceof Array); - if (count) { - assertEquals(count, response.body.length); - } else { - assertTrue(response.body.length > 0); - } - } else { - assertFalse(response.success, request + ' -> ' + response.message); - } - assertEquals(response.running, dcp.isRunning(), request + ' -> expected not running'); -} - -function listener(event, exec_state, event_data, data) { - try { - if (event == Debug.DebugEvent.Break) { - // Get the debug command processor. - var dcp = exec_state.debugCommandProcessor("unspecified_running_state"); - - // Test some illegal references requests. - testRequest(dcp, void 0, false); - testRequest(dcp, '{"handle":"a"}', false); - testRequest(dcp, '{"handle":1}', false); - testRequest(dcp, '{"type":"referencedBy"}', false); - testRequest(dcp, '{"type":"constructedBy"}', false); - - // Evaluate Point. - var evaluate_point = '{"seq":0,"type":"request","command":"evaluate",' + - '"arguments":{"expression":"Point"}}'; - var response = safeEval(dcp.processDebugJSONRequest(evaluate_point)); - assertTrue(response.success, "Evaluation of Point failed"); - var handle = response.body.handle; - - // Test some legal references requests. - testRequest(dcp, '{"handle":' + handle + ',"type":"referencedBy"}', true); - testRequest(dcp, '{"handle":' + handle + ',"type":"constructedBy"}', - true, 2); - - // Indicate that all was processed. - listenerComplete = true; - } - } catch (e) { - exception = e - }; -}; - -// Add the debug event listener. -Debug.setListener(listener); - -// Test constructor and objects. -function Point(x, y) { this.x_ = x; this.y_ = y;} -p = new Point(0,0); -q = new Point(1,2); - -// Enter debugger causing the event listener to be called. -debugger; - -// Make sure that the debug event listener was invoked. -assertFalse(exception, "exception in listener") -assertTrue(listenerComplete, "listener did not run to completion"); +// Copyright 2009 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Flags: --expose-debug-as debug +// Get the Debug object exposed from the debug context global object. +Debug = debug.Debug + +listenerComplete = false; +exception = false; + +// The base part of all evaluate requests. +var base_request = '"seq":0,"type":"request","command":"references"' + +function safeEval(code) { + try { + return eval('(' + code + ')'); + } catch (e) { + assertEquals(void 0, e); + return undefined; + } +} + +function testRequest(dcp, arguments, success, count) { + // Generate request with the supplied arguments. + var request; + if (arguments) { + request = '{' + base_request + ',"arguments":' + arguments + '}'; + } else { + request = '{' + base_request + '}' + } + + // Process the request and check expectation. + var response = safeEval(dcp.processDebugJSONRequest(request)); + if (success) { + assertTrue(response.success, request + ' -> ' + response.message); + assertTrue(response.body instanceof Array); + if (count) { + assertEquals(count, response.body.length); + } else { + assertTrue(response.body.length > 0); + } + } else { + assertFalse(response.success, request + ' -> ' + response.message); + } + assertEquals(response.running, dcp.isRunning(), request + ' -> expected not running'); +} + +function listener(event, exec_state, event_data, data) { + try { + if (event == Debug.DebugEvent.Break) { + // Get the debug command processor. + var dcp = exec_state.debugCommandProcessor("unspecified_running_state"); + + // Test some illegal references requests. + testRequest(dcp, void 0, false); + testRequest(dcp, '{"handle":"a"}', false); + testRequest(dcp, '{"handle":1}', false); + testRequest(dcp, '{"type":"referencedBy"}', false); + testRequest(dcp, '{"type":"constructedBy"}', false); + + // Evaluate Point. + var evaluate_point = '{"seq":0,"type":"request","command":"evaluate",' + + '"arguments":{"expression":"Point"}}'; + var response = safeEval(dcp.processDebugJSONRequest(evaluate_point)); + assertTrue(response.success, "Evaluation of Point failed"); + var handle = response.body.handle; + + // Test some legal references requests. + testRequest(dcp, '{"handle":' + handle + ',"type":"referencedBy"}', true); + testRequest(dcp, '{"handle":' + handle + ',"type":"constructedBy"}', + true, 2); + + // Indicate that all was processed. + listenerComplete = true; + } + } catch (e) { + exception = e + }; +}; + +// Add the debug event listener. +Debug.setListener(listener); + +// Test constructor and objects. +function Point(x, y) { this.x_ = x; this.y_ = y;} +p = new Point(0,0); +q = new Point(1,2); + +// Enter debugger causing the event listener to be called. +debugger; + +// Make sure that the debug event listener was invoked. +assertFalse(exception, "exception in listener") +assertTrue(listenerComplete, "listener did not run to completion"); diff --git a/deps/v8/test/mjsunit/debug-stepin-accessor.js b/deps/v8/test/mjsunit/debug-stepin-accessor.js index 2e593b2863..2c9c8c324f 100644 --- a/deps/v8/test/mjsunit/debug-stepin-accessor.js +++ b/deps/v8/test/mjsunit/debug-stepin-accessor.js @@ -1,248 +1,248 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-debug-as debug - -// Get the Debug object exposed from the debug context global object. -Debug = debug.Debug - -var exception = null; -var state = 1; -var expected_source_line_text = null; -var expected_function_name = null; - -// Simple debug event handler which first time will cause 'step in' action -// to get into g.call and than check that execution is stopped inside -// function 'g'. -function listener(event, exec_state, event_data, data) { - try { - if (event == Debug.DebugEvent.Break) { - if (state == 1) { - exec_state.prepareStep(Debug.StepAction.StepIn, 2); - state = 2; - } else if (state == 2) { - assertEquals(expected_source_line_text, - event_data.sourceLineText()); - assertEquals(expected_function_name, event_data.func().name()); - state = 3; - } - } - } catch(e) { - exception = e; - } -}; - -// Add the debug event listener. -Debug.setListener(listener); - - -var c = { - name: 'name ', - get getter1() { - return this.name; // getter 1 - }, - get getter2() { - return { // getter 2 - 'a': c.name - }; - }, - set setter1(n) { - this.name = n; // setter 1 - } -}; - -c.__defineGetter__('y', function getterY() { - return this.name; // getter y -}); - -c.__defineGetter__(3, function getter3() { - return this.name; // getter 3 -}); - -c.__defineSetter__('y', function setterY(n) { - this.name = n; // setter y -}); - -c.__defineSetter__(3, function setter3(n) { - this.name = n; // setter 3 -}); - -var d = { - 'c': c, -}; - -function testGetter1_1() { - expected_function_name = 'getter1'; - expected_source_line_text = ' return this.name; // getter 1'; - debugger; - var x = c.getter1; -} - -function testGetter1_2() { - expected_function_name = 'getter1'; - expected_source_line_text = ' return this.name; // getter 1'; - debugger; - var x = c['getter1']; -} - -function testGetter1_3() { - expected_function_name = 'getter1'; - expected_source_line_text = ' return this.name; // getter 1'; - debugger; - for (var i = 1; i < 2; i++) { - var x = c['getter' + i]; - } -} - -function testGetter1_4() { - expected_function_name = 'getter1'; - expected_source_line_text = ' return this.name; // getter 1'; - debugger; - var x = d.c.getter1; -} - -function testGetter1_5() { - expected_function_name = 'getter1'; - expected_source_line_text = ' return this.name; // getter 1'; - for (var i = 2; i != 1; i--); - debugger; - var x = d.c['getter' + i]; -} - -function testGetter2_1() { - expected_function_name = 'getter2'; - expected_source_line_text = ' return { // getter 2'; - for (var i = 2; i != 1; i--); - debugger; - var t = d.c.getter2.name; -} - - -function testGetterY_1() { - expected_function_name = 'getterY'; - expected_source_line_text = ' return this.name; // getter y'; - debugger; - var t = d.c.y; -} - -function testIndexedGetter3_1() { - expected_function_name = 'getter3'; - expected_source_line_text = ' return this.name; // getter 3'; - debugger; - var r = d.c[3]; -} - -function testSetterY_1() { - expected_function_name = 'setterY'; - expected_source_line_text = ' this.name = n; // setter y'; - debugger; - d.c.y = 'www'; -} - -function testIndexedSetter3_1() { - expected_function_name = 'setter3'; - expected_source_line_text = ' this.name = n; // setter 3'; - var i = 3 - debugger; - d.c[3] = 'www'; -} - -function testSetter1_1() { - expected_function_name = 'setter1'; - expected_source_line_text = ' this.name = n; // setter 1'; - debugger; - d.c.setter1 = 'aa'; -} - -function testSetter1_2() { - expected_function_name = 'setter1'; - expected_source_line_text = ' this.name = n; // setter 1'; - debugger; - d.c['setter1'] = 'bb'; -} - -function testSetter1_3() { - expected_function_name = 'setter1'; - expected_source_line_text = ' this.name = n; // setter 1'; - for (var i = 2; i != 1; i--); - debugger; - d.c['setter' + i] = i; -} - -var e = { - name: 'e' -}; -e.__proto__ = c; - -function testProtoGetter1_1() { - expected_function_name = 'getter1'; - expected_source_line_text = ' return this.name; // getter 1'; - debugger; - var x = e.getter1; -} - -function testProtoSetter1_1() { - expected_function_name = 'setter1'; - expected_source_line_text = ' this.name = n; // setter 1'; - debugger; - e.setter1 = 'aa'; -} - -function testProtoIndexedGetter3_1() { - expected_function_name = 'getter3'; - expected_source_line_text = ' return this.name; // getter 3'; - debugger; - var x = e[3]; -} - -function testProtoIndexedSetter3_1() { - expected_function_name = 'setter3'; - expected_source_line_text = ' this.name = n; // setter 3'; - debugger; - e[3] = 'new val'; -} - -function testProtoSetter1_2() { - expected_function_name = 'setter1'; - expected_source_line_text = ' this.name = n; // setter 1'; - for (var i = 2; i != 1; i--); - debugger; - e['setter' + i] = 'aa'; -} - -for (var n in this) { - if (n.substr(0, 4) != 'test') { - continue; - } - state = 1; - this[n](); - assertNull(exception); - assertEquals(3, state); -} - -// Get rid of the debug event listener. -Debug.setListener(null); +// Copyright 2008 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Flags: --expose-debug-as debug + +// Get the Debug object exposed from the debug context global object. +Debug = debug.Debug + +var exception = null; +var state = 1; +var expected_source_line_text = null; +var expected_function_name = null; + +// Simple debug event handler which first time will cause 'step in' action +// to get into g.call and than check that execution is stopped inside +// function 'g'. +function listener(event, exec_state, event_data, data) { + try { + if (event == Debug.DebugEvent.Break) { + if (state == 1) { + exec_state.prepareStep(Debug.StepAction.StepIn, 2); + state = 2; + } else if (state == 2) { + assertEquals(expected_source_line_text, + event_data.sourceLineText()); + assertEquals(expected_function_name, event_data.func().name()); + state = 3; + } + } + } catch(e) { + exception = e; + } +}; + +// Add the debug event listener. +Debug.setListener(listener); + + +var c = { + name: 'name ', + get getter1() { + return this.name; // getter 1 + }, + get getter2() { + return { // getter 2 + 'a': c.name + }; + }, + set setter1(n) { + this.name = n; // setter 1 + } +}; + +c.__defineGetter__('y', function getterY() { + return this.name; // getter y +}); + +c.__defineGetter__(3, function getter3() { + return this.name; // getter 3 +}); + +c.__defineSetter__('y', function setterY(n) { + this.name = n; // setter y +}); + +c.__defineSetter__(3, function setter3(n) { + this.name = n; // setter 3 +}); + +var d = { + 'c': c, +}; + +function testGetter1_1() { + expected_function_name = 'getter1'; + expected_source_line_text = ' return this.name; // getter 1'; + debugger; + var x = c.getter1; +} + +function testGetter1_2() { + expected_function_name = 'getter1'; + expected_source_line_text = ' return this.name; // getter 1'; + debugger; + var x = c['getter1']; +} + +function testGetter1_3() { + expected_function_name = 'getter1'; + expected_source_line_text = ' return this.name; // getter 1'; + debugger; + for (var i = 1; i < 2; i++) { + var x = c['getter' + i]; + } +} + +function testGetter1_4() { + expected_function_name = 'getter1'; + expected_source_line_text = ' return this.name; // getter 1'; + debugger; + var x = d.c.getter1; +} + +function testGetter1_5() { + expected_function_name = 'getter1'; + expected_source_line_text = ' return this.name; // getter 1'; + for (var i = 2; i != 1; i--); + debugger; + var x = d.c['getter' + i]; +} + +function testGetter2_1() { + expected_function_name = 'getter2'; + expected_source_line_text = ' return { // getter 2'; + for (var i = 2; i != 1; i--); + debugger; + var t = d.c.getter2.name; +} + + +function testGetterY_1() { + expected_function_name = 'getterY'; + expected_source_line_text = ' return this.name; // getter y'; + debugger; + var t = d.c.y; +} + +function testIndexedGetter3_1() { + expected_function_name = 'getter3'; + expected_source_line_text = ' return this.name; // getter 3'; + debugger; + var r = d.c[3]; +} + +function testSetterY_1() { + expected_function_name = 'setterY'; + expected_source_line_text = ' this.name = n; // setter y'; + debugger; + d.c.y = 'www'; +} + +function testIndexedSetter3_1() { + expected_function_name = 'setter3'; + expected_source_line_text = ' this.name = n; // setter 3'; + var i = 3 + debugger; + d.c[3] = 'www'; +} + +function testSetter1_1() { + expected_function_name = 'setter1'; + expected_source_line_text = ' this.name = n; // setter 1'; + debugger; + d.c.setter1 = 'aa'; +} + +function testSetter1_2() { + expected_function_name = 'setter1'; + expected_source_line_text = ' this.name = n; // setter 1'; + debugger; + d.c['setter1'] = 'bb'; +} + +function testSetter1_3() { + expected_function_name = 'setter1'; + expected_source_line_text = ' this.name = n; // setter 1'; + for (var i = 2; i != 1; i--); + debugger; + d.c['setter' + i] = i; +} + +var e = { + name: 'e' +}; +e.__proto__ = c; + +function testProtoGetter1_1() { + expected_function_name = 'getter1'; + expected_source_line_text = ' return this.name; // getter 1'; + debugger; + var x = e.getter1; +} + +function testProtoSetter1_1() { + expected_function_name = 'setter1'; + expected_source_line_text = ' this.name = n; // setter 1'; + debugger; + e.setter1 = 'aa'; +} + +function testProtoIndexedGetter3_1() { + expected_function_name = 'getter3'; + expected_source_line_text = ' return this.name; // getter 3'; + debugger; + var x = e[3]; +} + +function testProtoIndexedSetter3_1() { + expected_function_name = 'setter3'; + expected_source_line_text = ' this.name = n; // setter 3'; + debugger; + e[3] = 'new val'; +} + +function testProtoSetter1_2() { + expected_function_name = 'setter1'; + expected_source_line_text = ' this.name = n; // setter 1'; + for (var i = 2; i != 1; i--); + debugger; + e['setter' + i] = 'aa'; +} + +for (var n in this) { + if (n.substr(0, 4) != 'test') { + continue; + } + state = 1; + this[n](); + assertNull(exception); + assertEquals(3, state); +} + +// Get rid of the debug event listener. +Debug.setListener(null); diff --git a/deps/v8/test/mjsunit/debug-stepin-builtin.js b/deps/v8/test/mjsunit/debug-stepin-builtin.js index c6a97eac01..d9c6061104 100644 --- a/deps/v8/test/mjsunit/debug-stepin-builtin.js +++ b/deps/v8/test/mjsunit/debug-stepin-builtin.js @@ -1,78 +1,78 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-debug-as debug - -// Get the Debug object exposed from the debug context global object. -Debug = debug.Debug - -var exception = null; -var state = 1; -var expected_source_line_text = null; -var expected_function_name = null; - -// Simple debug event handler which first time will cause 'step in' action -// and than check that execution is paused inside function -// expected_function_name. -function listener(event, exec_state, event_data, data) { - try { - if (event == Debug.DebugEvent.Break) { - if (state == 1) { - exec_state.prepareStep(Debug.StepAction.StepIn, 2); - state = 2; - } else if (state == 2) { - assertEquals(expected_function_name, event_data.func().name()); - assertEquals(expected_source_line_text, - event_data.sourceLineText()); - state = 3; - } - } - } catch(e) { - exception = e; - } -}; - -// Add the debug event listener. -Debug.setListener(listener); - -var a = [1,2,3,4,5]; - -// Test step into function call from a function without local variables. -function testStepInArraySlice() { - expected_function_name = 'testStepInArraySlice'; - expected_source_line_text = '} // expected line'; - debugger; - var s = Array.prototype.slice.call(a, 2,3); -} // expected line - -state = 1; -testStepInArraySlice(); -assertNull(exception); -assertEquals(3, state); - -// Get rid of the debug event listener. -Debug.setListener(null); +// Copyright 2009 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Flags: --expose-debug-as debug + +// Get the Debug object exposed from the debug context global object. +Debug = debug.Debug + +var exception = null; +var state = 1; +var expected_source_line_text = null; +var expected_function_name = null; + +// Simple debug event handler which first time will cause 'step in' action +// and than check that execution is paused inside function +// expected_function_name. +function listener(event, exec_state, event_data, data) { + try { + if (event == Debug.DebugEvent.Break) { + if (state == 1) { + exec_state.prepareStep(Debug.StepAction.StepIn, 2); + state = 2; + } else if (state == 2) { + assertEquals(expected_function_name, event_data.func().name()); + assertEquals(expected_source_line_text, + event_data.sourceLineText()); + state = 3; + } + } + } catch(e) { + exception = e; + } +}; + +// Add the debug event listener. +Debug.setListener(listener); + +var a = [1,2,3,4,5]; + +// Test step into function call from a function without local variables. +function testStepInArraySlice() { + expected_function_name = 'testStepInArraySlice'; + expected_source_line_text = '} // expected line'; + debugger; + var s = Array.prototype.slice.call(a, 2,3); +} // expected line + +state = 1; +testStepInArraySlice(); +assertNull(exception); +assertEquals(3, state); + +// Get rid of the debug event listener. +Debug.setListener(null); diff --git a/deps/v8/test/mjsunit/debug-stepin-call-function-stub.js b/deps/v8/test/mjsunit/debug-stepin-call-function-stub.js index 12f51429b0..c5cf8fdf3a 100644 --- a/deps/v8/test/mjsunit/debug-stepin-call-function-stub.js +++ b/deps/v8/test/mjsunit/debug-stepin-call-function-stub.js @@ -1,115 +1,115 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-debug-as debug -// Get the Debug object exposed from the debug context global object. -Debug = debug.Debug - -var exception = null; -var state = 0; -var expected_function_name = null; -var expected_source_line_text = null; -var expected_caller_source_line = null; -var step_in_count = 2; - -// Simple debug event handler which first time will cause 'step in' action -// to get into g.call and than check that execution is pauesed inside -// function 'g'. -function listener(event, exec_state, event_data, data) { - try { - if (event == Debug.DebugEvent.Break) { - if (state == 0) { - // Step into f(). - exec_state.prepareStep(Debug.StepAction.StepIn, step_in_count); - state = 2; - } else if (state == 2) { - assertEquals(expected_source_line_text, - event_data.sourceLineText()); - assertEquals(expected_function_name, event_data.func().name()); - state = 3; - } - } - } catch(e) { - exception = e; - } -}; - -// Add the debug event listener. -Debug.setListener(listener); - - -function g() { - return "s"; // expected line -} - -function testFunction() { - var f = g; - var s = 1 +f(10); -} - -function g2() { - return "s2"; // expected line -} - -function testFunction2() { - var f = g2; - var s = 1 +f(10, 20); -} - -// Run three times. First time the function will be compiled lazily, -// second time cached version will be used. -for (var i = 0; i < 3; i++) { - state = 0; - expected_function_name = 'g'; - expected_source_line_text = ' return "s"; // expected line'; - step_in_count = 2; - // Set a break point and call to invoke the debug event listener. - Debug.setBreakPoint(testFunction, 1, 0); - testFunction(); - assertNull(exception); - assertEquals(3, state); -} - -// Test stepping into function call when a breakpoint is set at the place -// of call. Use different pair of functions so that g2 is compiled lazily. -// Run twice: first time function will be compiled lazily, second time -// cached version will be used. -for (var i = 0; i < 3; i++) { - state = 0; - expected_function_name = 'g2'; - expected_source_line_text = ' return "s2"; // expected line'; - step_in_count = 1; - // Set a break point and call to invoke the debug event listener. - Debug.setBreakPoint(testFunction2, 2, 0); - testFunction2(); - assertNull(exception); - assertEquals(3, state); -} - - -// Get rid of the debug event listener. -Debug.setListener(null); +// Copyright 2009 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Flags: --expose-debug-as debug +// Get the Debug object exposed from the debug context global object. +Debug = debug.Debug + +var exception = null; +var state = 0; +var expected_function_name = null; +var expected_source_line_text = null; +var expected_caller_source_line = null; +var step_in_count = 2; + +// Simple debug event handler which first time will cause 'step in' action +// to get into g.call and than check that execution is pauesed inside +// function 'g'. +function listener(event, exec_state, event_data, data) { + try { + if (event == Debug.DebugEvent.Break) { + if (state == 0) { + // Step into f(). + exec_state.prepareStep(Debug.StepAction.StepIn, step_in_count); + state = 2; + } else if (state == 2) { + assertEquals(expected_source_line_text, + event_data.sourceLineText()); + assertEquals(expected_function_name, event_data.func().name()); + state = 3; + } + } + } catch(e) { + exception = e; + } +}; + +// Add the debug event listener. +Debug.setListener(listener); + + +function g() { + return "s"; // expected line +} + +function testFunction() { + var f = g; + var s = 1 +f(10); +} + +function g2() { + return "s2"; // expected line +} + +function testFunction2() { + var f = g2; + var s = 1 +f(10, 20); +} + +// Run three times. First time the function will be compiled lazily, +// second time cached version will be used. +for (var i = 0; i < 3; i++) { + state = 0; + expected_function_name = 'g'; + expected_source_line_text = ' return "s"; // expected line'; + step_in_count = 2; + // Set a break point and call to invoke the debug event listener. + Debug.setBreakPoint(testFunction, 1, 0); + testFunction(); + assertNull(exception); + assertEquals(3, state); +} + +// Test stepping into function call when a breakpoint is set at the place +// of call. Use different pair of functions so that g2 is compiled lazily. +// Run twice: first time function will be compiled lazily, second time +// cached version will be used. +for (var i = 0; i < 3; i++) { + state = 0; + expected_function_name = 'g2'; + expected_source_line_text = ' return "s2"; // expected line'; + step_in_count = 1; + // Set a break point and call to invoke the debug event listener. + Debug.setBreakPoint(testFunction2, 2, 0); + testFunction2(); + assertNull(exception); + assertEquals(3, state); +} + + +// Get rid of the debug event listener. +Debug.setListener(null); diff --git a/deps/v8/test/mjsunit/debug-stepin-function-call.js b/deps/v8/test/mjsunit/debug-stepin-function-call.js index 9f24c017c1..385fcb2f8b 100644 --- a/deps/v8/test/mjsunit/debug-stepin-function-call.js +++ b/deps/v8/test/mjsunit/debug-stepin-function-call.js @@ -1,149 +1,149 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-debug-as debug -// Get the Debug object exposed from the debug context global object. -Debug = debug.Debug - -var exception = null; -var state = 0; - -// Simple debug event handler which first time will cause 'step in' action -// to get into g.call and than check that execution is pauesed inside -// function 'g'. -function listener(event, exec_state, event_data, data) { - try { - if (event == Debug.DebugEvent.Break) { - if (state == 0) { - // Step into f2.call: - exec_state.prepareStep(Debug.StepAction.StepIn, 2); - state = 2; - } else if (state == 2) { - assertEquals('g', event_data.func().name()); - assertEquals(' return t + 1; // expected line', - event_data.sourceLineText()); - state = 3; - } - } - } catch(e) { - exception = e; - } -}; - -// Add the debug event listener. -Debug.setListener(listener); - - -// Sample functions. -function g(t) { - return t + 1; // expected line -} - -// Test step into function call from a function without local variables. -function call1() { - debugger; - g.call(null, 3); -} - - -// Test step into function call from a function with some local variables. -function call2() { - var aLocalVar = 'test'; - var anotherLocalVar = g(aLocalVar) + 's'; - var yetAnotherLocal = 10; - debugger; - g.call(null, 3); -} - -// Test step into function call which is a part of an expression. -function call3() { - var alias = g; - debugger; - var r = 10 + alias.call(null, 3); - var aLocalVar = 'test'; - var anotherLocalVar = g(aLocalVar) + 's'; - var yetAnotherLocal = 10; -} - -// Test step into function call from a function with some local variables. -function call4() { - var alias = g; - debugger; - alias.call(null, 3); - var aLocalVar = 'test'; - var anotherLocalVar = g(aLocalVar) + 's'; - var yetAnotherLocal = 10; -} - -// Test step into function apply from a function without local variables. -function apply1() { - debugger; - g.apply(null, [3]); -} - - -// Test step into function apply from a function with some local variables. -function apply2() { - var aLocalVar = 'test'; - var anotherLocalVar = g(aLocalVar) + 's'; - var yetAnotherLocal = 10; - debugger; - g.apply(null, [3, 4]); -} - -// Test step into function apply which is a part of an expression. -function apply3() { - var alias = g; - debugger; - var r = 10 + alias.apply(null, [3, 'unused arg']); - var aLocalVar = 'test'; - var anotherLocalVar = g(aLocalVar) + 's'; - var yetAnotherLocal = 10; -} - -// Test step into function apply from a function with some local variables. -function apply4() { - var alias = g; - debugger; - alias.apply(null, [3]); - var aLocalVar = 'test'; - var anotherLocalVar = g(aLocalVar) + 's'; - var yetAnotherLocal = 10; -} - -var testFunctions = - [call1, call2, call3, call4, apply1, apply2, apply3, apply4]; - -for (var i = 0; i < testFunctions.length; i++) { - state = 0; - testFunctions[i](); - assertNull(exception); - assertEquals(3, state); -} - -// Get rid of the debug event listener. +// Copyright 2008 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Flags: --expose-debug-as debug +// Get the Debug object exposed from the debug context global object. +Debug = debug.Debug + +var exception = null; +var state = 0; + +// Simple debug event handler which first time will cause 'step in' action +// to get into g.call and than check that execution is pauesed inside +// function 'g'. +function listener(event, exec_state, event_data, data) { + try { + if (event == Debug.DebugEvent.Break) { + if (state == 0) { + // Step into f2.call: + exec_state.prepareStep(Debug.StepAction.StepIn, 2); + state = 2; + } else if (state == 2) { + assertEquals('g', event_data.func().name()); + assertEquals(' return t + 1; // expected line', + event_data.sourceLineText()); + state = 3; + } + } + } catch(e) { + exception = e; + } +}; + +// Add the debug event listener. +Debug.setListener(listener); + + +// Sample functions. +function g(t) { + return t + 1; // expected line +} + +// Test step into function call from a function without local variables. +function call1() { + debugger; + g.call(null, 3); +} + + +// Test step into function call from a function with some local variables. +function call2() { + var aLocalVar = 'test'; + var anotherLocalVar = g(aLocalVar) + 's'; + var yetAnotherLocal = 10; + debugger; + g.call(null, 3); +} + +// Test step into function call which is a part of an expression. +function call3() { + var alias = g; + debugger; + var r = 10 + alias.call(null, 3); + var aLocalVar = 'test'; + var anotherLocalVar = g(aLocalVar) + 's'; + var yetAnotherLocal = 10; +} + +// Test step into function call from a function with some local variables. +function call4() { + var alias = g; + debugger; + alias.call(null, 3); + var aLocalVar = 'test'; + var anotherLocalVar = g(aLocalVar) + 's'; + var yetAnotherLocal = 10; +} + +// Test step into function apply from a function without local variables. +function apply1() { + debugger; + g.apply(null, [3]); +} + + +// Test step into function apply from a function with some local variables. +function apply2() { + var aLocalVar = 'test'; + var anotherLocalVar = g(aLocalVar) + 's'; + var yetAnotherLocal = 10; + debugger; + g.apply(null, [3, 4]); +} + +// Test step into function apply which is a part of an expression. +function apply3() { + var alias = g; + debugger; + var r = 10 + alias.apply(null, [3, 'unused arg']); + var aLocalVar = 'test'; + var anotherLocalVar = g(aLocalVar) + 's'; + var yetAnotherLocal = 10; +} + +// Test step into function apply from a function with some local variables. +function apply4() { + var alias = g; + debugger; + alias.apply(null, [3]); + var aLocalVar = 'test'; + var anotherLocalVar = g(aLocalVar) + 's'; + var yetAnotherLocal = 10; +} + +var testFunctions = + [call1, call2, call3, call4, apply1, apply2, apply3, apply4]; + +for (var i = 0; i < testFunctions.length; i++) { + state = 0; + testFunctions[i](); + assertNull(exception); + assertEquals(3, state); +} + +// Get rid of the debug event listener. Debug.setListener(null); \ No newline at end of file diff --git a/deps/v8/test/mjsunit/debug-stepnext-do-while.js b/deps/v8/test/mjsunit/debug-stepnext-do-while.js index 17058a7b63..bbb18bc436 100644 --- a/deps/v8/test/mjsunit/debug-stepnext-do-while.js +++ b/deps/v8/test/mjsunit/debug-stepnext-do-while.js @@ -1,79 +1,79 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-debug-as debug -// Get the Debug object exposed from the debug context global object. -Debug = debug.Debug - -var exception = null; -var break_break_point_hit_count = 0; - -function listener(event, exec_state, event_data, data) { - try { - if (event == Debug.DebugEvent.Break) { - if (break_break_point_hit_count == 0) { - assertEquals(' debugger;', - event_data.sourceLineText()); - assertEquals('runDoWhile', event_data.func().name()); - } else if (break_break_point_hit_count == 1) { - assertEquals(' } while(condition());', - event_data.sourceLineText()); - assertEquals('runDoWhile', event_data.func().name()); - } - - break_break_point_hit_count++; - // Continue stepping until returned to bottom frame. - if (exec_state.frameCount() > 1) { - exec_state.prepareStep(Debug.StepAction.StepNext); - } - - } - } catch(e) { - exception = e; - } -}; - -// Add the debug event listener. -Debug.setListener(listener); - -function condition() { - return false; -} - -function runDoWhile() { - do { - debugger; - } while(condition()); -}; - -break_break_point_hit_count = 0; -runDoWhile(); -assertNull(exception); -assertEquals(4, break_break_point_hit_count); - -// Get rid of the debug event listener. -Debug.setListener(null); +// Copyright 2009 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Flags: --expose-debug-as debug +// Get the Debug object exposed from the debug context global object. +Debug = debug.Debug + +var exception = null; +var break_break_point_hit_count = 0; + +function listener(event, exec_state, event_data, data) { + try { + if (event == Debug.DebugEvent.Break) { + if (break_break_point_hit_count == 0) { + assertEquals(' debugger;', + event_data.sourceLineText()); + assertEquals('runDoWhile', event_data.func().name()); + } else if (break_break_point_hit_count == 1) { + assertEquals(' } while(condition());', + event_data.sourceLineText()); + assertEquals('runDoWhile', event_data.func().name()); + } + + break_break_point_hit_count++; + // Continue stepping until returned to bottom frame. + if (exec_state.frameCount() > 1) { + exec_state.prepareStep(Debug.StepAction.StepNext); + } + + } + } catch(e) { + exception = e; + } +}; + +// Add the debug event listener. +Debug.setListener(listener); + +function condition() { + return false; +} + +function runDoWhile() { + do { + debugger; + } while(condition()); +}; + +break_break_point_hit_count = 0; +runDoWhile(); +assertNull(exception); +assertEquals(4, break_break_point_hit_count); + +// Get rid of the debug event listener. +Debug.setListener(null); diff --git a/deps/v8/test/mjsunit/debug-stepout-recursive-function.js b/deps/v8/test/mjsunit/debug-stepout-recursive-function.js index 2f8780c950..475fe26592 100644 --- a/deps/v8/test/mjsunit/debug-stepout-recursive-function.js +++ b/deps/v8/test/mjsunit/debug-stepout-recursive-function.js @@ -1,106 +1,106 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-debug-as debug -// Get the Debug object exposed from the debug context global object. -Debug = debug.Debug - -var exception = null; -var step_out_count = 1; - -// Simple debug event handler which counts the number of breaks hit and steps. -var break_point_hit_count = 0; -function listener(event, exec_state, event_data, data) { - try { - if (event == Debug.DebugEvent.Break) { - break_point_hit_count++; - // Continue stepping until returned to bottom frame. - if (exec_state.frameCount() > 1) { - exec_state.prepareStep(Debug.StepAction.StepOut, step_out_count); - } - - } - } catch(e) { - exception = e; - } - -}; - -function BeginTest(name) { - test_name = name; - break_point_hit_count = 0; - exception = null; -} - -function EndTest(expected_break_point_hit_count) { - assertEquals(expected_break_point_hit_count, break_point_hit_count, test_name); - assertNull(exception, test_name); - test_name = null; -} - -// Add the debug event listener. -Debug.setListener(listener); - - -var shouldBreak = null; -function fact(x) { - if (shouldBreak(x)) { - debugger; - } - if (x < 2) { - return 1; - } else { - return x*fact(x-1); - } -} - -BeginTest('Test 1'); -shouldBreak = function(x) { return x == 3; }; -step_out_count = 1; -fact(3); -EndTest(2); - -BeginTest('Test 2'); -shouldBreak = function(x) { return x == 2; }; -step_out_count = 1; -fact(3); -EndTest(3); - -BeginTest('Test 3'); -shouldBreak = function(x) { return x == 1; }; -step_out_count = 2; -fact(3); -EndTest(2); - -BeginTest('Test 4'); -shouldBreak = function(x) { print(x); return x == 1 || x == 3; }; -step_out_count = 2; -fact(3); -EndTest(3); - -// Get rid of the debug event listener. -Debug.setListener(null); +// Copyright 2009 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Flags: --expose-debug-as debug +// Get the Debug object exposed from the debug context global object. +Debug = debug.Debug + +var exception = null; +var step_out_count = 1; + +// Simple debug event handler which counts the number of breaks hit and steps. +var break_point_hit_count = 0; +function listener(event, exec_state, event_data, data) { + try { + if (event == Debug.DebugEvent.Break) { + break_point_hit_count++; + // Continue stepping until returned to bottom frame. + if (exec_state.frameCount() > 1) { + exec_state.prepareStep(Debug.StepAction.StepOut, step_out_count); + } + + } + } catch(e) { + exception = e; + } + +}; + +function BeginTest(name) { + test_name = name; + break_point_hit_count = 0; + exception = null; +} + +function EndTest(expected_break_point_hit_count) { + assertEquals(expected_break_point_hit_count, break_point_hit_count, test_name); + assertNull(exception, test_name); + test_name = null; +} + +// Add the debug event listener. +Debug.setListener(listener); + + +var shouldBreak = null; +function fact(x) { + if (shouldBreak(x)) { + debugger; + } + if (x < 2) { + return 1; + } else { + return x*fact(x-1); + } +} + +BeginTest('Test 1'); +shouldBreak = function(x) { return x == 3; }; +step_out_count = 1; +fact(3); +EndTest(2); + +BeginTest('Test 2'); +shouldBreak = function(x) { return x == 2; }; +step_out_count = 1; +fact(3); +EndTest(3); + +BeginTest('Test 3'); +shouldBreak = function(x) { return x == 1; }; +step_out_count = 2; +fact(3); +EndTest(2); + +BeginTest('Test 4'); +shouldBreak = function(x) { print(x); return x == 1 || x == 3; }; +step_out_count = 2; +fact(3); +EndTest(3); + +// Get rid of the debug event listener. +Debug.setListener(null); diff --git a/deps/v8/test/mjsunit/debug-stepout-to-builtin.js b/deps/v8/test/mjsunit/debug-stepout-to-builtin.js index 486eee0e4d..772fb4b5e8 100644 --- a/deps/v8/test/mjsunit/debug-stepout-to-builtin.js +++ b/deps/v8/test/mjsunit/debug-stepout-to-builtin.js @@ -1,84 +1,84 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Flags: --expose-debug-as debug - -// Get the Debug object exposed from the debug context global object. -Debug = debug.Debug - -var exception = null; -var state = 1; -var expected_source_line_text = null; -var expected_function_name = null; - -// Simple debug event handler which first time will cause 'step out' action -// and than check that execution is paused inside function -// expected_function_name. -function listener(event, exec_state, event_data, data) { - try { - if (event == Debug.DebugEvent.Break) { - if (state == 1) { - exec_state.prepareStep(Debug.StepAction.StepOut, 2); - state = 2; - } else if (state == 2) { - assertEquals(expected_function_name, event_data.func().name()); - assertEquals(expected_source_line_text, - event_data.sourceLineText()); - state = 3; - } - } - } catch(e) { - exception = e; - } -}; - -// Add the debug event listener. -Debug.setListener(listener); - -var obj = {key:10}; - -function replacer(key, value) { - if (key == 'key') { - debugger; - } - return value; -} - -// Test step into function call from a function without local variables. -function testStepOutToBuiltIn() { - expected_function_name = 'testStepOutToBuiltIn'; - expected_source_line_text = '} // expected line'; - JSON.stringify(obj, replacer); -} // expected line - -state = 1; -testStepOutToBuiltIn(); -assertNull(exception); -assertEquals(3, state); - -// Get rid of the debug event listener. -Debug.setListener(null); +// Copyright 2009 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Flags: --expose-debug-as debug + +// Get the Debug object exposed from the debug context global object. +Debug = debug.Debug + +var exception = null; +var state = 1; +var expected_source_line_text = null; +var expected_function_name = null; + +// Simple debug event handler which first time will cause 'step out' action +// and than check that execution is paused inside function +// expected_function_name. +function listener(event, exec_state, event_data, data) { + try { + if (event == Debug.DebugEvent.Break) { + if (state == 1) { + exec_state.prepareStep(Debug.StepAction.StepOut, 2); + state = 2; + } else if (state == 2) { + assertEquals(expected_function_name, event_data.func().name()); + assertEquals(expected_source_line_text, + event_data.sourceLineText()); + state = 3; + } + } + } catch(e) { + exception = e; + } +}; + +// Add the debug event listener. +Debug.setListener(listener); + +var obj = {key:10}; + +function replacer(key, value) { + if (key == 'key') { + debugger; + } + return value; +} + +// Test step into function call from a function without local variables. +function testStepOutToBuiltIn() { + expected_function_name = 'testStepOutToBuiltIn'; + expected_source_line_text = '} // expected line'; + JSON.stringify(obj, replacer); +} // expected line + +state = 1; +testStepOutToBuiltIn(); +assertNull(exception); +assertEquals(3, state); + +// Get rid of the debug event listener. +Debug.setListener(null); diff --git a/deps/v8/test/mjsunit/global-deleted-property-keyed.js b/deps/v8/test/mjsunit/global-deleted-property-keyed.js index e249fd32b8..1a1d3cb99b 100644 --- a/deps/v8/test/mjsunit/global-deleted-property-keyed.js +++ b/deps/v8/test/mjsunit/global-deleted-property-keyed.js @@ -1,38 +1,38 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Flags: --expose-natives_as natives -// Test keyed access to deleted property in a global object without access checks. -// Regression test that exposed the_hole value from Runtime_KeyedGetPoperty. - -var name = "fisk"; -natives[name] = name; -function foo() { natives[name] + 12; } -for(var i = 0; i < 3; i++) foo(); -delete natives[name]; -for(var i = 0; i < 3; i++) foo(); +// Copyright 2009 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +// Flags: --expose-natives_as natives +// Test keyed access to deleted property in a global object without access checks. +// Regression test that exposed the_hole value from Runtime_KeyedGetPoperty. + +var name = "fisk"; +natives[name] = name; +function foo() { natives[name] + 12; } +for(var i = 0; i < 3; i++) foo(); +delete natives[name]; +for(var i = 0; i < 3; i++) foo(); diff --git a/deps/v8/test/mjsunit/object-literal.js b/deps/v8/test/mjsunit/object-literal.js index 0ad1968e16..397d670644 100644 --- a/deps/v8/test/mjsunit/object-literal.js +++ b/deps/v8/test/mjsunit/object-literal.js @@ -146,7 +146,7 @@ function testKeywordProperty(keyword) { eval("var " + keyword + " = 42;"); assertUnreachable("Not a keyword: " + keyword); } catch (e) { } - + // Simple property, read and write. var x = eval("({" + keyword + ": 42})"); assertEquals(42, x[keyword]); @@ -154,7 +154,7 @@ function testKeywordProperty(keyword) { eval("x." + keyword + " = 37"); assertEquals(37, x[keyword]); assertEquals(37, eval("x." + keyword)); - + // Getter/setter property, read and write. var y = eval("({value : 42, get " + keyword + "(){return this.value}," + " set " + keyword + "(v) { this.value = v; }})"); @@ -163,12 +163,12 @@ function testKeywordProperty(keyword) { eval("y." + keyword + " = 37"); assertEquals(37, y[keyword]); assertEquals(37, eval("y." + keyword)); - + // Quoted keyword works is read back by unquoted as well. var z = eval("({\"" + keyword + "\": 42})"); assertEquals(42, z[keyword]); assertEquals(42, eval("z." + keyword)); - + // Function property, called. var was_called; function test_call() { this.was_called = true; was_called = true; } @@ -187,26 +187,4 @@ function testKeywordProperty(keyword) { for (var i = 0; i < keywords.length; i++) { testKeywordProperty(keywords[i]); -} - -// Test getter and setter properties with string/number literal names. - -var obj = {get 42() { return 42; }, - get 3.14() { return "PI"; }, - get "PI"() { return 3.14; }, - readback: 0, - set 37(v) { this.readback = v; }, - set 1.44(v) { this.readback = v; }, - set "Poo"(v) { this.readback = v; }} - -assertEquals(42, obj[42]); -assertEquals("PI", obj[3.14]); -assertEquals(3.14, obj["PI"]); -obj[37] = "t1"; -assertEquals("t1", obj.readback); -obj[1.44] = "t2"; -assertEquals("t2", obj.readback); -obj["Poo"] = "t3"; -assertEquals("t3", obj.readback); - - +} \ No newline at end of file diff --git a/deps/v8/test/mjsunit/regexp-capture.js b/deps/v8/test/mjsunit/regexp-capture.js index d4433d8cd2..dc24491d9c 100755 --- a/deps/v8/test/mjsunit/regexp-capture.js +++ b/deps/v8/test/mjsunit/regexp-capture.js @@ -1,57 +1,57 @@ -// Copyright 2009 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Tests from http://blog.stevenlevithan.com/archives/npcg-javascript - -assertEquals(true, /(x)?\1y/.test("y")); -assertEquals(["y", undefined], /(x)?\1y/.exec("y")); -assertEquals(["y", undefined], /(x)?y/.exec("y")); -assertEquals(["y", undefined], "y".match(/(x)?\1y/)); -assertEquals(["y", undefined], "y".match(/(x)?y/)); -assertEquals(["y"], "y".match(/(x)?\1y/g)); -assertEquals(["", undefined, ""], "y".split(/(x)?\1y/)); -assertEquals(["", undefined, ""], "y".split(/(x)?y/)); -assertEquals(0, "y".search(/(x)?\1y/)); -assertEquals("z", "y".replace(/(x)?\1y/, "z")); -assertEquals("", "y".replace(/(x)?y/, "$1")); -assertEquals("undefined", "y".replace(/(x)?\1y/, - function($0, $1){ - return String($1); - })); -assertEquals("undefined", "y".replace(/(x)?y/, - function($0, $1){ - return String($1); - })); -assertEquals("undefined", "y".replace(/(x)?y/, - function($0, $1){ - return $1; - })); - -// See https://bugzilla.mozilla.org/show_bug.cgi?id=476146 -assertEquals("bbc,b", /^(b+|a){1,2}?bc/.exec("bbc")); -assertEquals("bbaa,a,,a", /((\3|b)\2(a)){2,}/.exec("bbaababbabaaaaabbaaaabba")); - +// Copyright 2009 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Tests from http://blog.stevenlevithan.com/archives/npcg-javascript + +assertEquals(true, /(x)?\1y/.test("y")); +assertEquals(["y", undefined], /(x)?\1y/.exec("y")); +assertEquals(["y", undefined], /(x)?y/.exec("y")); +assertEquals(["y", undefined], "y".match(/(x)?\1y/)); +assertEquals(["y", undefined], "y".match(/(x)?y/)); +assertEquals(["y"], "y".match(/(x)?\1y/g)); +assertEquals(["", undefined, ""], "y".split(/(x)?\1y/)); +assertEquals(["", undefined, ""], "y".split(/(x)?y/)); +assertEquals(0, "y".search(/(x)?\1y/)); +assertEquals("z", "y".replace(/(x)?\1y/, "z")); +assertEquals("", "y".replace(/(x)?y/, "$1")); +assertEquals("undefined", "y".replace(/(x)?\1y/, + function($0, $1){ + return String($1); + })); +assertEquals("undefined", "y".replace(/(x)?y/, + function($0, $1){ + return String($1); + })); +assertEquals("undefined", "y".replace(/(x)?y/, + function($0, $1){ + return $1; + })); + +// See https://bugzilla.mozilla.org/show_bug.cgi?id=476146 +assertEquals("bbc,b", /^(b+|a){1,2}?bc/.exec("bbc")); +assertEquals("bbaa,a,,a", /((\3|b)\2(a)){2,}/.exec("bbaababbabaaaaabbaaaabba")); + diff --git a/deps/v8/test/mjsunit/regress/bitops-register-alias.js b/deps/v8/test/mjsunit/regress/bitops-register-alias.js new file mode 100644 index 0000000000..389255df05 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/bitops-register-alias.js @@ -0,0 +1,31 @@ +// Copyright 2010 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Test that the code generator can cope with left and right being in +// the same register for bitops. +function f() { for (var i = 10; i < 100; i++) { return i | i; } } +assertEquals(10, f()); diff --git a/deps/v8/test/mjsunit/regress/regress-246.js b/deps/v8/test/mjsunit/regress/regress-246.js index 4324b54041..09b746b7aa 100644 --- a/deps/v8/test/mjsunit/regress/regress-246.js +++ b/deps/v8/test/mjsunit/regress/regress-246.js @@ -1,31 +1,31 @@ -// Copyright 2008 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// See: http://code.google.com/p/v8/issues/detail?id=246 - -assertTrue(/(?:text)/.test("text")); +// Copyright 2008 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// See: http://code.google.com/p/v8/issues/detail?id=246 + +assertTrue(/(?:text)/.test("text")); assertEquals(["text"], /(?:text)/.exec("text")); \ No newline at end of file diff --git a/deps/v8/test/sputnik/sputnik.status b/deps/v8/test/sputnik/sputnik.status index 13108c0fb3..bc8c1e3992 100644 --- a/deps/v8/test/sputnik/sputnik.status +++ b/deps/v8/test/sputnik/sputnik.status @@ -183,8 +183,8 @@ S8.5_A2.1: PASS, FAIL if $system == linux, FAIL if $system == macos # These tests check for ES3 semantics, and differ from ES5. # When we follow ES5 semantics, it's ok to fail the test. -# Allow keywords as names of properties in object initialisers and -# in dot-notation property access. +# Allow keywords as names of properties in object initialisers and +# in dot-notation property access. S11.1.5_A4.1: FAIL_OK S11.1.5_A4.2: FAIL_OK -- cgit v1.2.1