Lines Matching defs:string
104 class Resource: public v8::String::ExternalStringResource {
117 class OneByteResource : public v8::String::ExternalOneByteStringResource {
131 static void InitializeBuildingBlocks(Handle<String>* building_blocks,
147 // Must truncate something for a slice string. Loop until
195 *v8::String::NewExternalTwoByte(CcTest::isolate(), resource)
209 *v8::String::NewExternalOneByte(CcTest::isolate(), resource)
268 inline Handle<String> block(int offset);
269 inline Handle<String> block(uint32_t offset);
277 Handle<String> building_blocks_[kNumberOfBuildingBlocks];
278 String* empty_string_;
297 Handle<String> ConsStringGenerationData::block(uint32_t offset) {
302 Handle<String> ConsStringGenerationData::block(int offset) {
349 void AccumulateStats(Handle<String> cons_string, ConsStringStats* stats) {
354 // This string got flattened by gc.
362 String* string;
364 while (NULL != (string = iter.Next(&offset))) {
368 stats->chars_ += string->length();
373 void VerifyConsString(Handle<String> root, ConsStringGenerationData* data) {
394 static Handle<String> ConstructRandomString(ConsStringGenerationData* data,
404 // Flat cons string terminate by definition.
413 // Generate left string.
414 Handle<String> left;
422 // Generate right string.
423 Handle<String> right;
442 // Build the cons string.
443 Handle<String> root = factory->NewConsString(left, right).ToHandleChecked();
445 // Special work needed for flat string.
448 String::Flatten(root);
455 static Handle<String> ConstructLeft(
459 Handle<String> answer = factory->NewStringFromStaticChars("");
462 Handle<String> block = data->block(i);
463 Handle<String> next =
474 static Handle<String> ConstructRight(
478 Handle<String> answer = factory->NewStringFromStaticChars("");
481 Handle<String> block = data->block(i);
482 Handle<String> next =
493 static Handle<String> ConstructBalancedHelper(
509 Handle<String> part1 =
511 Handle<String> part2 =
519 static Handle<String> ConstructBalanced(
521 Handle<String> string
524 return string;
528 static void Traverse(Handle<String> s1, Handle<String> s2) {
545 static void TraverseFirst(Handle<String> s1, Handle<String> s2, int chars) {
565 Handle<String> flat = ConstructBalanced(&data);
566 String::Flatten(flat);
567 Handle<String> left_asymmetric = ConstructLeft(&data, DEEP_DEPTH);
568 Handle<String> right_asymmetric = ConstructRight(&data, DEEP_DEPTH);
569 Handle<String> symmetric = ConstructBalanced(&data);
577 Handle<String> left_deep_asymmetric =
579 Handle<String> right_deep_asymmetric =
586 String::Flatten(left_asymmetric);
590 String::Flatten(right_asymmetric);
594 String::Flatten(symmetric);
598 String::Flatten(left_deep_asymmetric);
604 String* flat_string, String* cons_string) {
605 // Do not want to test ConString traversal on flat string.
610 // Iterate start search in multiple places in the string.
654 // Build flat version of cons string.
655 Handle<String> flat_string = build(i, &data);
658 // Flatten string.
659 String::Flatten(flat_string);
660 // Build unflattened version of cons string to test.
661 Handle<String> cons_string = build(i, &data);
666 // Full verify of cons string.
670 String* flat_string_ptr =
682 static Handle<String> BuildEdgeCaseConsString(
711 Handle<String> string =
714 String::Flatten(string);
715 return string;
726 Handle<String> left =
729 String::Flatten(left);
743 Handle<String> left =
746 String::Flatten(left);
747 Handle<String> right =
750 String::Flatten(right);
755 return Handle<String>();
833 static Handle<String> BuildRandomConsString(
858 Handle<String> string =
861 Handle<String> foo_string = factory->NewStringFromStaticChars("foo");
863 string = factory->NewConsString(string, foo_string).ToHandleChecked();
865 Handle<String> flat_string =
866 factory->NewConsString(string, foo_string).ToHandleChecked();
867 String::Flatten(flat_string);
870 TraverseFirst(flat_string, string, kDeepOneByteDepth);
880 // A simple one-byte string
882 int len = v8::String::NewFromUtf8(CcTest::isolate(), one_byte_string,
888 // A mixed one-byte and two-byte string
901 v8::Local<v8::String> mixed =
902 v8::String::NewFromTwoByte(CcTest::isolate(), mixed_string,
906 // Try encoding the string with all capacities
948 // string data.
950 v8::Local<v8::String> one_byte_external_string =
951 v8::String::NewExternalOneByte(CcTest::isolate(), one_byte_resource)
963 // string data.
965 v8::Local<v8::String> non_one_byte_external_string =
966 v8::String::NewExternalTwoByte(CcTest::isolate(), resource)
1036 // Create a sliced string from a one-byte string. The latter is turned
1037 // into a two-byte external string. Check that JSON.stringify works.
1039 v8::Local<v8::String> underlying =
1045 v8::Local<v8::String> slice =
1065 *v8::String::Utf8Value(CompileRun("JSON.stringify(slice)"))));
1107 v8::String::NewFromUtf8(CcTest::isolate(), line,
1130 Handle<String> string =
1132 Handle<String> parent =
1133 factory->NewConsString(string, string).ToHandleChecked();
1136 Handle<String> slice = factory->NewSubString(parent, 1, 25);
1137 // After slicing, the original string becomes a flat cons.
1149 class OneByteVectorResource : public v8::String::ExternalOneByteStringResource {
1168 Handle<String> string =
1170 CHECK(string->IsExternalString());
1171 Handle<String> slice = factory->NewSubString(string, 1, 25);
1173 CHECK(string->IsExternalString());
1174 CHECK_EQ(SlicedString::cast(*slice)->parent(), *string);
1181 // This tests whether a slice that contains the entire parent string
1182 // actually creates a new string (it should not).
1188 Handle<String> string;
1197 string = v8::Utils::OpenHandle(v8::String::Cast(*result));
1198 CHECK(!string->IsSlicedString());
1200 string = factory->NewSubString(string, 0, 26);
1201 CHECK(!string->IsSlicedString());
1204 string = v8::Utils::OpenHandle(v8::String::Cast(*result));
1205 CHECK(string->IsSlicedString());
1206 CHECK_EQ(0, strcmp("bcdefghijklmnopqrstuvwxy", string->ToCString().get()));
1211 // This tests whether a slice that contains the entire parent string
1212 // actually creates a new string (it should not).
1217 Handle<String> string;
1225 string = v8::Utils::OpenHandle(v8::String::Cast(*result));
1226 CHECK(string->IsSlicedString());
1227 CHECK(SlicedString::cast(*string)->parent()->IsSeqString());
1228 CHECK_EQ(0, strcmp("bcdefghijklmnopqrstuvwxy", string->ToCString().get()));
1232 string = v8::Utils::OpenHandle(v8::String::Cast(*result));
1233 CHECK(string->IsSlicedString());
1234 CHECK(SlicedString::cast(*string)->parent()->IsSeqString());
1235 CHECK_EQ(0, strcmp("cdefghijklmnopqrstuvwx", string->ToCString().get()));
1249 // String s is made of 2^17 = 131072 'c' characters and a is an array
1250 // starting with 'bad', followed by 2^14 times the string s. That means the
1284 Handle<String> string;
1294 // String arguments.
1298 string = v8::Utils::OpenHandle(v8::String::Cast(*result));
1299 CHECK_EQ(0, strcmp("cde", string->ToCString().get()));
1309 // String arguments.
1313 string = v8::Utils::OpenHandle(v8::String::Cast(*result));
1314 CHECK_EQ(0, strcmp("cdefghijklmnopq", string->ToCString().get()));
1317 // would have been valid for the underlying string.
1365 "var subject = 'one_byte~only~string~'; "
1369 Handle<String> string = v8::Utils::OpenHandle(v8::String::Cast(*result));
1370 CHECK(string->IsSeqTwoByteString());
1372 v8::Local<v8::String> expected = v8_str("one_byte\x80only\x80string\x80");
1378 CHECK(String::IsAscii(static_cast<char*>(NULL), 0));
1379 CHECK(String::IsOneByte(static_cast<uc16*>(NULL), 0));
1439 class DummyResource: public v8::String::ExternalStringResource {
1446 class DummyOneByteResource: public v8::String::ExternalOneByteStringResource {
1478 STATIC_ASSERT(String::kMaxLength < kMaxInt); \
1479 static const int invalid = String::kMaxLength + 1; \
1502 Handle<String> arg0 = isolate->factory()->NewStringFromAsciiChecked("arg0");
1503 Handle<String> arg1 = isolate->factory()->NewStringFromAsciiChecked("arg1");
1504 Handle<String> arg2 = isolate->factory()->NewStringFromAsciiChecked("arg2");
1505 Handle<String> result =
1508 Handle<String> expected = isolate->factory()->NewStringFromAsciiChecked(
1510 CHECK(String::Equals(result, expected));
1520 "String.fromCharCode(32, 32, 32, 32, 32, "
1528 "String.fromCharCode(432, 432, 432, 432, 432, "