| Index: test/cctest/test-api.cc
|
| ===================================================================
|
| --- test/cctest/test-api.cc (revision 4600)
|
| +++ test/cctest/test-api.cc (working copy)
|
| @@ -465,7 +465,10 @@
|
| i::Heap::CollectGarbage(0, i::NEW_SPACE);
|
| i::Heap::CollectGarbage(0, i::NEW_SPACE);
|
|
|
| - Local<String> small_string = String::New(AsciiToTwoByteString("small"));
|
| + uint16_t* two_byte_string = AsciiToTwoByteString("small");
|
| + Local<String> small_string = String::New(two_byte_string);
|
| + i::DeleteArray(two_byte_string);
|
| +
|
| // We should refuse to externalize newly created small string.
|
| CHECK(!small_string->CanMakeExternal());
|
| // Trigger GCs so that the newly allocated string moves to old gen.
|
| @@ -474,7 +477,10 @@
|
| // Old space strings should be accepted.
|
| CHECK(small_string->CanMakeExternal());
|
|
|
| - small_string = String::New(AsciiToTwoByteString("small 2"));
|
| + two_byte_string = AsciiToTwoByteString("small 2");
|
| + small_string = String::New(two_byte_string);
|
| + i::DeleteArray(two_byte_string);
|
| +
|
| // We should refuse externalizing newly created small string.
|
| CHECK(!small_string->CanMakeExternal());
|
| for (int i = 0; i < 100; i++) {
|
| @@ -487,8 +493,11 @@
|
| char* buf = i::NewArray<char>(buf_size);
|
| memset(buf, 'a', buf_size);
|
| buf[buf_size - 1] = '\0';
|
| - Local<String> large_string = String::New(AsciiToTwoByteString(buf));
|
| +
|
| + two_byte_string = AsciiToTwoByteString(buf);
|
| + Local<String> large_string = String::New(two_byte_string);
|
| i::DeleteArray(buf);
|
| + i::DeleteArray(two_byte_string);
|
| // Large strings should be immediately accepted.
|
| CHECK(large_string->CanMakeExternal());
|
| }
|
| @@ -617,7 +626,11 @@
|
| const char* two_byte_string_2 = "a_times_two_plus_b(4, 8) + ";
|
| const char* two_byte_extern_2 = "a_times_two_plus_b(1, 2);";
|
| Local<String> left = v8_str(one_byte_string_1);
|
| - Local<String> right = String::New(AsciiToTwoByteString(two_byte_string_1));
|
| +
|
| + uint16_t* two_byte_source = AsciiToTwoByteString(two_byte_string_1);
|
| + Local<String> right = String::New(two_byte_source);
|
| + i::DeleteArray(two_byte_source);
|
| +
|
| Local<String> source = String::Concat(left, right);
|
| right = String::NewExternal(
|
| new TestAsciiResource(i::StrDup(one_byte_extern_1)));
|
| @@ -627,7 +640,11 @@
|
| source = String::Concat(source, right);
|
| right = v8_str(one_byte_string_2);
|
| source = String::Concat(source, right);
|
| - right = String::New(AsciiToTwoByteString(two_byte_string_2));
|
| +
|
| + two_byte_source = AsciiToTwoByteString(two_byte_string_2);
|
| + right = String::New(two_byte_source);
|
| + i::DeleteArray(two_byte_source);
|
| +
|
| source = String::Concat(source, right);
|
| right = String::NewExternal(
|
| new TestResource(AsciiToTwoByteString(two_byte_extern_2)));
|
| @@ -3555,9 +3572,10 @@
|
| THREADED_TEST(WeakReference) {
|
| v8::HandleScope handle_scope;
|
| v8::Handle<v8::ObjectTemplate> templ= v8::ObjectTemplate::New();
|
| + Whammy* whammy = new Whammy();
|
| templ->SetNamedPropertyHandler(WhammyPropertyGetter,
|
| 0, 0, 0, 0,
|
| - v8::External::New(new Whammy()));
|
| + v8::External::New(whammy));
|
| const char* extension_list[] = { "v8/gc" };
|
| v8::ExtensionConfiguration extensions(1, extension_list);
|
| v8::Persistent<Context> context = Context::New(&extensions);
|
| @@ -3576,7 +3594,7 @@
|
| "4";
|
| v8::Handle<Value> result = CompileRun(code);
|
| CHECK_EQ(4.0, result->NumberValue());
|
| -
|
| + delete whammy;
|
| context.Dispose();
|
| }
|
|
|
| @@ -8453,6 +8471,7 @@
|
| CHECK_EQ(String::New(expected_slice_on_cons),
|
| env->Global()->Get(v8_str("slice_on_cons")));
|
| }
|
| + i::DeleteArray(two_byte_string);
|
| }
|
|
|
|
|
| @@ -8477,6 +8496,7 @@
|
| i::StrLength(ascii_sources[i])));
|
| v8::Local<v8::String> source = v8::String::NewExternal(&uc16_resource);
|
| v8::Script::Compile(source);
|
| + i::DeleteArray(two_byte_string);
|
| }
|
| }
|
|
|
|
|