1 // Copyright 2013 the V8 project authors. All rights reserved. 2 3 // Check that we can traverse very deep stacks of ConsStrings using 4 // StringCharacterStram. Check that Get(int) works on very deep stacks 5 // of ConsStrings. These operations may not be very fast, but they 6 // should be possible without getting errors due to too deep recursion. 7 8 #include "v8.h" 9 10 #include "cctest.h" 11 #include "objects.h" 12 13 using namespace v8::internal; 14 15 16 TEST(Create) { 17 CcTest::InitializeVM(); 18 Isolate* isolate = CcTest::i_isolate(); 19 HandleScope scope(isolate); 20 21 const int kNumSymbols = 30; 22 Handle<Symbol> symbols[kNumSymbols]; 23 24 for (int i = 0; i < kNumSymbols; ++i) { 25 symbols[i] = isolate->factory()->NewSymbol(); 26 CHECK(symbols[i]->IsName()); 27 CHECK(symbols[i]->IsSymbol()); 28 CHECK(symbols[i]->HasHashCode()); 29 CHECK_GT(symbols[i]->Hash(), 0); 30 symbols[i]->ShortPrint(); 31 PrintF("\n"); 32 #if OBJECT_PRINT 33 symbols[i]->Print(); 34 #endif 35 #if VERIFY_HEAP 36 symbols[i]->Verify(); 37 #endif 38 } 39 40 CcTest::heap()->PerformScavenge(); 41 CcTest::heap()->CollectAllGarbage(Heap::kNoGCFlags); 42 43 // All symbols should be distinct. 44 for (int i = 0; i < kNumSymbols; ++i) { 45 CHECK(symbols[i]->SameValue(*symbols[i])); 46 for (int j = i + 1; j < kNumSymbols; ++j) { 47 CHECK(!symbols[i]->SameValue(*symbols[j])); 48 } 49 } 50 } 51