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

Side by Side Diff: test/cctest/test-strings.cc

Issue 206011: Make 'hidden' the default visibility for gcc. Add build option, (Closed)
Patch Set: Created 11 years, 3 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 unified diff | Download patch
« SConstruct ('K') | « test/cctest/test-conversions.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 the V8 project authors. All rights reserved.
2 2
3 // Check that we can traverse very deep stacks of ConsStrings using 3 // Check that we can traverse very deep stacks of ConsStrings using
4 // StringInputBuffer. Check that Get(int) works on very deep stacks 4 // StringInputBuffer. Check that Get(int) works on very deep stacks
5 // of ConsStrings. These operations may not be very fast, but they 5 // of ConsStrings. These operations may not be very fast, but they
6 // should be possible without getting errors due to too deep recursion. 6 // should be possible without getting errors due to too deep recursion.
7 7
8 #include <stdlib.h> 8 #include <stdlib.h>
9 9
10 #include "v8.h" 10 #include "v8.h"
(...skipping 30 matching lines...) Expand all
41 v8::HandleScope scope; 41 v8::HandleScope scope;
42 env->Enter(); 42 env->Enter();
43 } 43 }
44 44
45 45
46 static const int NUMBER_OF_BUILDING_BLOCKS = 128; 46 static const int NUMBER_OF_BUILDING_BLOCKS = 128;
47 static const int DEEP_DEPTH = 8 * 1024; 47 static const int DEEP_DEPTH = 8 * 1024;
48 static const int SUPER_DEEP_DEPTH = 80 * 1024; 48 static const int SUPER_DEEP_DEPTH = 80 * 1024;
49 49
50 50
51 class Resource: public v8::String::ExternalStringResource,
52 public ZoneObject {
53 public:
54 explicit Resource(Vector<const uc16> string): data_(string.start()) {
55 length_ = string.length();
56 }
57 virtual const uint16_t* data() const { return data_; }
58 virtual size_t length() const { return length_; }
59
60 private:
61 const uc16* data_;
62 size_t length_;
63 };
64
65
51 static void InitializeBuildingBlocks( 66 static void InitializeBuildingBlocks(
52 Handle<String> building_blocks[NUMBER_OF_BUILDING_BLOCKS]) { 67 Handle<String> building_blocks[NUMBER_OF_BUILDING_BLOCKS]) {
53 // A list of pointers that we don't have any interest in cleaning up. 68 // A list of pointers that we don't have any interest in cleaning up.
54 // If they are reachable from a root then leak detection won't complain. 69 // If they are reachable from a root then leak detection won't complain.
55 for (int i = 0; i < NUMBER_OF_BUILDING_BLOCKS; i++) { 70 for (int i = 0; i < NUMBER_OF_BUILDING_BLOCKS; i++) {
56 int len = gen() % 16; 71 int len = gen() % 16;
57 if (len > 14) { 72 if (len > 14) {
58 len += 1234; 73 len += 1234;
59 } 74 }
60 switch (gen() % 4) { 75 switch (gen() % 4) {
(...skipping 15 matching lines...) Expand all
76 buf[j] = gen() % 128; 91 buf[j] = gen() % 128;
77 } 92 }
78 building_blocks[i] = 93 building_blocks[i] =
79 Factory::NewStringFromAscii(Vector<const char>(buf, len)); 94 Factory::NewStringFromAscii(Vector<const char>(buf, len));
80 for (int j = 0; j < len; j++) { 95 for (int j = 0; j < len; j++) {
81 CHECK_EQ(buf[j], building_blocks[i]->Get(j)); 96 CHECK_EQ(buf[j], building_blocks[i]->Get(j));
82 } 97 }
83 break; 98 break;
84 } 99 }
85 case 2: { 100 case 2: {
86 class Resource: public v8::String::ExternalStringResource,
87 public ZoneObject {
88 public:
89 explicit Resource(Vector<const uc16> string): data_(string.start()) {
90 length_ = string.length();
91 }
92 virtual const uint16_t* data() const { return data_; }
93 virtual size_t length() const { return length_; }
94
95 private:
96 const uc16* data_;
97 size_t length_;
98 };
99 uc16* buf = Zone::NewArray<uc16>(len); 101 uc16* buf = Zone::NewArray<uc16>(len);
100 for (int j = 0; j < len; j++) { 102 for (int j = 0; j < len; j++) {
101 buf[j] = gen() % 65536; 103 buf[j] = gen() % 65536;
102 } 104 }
103 Resource* resource = new Resource(Vector<const uc16>(buf, len)); 105 Resource* resource = new Resource(Vector<const uc16>(buf, len));
104 building_blocks[i] = Factory::NewExternalStringFromTwoByte(resource); 106 building_blocks[i] = Factory::NewExternalStringFromTwoByte(resource);
105 for (int j = 0; j < len; j++) { 107 for (int j = 0; j < len; j++) {
106 CHECK_EQ(buf[j], building_blocks[i]->Get(j)); 108 CHECK_EQ(buf[j], building_blocks[i]->Get(j));
107 } 109 }
108 break; 110 break;
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 CHECK(!Heap::LookupSymbolIfExists(*key_string, &out)); 509 CHECK(!Heap::LookupSymbolIfExists(*key_string, &out));
508 510
509 // Forcing yet another garbage collection must allow us to finally 511 // Forcing yet another garbage collection must allow us to finally
510 // get rid of the external string. 512 // get rid of the external string.
511 Heap::CollectAllGarbage(false); 513 Heap::CollectAllGarbage(false);
512 CHECK(resource_destructed); 514 CHECK(resource_destructed);
513 515
514 delete[] source; 516 delete[] source;
515 delete[] key; 517 delete[] key;
516 } 518 }
OLDNEW
« SConstruct ('K') | « test/cctest/test-conversions.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698