OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 | 348 |
349 | 349 |
350 TEST(ExternalShortStringAdd) { | 350 TEST(ExternalShortStringAdd) { |
351 ZoneScope zone(Isolate::Current(), DELETE_ON_EXIT); | 351 ZoneScope zone(Isolate::Current(), DELETE_ON_EXIT); |
352 | 352 |
353 InitializeVM(); | 353 InitializeVM(); |
354 v8::HandleScope handle_scope; | 354 v8::HandleScope handle_scope; |
355 | 355 |
356 // Make sure we cover all always-flat lengths and at least one above. | 356 // Make sure we cover all always-flat lengths and at least one above. |
357 static const int kMaxLength = 20; | 357 static const int kMaxLength = 20; |
358 CHECK_GT(kMaxLength, i::String::kMinNonFlatLength); | 358 CHECK_GT(kMaxLength, i::ConsString::kMinLength); |
359 | 359 |
360 // Allocate two JavaScript arrays for holding short strings. | 360 // Allocate two JavaScript arrays for holding short strings. |
361 v8::Handle<v8::Array> ascii_external_strings = | 361 v8::Handle<v8::Array> ascii_external_strings = |
362 v8::Array::New(kMaxLength + 1); | 362 v8::Array::New(kMaxLength + 1); |
363 v8::Handle<v8::Array> non_ascii_external_strings = | 363 v8::Handle<v8::Array> non_ascii_external_strings = |
364 v8::Array::New(kMaxLength + 1); | 364 v8::Array::New(kMaxLength + 1); |
365 | 365 |
366 // Generate short ascii and non-ascii external strings. | 366 // Generate short ascii and non-ascii external strings. |
367 for (int i = 0; i <= kMaxLength; i++) { | 367 for (int i = 0; i <= kMaxLength; i++) { |
368 char* ascii = ZONE->NewArray<char>(i + 1); | 368 char* ascii = ZONE->NewArray<char>(i + 1); |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
580 CHECK(SlicedString::cast(*string)->parent()->IsSeqString()); | 580 CHECK(SlicedString::cast(*string)->parent()->IsSeqString()); |
581 CHECK_EQ("bcdefghijklmnopqrstuvwxy", *(string->ToCString())); | 581 CHECK_EQ("bcdefghijklmnopqrstuvwxy", *(string->ToCString())); |
582 | 582 |
583 result = CompileRun(slice_from_slice); | 583 result = CompileRun(slice_from_slice); |
584 CHECK(result->IsString()); | 584 CHECK(result->IsString()); |
585 string = v8::Utils::OpenHandle(v8::String::Cast(*result)); | 585 string = v8::Utils::OpenHandle(v8::String::Cast(*result)); |
586 CHECK(string->IsSlicedString()); | 586 CHECK(string->IsSlicedString()); |
587 CHECK(SlicedString::cast(*string)->parent()->IsSeqString()); | 587 CHECK(SlicedString::cast(*string)->parent()->IsSeqString()); |
588 CHECK_EQ("cdefghijklmnopqrstuvwx", *(string->ToCString())); | 588 CHECK_EQ("cdefghijklmnopqrstuvwx", *(string->ToCString())); |
589 } | 589 } |
OLD | NEW |