| Index: test/cctest/test-api.cc
|
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
|
| index 3895e524f4b2736486c665b949338043bdb6f376..724eb6a2fc2793f10fa8fbf341d0f67c6e42b316 100644
|
| --- a/test/cctest/test-api.cc
|
| +++ b/test/cctest/test-api.cc
|
| @@ -621,6 +621,33 @@ TEST(MakingExternalAsciiStringConditions) {
|
| }
|
|
|
|
|
| +TEST(MakingExternalUnalignedAsciiString) {
|
| + LocalContext env;
|
| + v8::HandleScope scope(env->GetIsolate());
|
| +
|
| + // Create a cons string that will land in old pointer space.
|
| + Local<String> string = Local<String>::Cast(CompileRun(
|
| + "function cons(a, b) { return a + b; }"
|
| + "cons('abcdefghijklm', 'nopqrstuvwxyz');"));
|
| +
|
| + // Trigger GCs so that the newly allocated string moves to old gen.
|
| + SimulateFullSpace(HEAP->old_pointer_space());
|
| + HEAP->CollectGarbage(i::NEW_SPACE); // in survivor space now
|
| + HEAP->CollectGarbage(i::NEW_SPACE); // in old gen now
|
| +
|
| + // Turn into external string with unaligned resource data.
|
| + int dispose_count = 0;
|
| + const char* c_source = "_abcdefghijklmnopqrstuvwxyz";
|
| + bool success = string->MakeExternal(
|
| + new TestAsciiResource(i::StrDup(c_source) + 1, &dispose_count));
|
| + CHECK(success);
|
| +
|
| + // Trigger GCs and force evacuation.
|
| + HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
|
| + HEAP->CollectAllGarbage(i::Heap::kReduceMemoryFootprintMask);
|
| +}
|
| +
|
| +
|
| THREADED_TEST(UsingExternalString) {
|
| i::Factory* factory = i::Isolate::Current()->factory();
|
| {
|
|
|