v8/test/cctest/test-symbols.cc
jochen@chromium.org 56a486c322 Use full include paths everywhere
- this avoids using relative include paths which are forbidden by the style guide
- makes the code more readable since it's clear which header is meant
- allows for starting to use checkdeps

BUG=none
R=jkummerow@chromium.org, danno@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/304153016

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-06-03 08:12:43 +00:00

51 lines
1.3 KiB
C++

// 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 "src/v8.h"
#include "src/objects.h"
#include "test/cctest/cctest.h"
using namespace v8::internal;
TEST(Create) {
CcTest::InitializeVM();
Isolate* isolate = CcTest::i_isolate();
HandleScope scope(isolate);
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]->ObjectVerify();
#endif
}
CcTest::heap()->CollectGarbage(i::NEW_SPACE);
CcTest::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]));
}
}
}