The data contained in this repository can be downloaded to your computer using one of several clients.
Please see the documentation of your version control software client for more information.

Please select the desired protocol below to get the URL.

This URL has Read-Only access.

Statistics
| Branch: | Revision:

main_repo / deps / v8 / test / cctest / test-symbols.cc @ f230a1cf

History | View | Annotate | Download (1.3 KB)

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
}