| Index: test/cctest/test-strings.cc
|
| diff --git a/test/cctest/test-strings.cc b/test/cctest/test-strings.cc
|
| index f4d94723625c15c7bd7f791e40c0745b6a38fde2..4b31e614d519dfdabe13d5008855104eeb1ca74b 100644
|
| --- a/test/cctest/test-strings.cc
|
| +++ b/test/cctest/test-strings.cc
|
| @@ -38,7 +38,6 @@
|
| #include "factory.h"
|
| #include "objects.h"
|
| #include "cctest.h"
|
| -#include "zone-inl.h"
|
|
|
| // Adapted from http://en.wikipedia.org/wiki/Multiply-with-carry
|
| class MyRandomNumberGenerator {
|
| @@ -100,12 +99,10 @@ static const int DEEP_DEPTH = 8 * 1024;
|
| static const int SUPER_DEEP_DEPTH = 80 * 1024;
|
|
|
|
|
| -class Resource: public v8::String::ExternalStringResource,
|
| - public ZoneObject {
|
| +class Resource: public v8::String::ExternalStringResource {
|
| public:
|
| - explicit Resource(Vector<const uc16> string): data_(string.start()) {
|
| - length_ = string.length();
|
| - }
|
| + Resource(const uc16* data, size_t length): data_(data), length_(length) {}
|
| + ~Resource() { i::DeleteArray(data_); }
|
| virtual const uint16_t* data() const { return data_; }
|
| virtual size_t length() const { return length_; }
|
|
|
| @@ -115,12 +112,11 @@ class Resource: public v8::String::ExternalStringResource,
|
| };
|
|
|
|
|
| -class AsciiResource: public v8::String::ExternalAsciiStringResource,
|
| - public ZoneObject {
|
| +class AsciiResource: public v8::String::ExternalAsciiStringResource {
|
| public:
|
| - explicit AsciiResource(Vector<const char> string): data_(string.start()) {
|
| - length_ = string.length();
|
| - }
|
| + AsciiResource(const char* data, size_t length)
|
| + : data_(data), length_(length) {}
|
| + ~AsciiResource() { i::DeleteArray(data_); }
|
| virtual const char* data() const { return data_; }
|
| virtual size_t length() const { return length_; }
|
|
|
| @@ -133,8 +129,7 @@ class AsciiResource: public v8::String::ExternalAsciiStringResource,
|
| static void InitializeBuildingBlocks(Handle<String>* building_blocks,
|
| int bb_length,
|
| bool long_blocks,
|
| - MyRandomNumberGenerator* rng,
|
| - Zone* zone) {
|
| + MyRandomNumberGenerator* 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.
|
| Isolate* isolate = CcTest::i_isolate();
|
| @@ -189,25 +184,28 @@ static void InitializeBuildingBlocks(Handle<String>* building_blocks,
|
| break;
|
| }
|
| case 2: {
|
| - uc16* buf = zone->NewArray<uc16>(len);
|
| + uc16* buf = NewArray<uc16>(len);
|
| for (int j = 0; j < len; j++) {
|
| buf[j] = rng->next(0x10000);
|
| }
|
| - Resource* resource = new(zone) Resource(Vector<const uc16>(buf, len));
|
| - building_blocks[i] = factory->NewExternalStringFromTwoByte(resource);
|
| + Resource* resource = new Resource(buf, len);
|
| + building_blocks[i] =
|
| + v8::Utils::OpenHandle(
|
| + *v8::String::NewExternal(CcTest::isolate(), resource));
|
| for (int j = 0; j < len; j++) {
|
| CHECK_EQ(buf[j], building_blocks[i]->Get(j));
|
| }
|
| break;
|
| }
|
| case 3: {
|
| - char* buf = zone->NewArray<char>(len);
|
| + char* buf = NewArray<char>(len);
|
| for (int j = 0; j < len; j++) {
|
| buf[j] = rng->next(0x80);
|
| }
|
| - AsciiResource* resource =
|
| - new(zone) AsciiResource(Vector<const char>(buf, len));
|
| - building_blocks[i] = factory->NewExternalStringFromAscii(resource);
|
| + AsciiResource* resource = new AsciiResource(buf, len);
|
| + building_blocks[i] =
|
| + v8::Utils::OpenHandle(
|
| + *v8::String::NewExternal(CcTest::isolate(), resource));
|
| for (int j = 0; j < len; j++) {
|
| CHECK_EQ(buf[j], building_blocks[i]->Get(j));
|
| }
|
| @@ -263,7 +261,7 @@ void ConsStringStats::VerifyEqual(const ConsStringStats& that) const {
|
| class ConsStringGenerationData {
|
| public:
|
| static const int kNumberOfBuildingBlocks = 256;
|
| - ConsStringGenerationData(bool long_blocks, Zone* zone);
|
| + explicit ConsStringGenerationData(bool long_blocks);
|
| void Reset();
|
| inline Handle<String> block(int offset);
|
| inline Handle<String> block(uint32_t offset);
|
| @@ -285,11 +283,10 @@ class ConsStringGenerationData {
|
| };
|
|
|
|
|
| -ConsStringGenerationData::ConsStringGenerationData(bool long_blocks,
|
| - Zone* zone) {
|
| +ConsStringGenerationData::ConsStringGenerationData(bool long_blocks) {
|
| rng_.init();
|
| InitializeBuildingBlocks(
|
| - building_blocks_, kNumberOfBuildingBlocks, long_blocks, &rng_, zone);
|
| + building_blocks_, kNumberOfBuildingBlocks, long_blocks, &rng_);
|
| empty_string_ = CcTest::heap()->empty_string();
|
| Reset();
|
| }
|
| @@ -571,8 +568,7 @@ TEST(Traverse) {
|
| printf("TestTraverse\n");
|
| CcTest::InitializeVM();
|
| v8::HandleScope scope(CcTest::isolate());
|
| - Zone zone(CcTest::i_isolate());
|
| - ConsStringGenerationData data(false, &zone);
|
| + ConsStringGenerationData data(false);
|
| Handle<String> flat = ConstructBalanced(&data);
|
| FlattenString(flat);
|
| Handle<String> left_asymmetric = ConstructLeft(&data, DEEP_DEPTH);
|
| @@ -661,8 +657,7 @@ void TestStringCharacterStream(BuildString build, int test_cases) {
|
| CcTest::InitializeVM();
|
| Isolate* isolate = CcTest::i_isolate();
|
| HandleScope outer_scope(isolate);
|
| - Zone zone(isolate);
|
| - ConsStringGenerationData data(true, &zone);
|
| + ConsStringGenerationData data(true);
|
| for (int i = 0; i < test_cases; i++) {
|
| printf("%d\n", i);
|
| HandleScope inner_scope(isolate);
|
| @@ -931,9 +926,6 @@ TEST(Utf8Conversion) {
|
|
|
|
|
| TEST(ExternalShortStringAdd) {
|
| - Isolate* isolate = CcTest::i_isolate();
|
| - Zone zone(isolate);
|
| -
|
| LocalContext context;
|
| v8::HandleScope handle_scope(CcTest::isolate());
|
|
|
| @@ -949,26 +941,25 @@ TEST(ExternalShortStringAdd) {
|
|
|
| // Generate short ascii and non-ascii external strings.
|
| for (int i = 0; i <= kMaxLength; i++) {
|
| - char* ascii = zone.NewArray<char>(i + 1);
|
| + char* ascii = NewArray<char>(i + 1);
|
| for (int j = 0; j < i; j++) {
|
| ascii[j] = 'a';
|
| }
|
| // Terminating '\0' is left out on purpose. It is not required for external
|
| // string data.
|
| - AsciiResource* ascii_resource =
|
| - new(&zone) AsciiResource(Vector<const char>(ascii, i));
|
| + AsciiResource* ascii_resource = new AsciiResource(ascii, i);
|
| v8::Local<v8::String> ascii_external_string =
|
| v8::String::NewExternal(CcTest::isolate(), ascii_resource);
|
|
|
| ascii_external_strings->Set(v8::Integer::New(CcTest::isolate(), i),
|
| ascii_external_string);
|
| - uc16* non_ascii = zone.NewArray<uc16>(i + 1);
|
| + uc16* non_ascii = NewArray<uc16>(i + 1);
|
| for (int j = 0; j < i; j++) {
|
| non_ascii[j] = 0x1234;
|
| }
|
| // Terminating '\0' is left out on purpose. It is not required for external
|
| // string data.
|
| - Resource* resource = new(&zone) Resource(Vector<const uc16>(non_ascii, i));
|
| + Resource* resource = new Resource(non_ascii, i);
|
| v8::Local<v8::String> non_ascii_external_string =
|
| v8::String::NewExternal(CcTest::isolate(), resource);
|
| non_ascii_external_strings->Set(v8::Integer::New(CcTest::isolate(), i),
|
| @@ -1022,8 +1013,6 @@ TEST(ExternalShortStringAdd) {
|
|
|
| TEST(JSONStringifySliceMadeExternal) {
|
| CcTest::InitializeVM();
|
| - Isolate* isolate = CcTest::i_isolate();
|
| - Zone zone(isolate);
|
| // Create a sliced string from a one-byte string. The latter is turned
|
| // into a two-byte external string. Check that JSON.stringify works.
|
| v8::HandleScope handle_scope(CcTest::isolate());
|
| @@ -1037,10 +1026,9 @@ TEST(JSONStringifySliceMadeExternal) {
|
| CHECK(v8::Utils::OpenHandle(*underlying)->IsSeqOneByteString());
|
|
|
| int length = underlying->Length();
|
| - uc16* two_byte = zone.NewArray<uc16>(length + 1);
|
| + uc16* two_byte = NewArray<uc16>(length + 1);
|
| underlying->Write(two_byte);
|
| - Resource* resource =
|
| - new(&zone) Resource(Vector<const uc16>(two_byte, length));
|
| + Resource* resource = new Resource(two_byte, length);
|
| CHECK(underlying->MakeExternal(resource));
|
| CHECK(v8::Utils::OpenHandle(*slice)->IsSlicedString());
|
| CHECK(v8::Utils::OpenHandle(*underlying)->IsExternalTwoByteString());
|
| @@ -1056,7 +1044,6 @@ TEST(CachedHashOverflow) {
|
| // values didn't fit in the hash field.
|
| // See http://code.google.com/p/v8/issues/detail?id=728
|
| Isolate* isolate = CcTest::i_isolate();
|
| - Zone zone(isolate);
|
|
|
| v8::HandleScope handle_scope(CcTest::isolate());
|
| // Lines must be executed sequentially. Combining them into one script
|
|
|