58d0682f8d
We only seem to force scavenge in our cctest test suite, so this is expected to fix some flakiness in our tests, but it will not improve stability of v8 itself. R=hpayer@chromium.org BUG= Review URL: https://codereview.chromium.org/167423004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19460 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
51 lines
1.3 KiB
C++
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 "v8.h"
|
|
|
|
#include "cctest.h"
|
|
#include "objects.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]->Verify();
|
|
#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]));
|
|
}
|
|
}
|
|
}
|