Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(701)

Unified Diff: test/cctest/test-symbols.cc

Issue 12223071: ES6 symbols: Introduce Symbol class, along with abstract Name class (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed comments Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/cctest/cctest.gyp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-symbols.cc
diff --git a/test/cctest/test-symbols.cc b/test/cctest/test-symbols.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f0a91b4e6bb3c7aeeb7288bf604ff4eede95f04f
--- /dev/null
+++ b/test/cctest/test-symbols.cc
@@ -0,0 +1,63 @@
+// Copyright 2013 the V8 project authors. All rights reserved.
+
+// Check that we can traverse very deep stacks of ConsStrings using
+// StringCharacterStram. Check that Get(int) works on very deep stacks
+// of ConsStrings. These operations may not be very fast, but they
+// should be possible without getting errors due to too deep recursion.
+
+#include "v8.h"
+
+#include "cctest.h"
+#include "objects.h"
+
+using namespace v8::internal;
+
+static v8::Persistent<v8::Context> env;
+
+static void InitializeVM() {
+ if (env.IsEmpty()) {
+ v8::HandleScope scope;
+ const char* extensions[] = { "v8/print" };
+ v8::ExtensionConfiguration config(1, extensions);
+ env = v8::Context::New(&config);
+ }
+ v8::HandleScope scope;
+ env->Enter();
+}
+
+
+TEST(Create) {
+ InitializeVM();
+ HandleScope scope;
+ Isolate* isolate = Isolate::Current();
+
+ const int kNumSymbols = 30;
+ Handle<Symbol> symbols[kNumSymbols];
+
+ for (int i = 0; i < kNumSymbols; ++i) {
+ symbols[i] = isolate->factory()->NewSymbol();
+ CHECK(symbols[i]->IsName());
+ CHECK(symbols[i]->IsSymbol());
+ CHECK(symbols[i]->HasHashCode());
+ CHECK_GT(symbols[i]->Hash(), 0);
+ symbols[i]->ShortPrint();
+ PrintF("\n");
+#if OBJECT_PRINT
+ symbols[i]->Print();
+#endif
+#if VERIFY_HEAP
+ symbols[i]->Verify();
+#endif
+ }
+
+ HEAP->PerformScavenge();
+ HEAP->CollectAllGarbage(Heap::kNoGCFlags);
+
+ // All symbols should be distinct.
+ for (int i = 0; i < kNumSymbols; ++i) {
+ CHECK(symbols[i]->SameValue(*symbols[i]));
+ for (int j = i + 1; j < kNumSymbols; ++j) {
+ CHECK(!symbols[i]->SameValue(*symbols[j]));
+ }
+ }
+}
« no previous file with comments | « test/cctest/cctest.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698