| Index: test/cctest/test-strings.cc
|
| diff --git a/test/cctest/test-strings.cc b/test/cctest/test-strings.cc
|
| index 2889172f5a625e9ccfea54cf72a113e4d2dc6633..c45303ebccd89aa9c51a8b35fddf60e9ef4ef591 100644
|
| --- a/test/cctest/test-strings.cc
|
| +++ b/test/cctest/test-strings.cc
|
| @@ -136,7 +136,9 @@ static void InitializeBuildingBlocks(Handle<String>* building_blocks,
|
| RandomNumberGenerator* rng) {
|
| // A list of pointers that we don't have any interest in cleaning up.
|
| // If they are reachable from a root then leak detection won't complain.
|
| - Zone* zone = Isolate::Current()->runtime_zone();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
| + Zone* zone = isolate->runtime_zone();
|
| for (int i = 0; i < bb_length; i++) {
|
| int len = rng->next(16);
|
| int slice_head_chars = 0;
|
| @@ -168,7 +170,7 @@ static void InitializeBuildingBlocks(Handle<String>* building_blocks,
|
| buf[j] = rng->next(0x10000);
|
| }
|
| building_blocks[i] =
|
| - FACTORY->NewStringFromTwoByte(Vector<const uc16>(buf, len));
|
| + factory->NewStringFromTwoByte(Vector<const uc16>(buf, len));
|
| for (int j = 0; j < len; j++) {
|
| CHECK_EQ(buf[j], building_blocks[i]->Get(j));
|
| }
|
| @@ -180,7 +182,7 @@ static void InitializeBuildingBlocks(Handle<String>* building_blocks,
|
| buf[j] = rng->next(0x80);
|
| }
|
| building_blocks[i] =
|
| - FACTORY->NewStringFromAscii(Vector<const char>(buf, len));
|
| + factory->NewStringFromAscii(Vector<const char>(buf, len));
|
| for (int j = 0; j < len; j++) {
|
| CHECK_EQ(buf[j], building_blocks[i]->Get(j));
|
| }
|
| @@ -192,7 +194,7 @@ static void InitializeBuildingBlocks(Handle<String>* building_blocks,
|
| buf[j] = rng->next(0x10000);
|
| }
|
| Resource* resource = new(zone) Resource(Vector<const uc16>(buf, len));
|
| - building_blocks[i] = FACTORY->NewExternalStringFromTwoByte(resource);
|
| + building_blocks[i] = factory->NewExternalStringFromTwoByte(resource);
|
| for (int j = 0; j < len; j++) {
|
| CHECK_EQ(buf[j], building_blocks[i]->Get(j));
|
| }
|
| @@ -205,7 +207,7 @@ static void InitializeBuildingBlocks(Handle<String>* building_blocks,
|
| }
|
| AsciiResource* resource =
|
| new(zone) AsciiResource(Vector<const char>(buf, len));
|
| - building_blocks[i] = FACTORY->NewExternalStringFromAscii(resource);
|
| + building_blocks[i] = factory->NewExternalStringFromAscii(resource);
|
| for (int j = 0; j < len; j++) {
|
| CHECK_EQ(buf[j], building_blocks[i]->Get(j));
|
| }
|
| @@ -213,7 +215,7 @@ static void InitializeBuildingBlocks(Handle<String>* building_blocks,
|
| }
|
| }
|
| for (int j = slice_depth; j > 0; j--) {
|
| - building_blocks[i] = FACTORY->NewSubString(
|
| + building_blocks[i] = factory->NewSubString(
|
| building_blocks[i],
|
| slice_head_chars,
|
| building_blocks[i]->length() - slice_tail_chars);
|
| @@ -400,6 +402,7 @@ void VerifyConsString(Handle<String> root, ConsStringGenerationData* data) {
|
|
|
| static Handle<String> ConstructRandomString(ConsStringGenerationData* data,
|
| unsigned max_recursion) {
|
| + Factory* factory = Isolate::Current()->factory();
|
| // Compute termination characteristics.
|
| bool terminate = false;
|
| bool flat = data->rng_.next(data->empty_leaf_threshold_);
|
| @@ -446,7 +449,7 @@ static Handle<String> ConstructRandomString(ConsStringGenerationData* data,
|
| left = ConstructRandomString(data, max_recursion - 1);
|
| }
|
| // Build the cons string.
|
| - Handle<String> root = FACTORY->NewConsString(left, right);
|
| + Handle<String> root = factory->NewConsString(left, right);
|
| CHECK(root->IsConsString() && !root->IsFlat());
|
| // Special work needed for flat string.
|
| if (flat) {
|
| @@ -461,11 +464,12 @@ static Handle<String> ConstructRandomString(ConsStringGenerationData* data,
|
| static Handle<String> ConstructLeft(
|
| ConsStringGenerationData* data,
|
| int depth) {
|
| - Handle<String> answer = FACTORY->NewStringFromAscii(CStrVector(""));
|
| + Factory* factory = Isolate::Current()->factory();
|
| + Handle<String> answer = factory->NewStringFromAscii(CStrVector(""));
|
| data->stats_.leaves_++;
|
| for (int i = 0; i < depth; i++) {
|
| Handle<String> block = data->block(i);
|
| - Handle<String> next = FACTORY->NewConsString(answer, block);
|
| + Handle<String> next = factory->NewConsString(answer, block);
|
| if (next->IsConsString()) data->stats_.leaves_++;
|
| data->stats_.chars_ += block->length();
|
| answer = next;
|
| @@ -478,11 +482,12 @@ static Handle<String> ConstructLeft(
|
| static Handle<String> ConstructRight(
|
| ConsStringGenerationData* data,
|
| int depth) {
|
| - Handle<String> answer = FACTORY->NewStringFromAscii(CStrVector(""));
|
| + Factory* factory = Isolate::Current()->factory();
|
| + Handle<String> answer = factory->NewStringFromAscii(CStrVector(""));
|
| data->stats_.leaves_++;
|
| for (int i = depth - 1; i >= 0; i--) {
|
| Handle<String> block = data->block(i);
|
| - Handle<String> next = FACTORY->NewConsString(block, answer);
|
| + Handle<String> next = factory->NewConsString(block, answer);
|
| if (next->IsConsString()) data->stats_.leaves_++;
|
| data->stats_.chars_ += block->length();
|
| answer = next;
|
| @@ -496,6 +501,7 @@ static Handle<String> ConstructBalancedHelper(
|
| ConsStringGenerationData* data,
|
| int from,
|
| int to) {
|
| + Factory* factory = Isolate::Current()->factory();
|
| CHECK(to > from);
|
| if (to - from == 1) {
|
| data->stats_.chars_ += data->block(from)->length();
|
| @@ -504,7 +510,7 @@ static Handle<String> ConstructBalancedHelper(
|
| if (to - from == 2) {
|
| data->stats_.chars_ += data->block(from)->length();
|
| data->stats_.chars_ += data->block(from+1)->length();
|
| - return FACTORY->NewConsString(data->block(from), data->block(from+1));
|
| + return factory->NewConsString(data->block(from), data->block(from+1));
|
| }
|
| Handle<String> part1 =
|
| ConstructBalancedHelper(data, from, from + ((to - from) / 2));
|
| @@ -512,7 +518,7 @@ static Handle<String> ConstructBalancedHelper(
|
| ConstructBalancedHelper(data, from + ((to - from) / 2), to);
|
| if (part1->IsConsString()) data->stats_.left_traversals_++;
|
| if (part2->IsConsString()) data->stats_.right_traversals_++;
|
| - return FACTORY->NewConsString(part1, part2);
|
| + return factory->NewConsString(part1, part2);
|
| }
|
|
|
|
|
| @@ -690,6 +696,7 @@ static const int kCharacterStreamNonRandomCases = 8;
|
|
|
| static Handle<String> BuildEdgeCaseConsString(
|
| int test_case, ConsStringGenerationData* data) {
|
| + Factory* factory = Isolate::Current()->factory();
|
| data->Reset();
|
| switch (test_case) {
|
| case 0:
|
| @@ -707,7 +714,7 @@ static Handle<String> BuildEdgeCaseConsString(
|
| data->stats_.chars_ += data->block(0)->length();
|
| data->stats_.chars_ += data->block(1)->length();
|
| data->stats_.leaves_ += 2;
|
| - return FACTORY->NewConsString(data->block(0), data->block(1));
|
| + return factory->NewConsString(data->block(0), data->block(1));
|
| case 6:
|
| // Simple flattened tree.
|
| data->stats_.chars_ += data->block(0)->length();
|
| @@ -716,7 +723,7 @@ static Handle<String> BuildEdgeCaseConsString(
|
| data->stats_.empty_leaves_ += 1;
|
| {
|
| Handle<String> string =
|
| - FACTORY->NewConsString(data->block(0), data->block(1));
|
| + factory->NewConsString(data->block(0), data->block(1));
|
| FlattenString(string);
|
| return string;
|
| }
|
| @@ -730,9 +737,9 @@ static Handle<String> BuildEdgeCaseConsString(
|
| data->stats_.left_traversals_ += 1;
|
| {
|
| Handle<String> left =
|
| - FACTORY->NewConsString(data->block(0), data->block(1));
|
| + factory->NewConsString(data->block(0), data->block(1));
|
| FlattenString(left);
|
| - return FACTORY->NewConsString(left, data->block(2));
|
| + return factory->NewConsString(left, data->block(2));
|
| }
|
| case 8:
|
| // Left node and right node flattened.
|
| @@ -746,12 +753,12 @@ static Handle<String> BuildEdgeCaseConsString(
|
| data->stats_.right_traversals_ += 1;
|
| {
|
| Handle<String> left =
|
| - FACTORY->NewConsString(data->block(0), data->block(1));
|
| + factory->NewConsString(data->block(0), data->block(1));
|
| FlattenString(left);
|
| Handle<String> right =
|
| - FACTORY->NewConsString(data->block(2), data->block(2));
|
| + factory->NewConsString(data->block(2), data->block(2));
|
| FlattenString(right);
|
| - return FACTORY->NewConsString(left, right);
|
| + return factory->NewConsString(left, right);
|
| }
|
| }
|
| UNREACHABLE();
|
| @@ -852,6 +859,7 @@ static const int DEEP_ASCII_DEPTH = 100000;
|
| TEST(DeepAscii) {
|
| printf("TestDeepAscii\n");
|
| CcTest::InitializeVM();
|
| + Factory* factory = Isolate::Current()->factory();
|
| v8::HandleScope scope(CcTest::isolate());
|
|
|
| char* foo = NewArray<char>(DEEP_ASCII_DEPTH);
|
| @@ -859,12 +867,12 @@ TEST(DeepAscii) {
|
| foo[i] = "foo "[i % 4];
|
| }
|
| Handle<String> string =
|
| - FACTORY->NewStringFromAscii(Vector<const char>(foo, DEEP_ASCII_DEPTH));
|
| - Handle<String> foo_string = FACTORY->NewStringFromAscii(CStrVector("foo"));
|
| + factory->NewStringFromAscii(Vector<const char>(foo, DEEP_ASCII_DEPTH));
|
| + Handle<String> foo_string = factory->NewStringFromAscii(CStrVector("foo"));
|
| for (int i = 0; i < DEEP_ASCII_DEPTH; i += 10) {
|
| - string = FACTORY->NewConsString(string, foo_string);
|
| + string = factory->NewConsString(string, foo_string);
|
| }
|
| - Handle<String> flat_string = FACTORY->NewConsString(string, foo_string);
|
| + Handle<String> flat_string = factory->NewConsString(string, foo_string);
|
| FlattenString(flat_string);
|
|
|
| for (int i = 0; i < 500; i++) {
|
| @@ -1059,13 +1067,14 @@ TEST(CachedHashOverflow) {
|
| TEST(SliceFromCons) {
|
| FLAG_string_slices = true;
|
| CcTest::InitializeVM();
|
| + Factory* factory = Isolate::Current()->factory();
|
| v8::HandleScope scope(CcTest::isolate());
|
| Handle<String> string =
|
| - FACTORY->NewStringFromAscii(CStrVector("parentparentparent"));
|
| - Handle<String> parent = FACTORY->NewConsString(string, string);
|
| + factory->NewStringFromAscii(CStrVector("parentparentparent"));
|
| + Handle<String> parent = factory->NewConsString(string, string);
|
| CHECK(parent->IsConsString());
|
| CHECK(!parent->IsFlat());
|
| - Handle<String> slice = FACTORY->NewSubString(parent, 1, 25);
|
| + Handle<String> slice = factory->NewSubString(parent, 1, 25);
|
| // After slicing, the original string becomes a flat cons.
|
| CHECK(parent->IsFlat());
|
| CHECK(slice->IsSlicedString());
|
| @@ -1093,12 +1102,13 @@ class AsciiVectorResource : public v8::String::ExternalAsciiStringResource {
|
| TEST(SliceFromExternal) {
|
| FLAG_string_slices = true;
|
| CcTest::InitializeVM();
|
| + Factory* factory = Isolate::Current()->factory();
|
| v8::HandleScope scope(CcTest::isolate());
|
| AsciiVectorResource resource(
|
| i::Vector<const char>("abcdefghijklmnopqrstuvwxyz", 26));
|
| - Handle<String> string = FACTORY->NewExternalStringFromAscii(&resource);
|
| + Handle<String> string = factory->NewExternalStringFromAscii(&resource);
|
| CHECK(string->IsExternalString());
|
| - Handle<String> slice = FACTORY->NewSubString(string, 1, 25);
|
| + Handle<String> slice = factory->NewSubString(string, 1, 25);
|
| CHECK(slice->IsSlicedString());
|
| CHECK(string->IsExternalString());
|
| CHECK_EQ(SlicedString::cast(*slice)->parent(), *string);
|
| @@ -1112,6 +1122,7 @@ TEST(TrivialSlice) {
|
| // actually creates a new string (it should not).
|
| FLAG_string_slices = true;
|
| CcTest::InitializeVM();
|
| + Factory* factory = Isolate::Current()->factory();
|
| v8::HandleScope scope(CcTest::isolate());
|
| v8::Local<v8::Value> result;
|
| Handle<String> string;
|
| @@ -1126,7 +1137,7 @@ TEST(TrivialSlice) {
|
| string = v8::Utils::OpenHandle(v8::String::Cast(*result));
|
| CHECK(!string->IsSlicedString());
|
|
|
| - string = FACTORY->NewSubString(string, 0, 26);
|
| + string = factory->NewSubString(string, 0, 26);
|
| CHECK(!string->IsSlicedString());
|
| result = CompileRun(crosscheck);
|
| CHECK(result->IsString());
|
|
|