| Index: test/cctest/test-heap.cc
|
| diff --git a/test/cctest/test-heap.cc b/test/cctest/test-heap.cc
|
| index 8bd3ab3fe39d47b6da7d47916887ebe45452f881..c9f70dcc96ec95f4f5375a12fec26ad0b5bdb689 100644
|
| --- a/test/cctest/test-heap.cc
|
| +++ b/test/cctest/test-heap.cc
|
| @@ -146,6 +146,7 @@ static void CheckFindCodeObject(Isolate* isolate) {
|
| TEST(HeapObjects) {
|
| CcTest::InitializeVM();
|
| Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
| Heap* heap = isolate->heap();
|
|
|
| HandleScope sc(isolate);
|
| @@ -201,7 +202,7 @@ TEST(HeapObjects) {
|
| CHECK(heap->nan_value()->IsNumber());
|
| CHECK(std::isnan(heap->nan_value()->Number()));
|
|
|
| - Handle<String> s = FACTORY->NewStringFromAscii(CStrVector("fisk hest "));
|
| + Handle<String> s = factory->NewStringFromAscii(CStrVector("fisk hest "));
|
| CHECK(s->IsString());
|
| CHECK_EQ(10, s->length());
|
|
|
| @@ -339,10 +340,12 @@ TEST(String) {
|
|
|
| TEST(LocalHandles) {
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
|
|
| v8::HandleScope scope(CcTest::isolate());
|
| const char* name = "Kasper the spunky";
|
| - Handle<String> string = FACTORY->NewStringFromAscii(CStrVector(name));
|
| + Handle<String> string = factory->NewStringFromAscii(CStrVector(name));
|
| CHECK_EQ(StrLength(name), string->length());
|
| }
|
|
|
| @@ -609,17 +612,19 @@ TEST(StringTable) {
|
|
|
| TEST(FunctionAllocation) {
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
|
|
| v8::HandleScope sc(CcTest::isolate());
|
| - Handle<String> name = FACTORY->InternalizeUtf8String("theFunction");
|
| + Handle<String> name = factory->InternalizeUtf8String("theFunction");
|
| Handle<JSFunction> function =
|
| - FACTORY->NewFunction(name, FACTORY->undefined_value());
|
| + factory->NewFunction(name, factory->undefined_value());
|
| Handle<Map> initial_map =
|
| - FACTORY->NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize);
|
| + factory->NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize);
|
| function->set_initial_map(*initial_map);
|
|
|
| - Handle<String> prop_name = FACTORY->InternalizeUtf8String("theSlot");
|
| - Handle<JSObject> obj = FACTORY->NewJSObject(function);
|
| + Handle<String> prop_name = factory->InternalizeUtf8String("theSlot");
|
| + Handle<JSObject> obj = factory->NewJSObject(function);
|
| obj->SetProperty(
|
| *prop_name, Smi::FromInt(23), NONE, kNonStrictMode)->ToObjectChecked();
|
| CHECK_EQ(Smi::FromInt(23), obj->GetProperty(*prop_name));
|
| @@ -632,6 +637,8 @@ TEST(FunctionAllocation) {
|
|
|
| TEST(ObjectProperties) {
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
|
|
| v8::HandleScope sc(CcTest::isolate());
|
| String* object_string = String::cast(HEAP->Object_string());
|
| @@ -639,9 +646,9 @@ TEST(ObjectProperties) {
|
| GetProperty(object_string)->ToObjectChecked();
|
| JSFunction* object_function = JSFunction::cast(raw_object);
|
| Handle<JSFunction> constructor(object_function);
|
| - Handle<JSObject> obj = FACTORY->NewJSObject(constructor);
|
| - Handle<String> first = FACTORY->InternalizeUtf8String("first");
|
| - Handle<String> second = FACTORY->InternalizeUtf8String("second");
|
| + Handle<JSObject> obj = factory->NewJSObject(constructor);
|
| + Handle<String> first = factory->InternalizeUtf8String("first");
|
| + Handle<String> second = factory->InternalizeUtf8String("second");
|
|
|
| // check for empty
|
| CHECK(!obj->HasLocalProperty(*first));
|
| @@ -687,35 +694,37 @@ TEST(ObjectProperties) {
|
|
|
| // check string and internalized string match
|
| const char* string1 = "fisk";
|
| - Handle<String> s1 = FACTORY->NewStringFromAscii(CStrVector(string1));
|
| + Handle<String> s1 = factory->NewStringFromAscii(CStrVector(string1));
|
| obj->SetProperty(
|
| *s1, Smi::FromInt(1), NONE, kNonStrictMode)->ToObjectChecked();
|
| - Handle<String> s1_string = FACTORY->InternalizeUtf8String(string1);
|
| + Handle<String> s1_string = factory->InternalizeUtf8String(string1);
|
| CHECK(obj->HasLocalProperty(*s1_string));
|
|
|
| // check internalized string and string match
|
| const char* string2 = "fugl";
|
| - Handle<String> s2_string = FACTORY->InternalizeUtf8String(string2);
|
| + Handle<String> s2_string = factory->InternalizeUtf8String(string2);
|
| obj->SetProperty(
|
| *s2_string, Smi::FromInt(1), NONE, kNonStrictMode)->ToObjectChecked();
|
| - Handle<String> s2 = FACTORY->NewStringFromAscii(CStrVector(string2));
|
| + Handle<String> s2 = factory->NewStringFromAscii(CStrVector(string2));
|
| CHECK(obj->HasLocalProperty(*s2));
|
| }
|
|
|
|
|
| TEST(JSObjectMaps) {
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
|
|
| v8::HandleScope sc(CcTest::isolate());
|
| - Handle<String> name = FACTORY->InternalizeUtf8String("theFunction");
|
| + Handle<String> name = factory->InternalizeUtf8String("theFunction");
|
| Handle<JSFunction> function =
|
| - FACTORY->NewFunction(name, FACTORY->undefined_value());
|
| + factory->NewFunction(name, factory->undefined_value());
|
| Handle<Map> initial_map =
|
| - FACTORY->NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize);
|
| + factory->NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize);
|
| function->set_initial_map(*initial_map);
|
|
|
| - Handle<String> prop_name = FACTORY->InternalizeUtf8String("theSlot");
|
| - Handle<JSObject> obj = FACTORY->NewJSObject(function);
|
| + Handle<String> prop_name = factory->InternalizeUtf8String("theSlot");
|
| + Handle<JSObject> obj = factory->NewJSObject(function);
|
|
|
| // Set a propery
|
| obj->SetProperty(
|
| @@ -729,16 +738,18 @@ TEST(JSObjectMaps) {
|
|
|
| TEST(JSArray) {
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
|
|
| v8::HandleScope sc(CcTest::isolate());
|
| - Handle<String> name = FACTORY->InternalizeUtf8String("Array");
|
| + Handle<String> name = factory->InternalizeUtf8String("Array");
|
| Object* raw_object = Isolate::Current()->context()->global_object()->
|
| GetProperty(*name)->ToObjectChecked();
|
| Handle<JSFunction> function = Handle<JSFunction>(
|
| JSFunction::cast(raw_object));
|
|
|
| // Allocate the object.
|
| - Handle<JSObject> object = FACTORY->NewJSObject(function);
|
| + Handle<JSObject> object = factory->NewJSObject(function);
|
| Handle<JSArray> array = Handle<JSArray>::cast(object);
|
| // We just initialized the VM, no heap allocation failure yet.
|
| array->Initialize(0)->ToObjectChecked();
|
| @@ -756,7 +767,7 @@ TEST(JSArray) {
|
|
|
| // Set array length with larger than smi value.
|
| Handle<Object> length =
|
| - FACTORY->NewNumberFromUint(static_cast<uint32_t>(Smi::kMaxValue) + 1);
|
| + factory->NewNumberFromUint(static_cast<uint32_t>(Smi::kMaxValue) + 1);
|
| array->SetElementsLength(*length)->ToObjectChecked();
|
|
|
| uint32_t int_length = 0;
|
| @@ -776,6 +787,8 @@ TEST(JSArray) {
|
|
|
| TEST(JSObjectCopy) {
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
|
|
| v8::HandleScope sc(CcTest::isolate());
|
| String* object_string = String::cast(HEAP->Object_string());
|
| @@ -783,9 +796,9 @@ TEST(JSObjectCopy) {
|
| GetProperty(object_string)->ToObjectChecked();
|
| JSFunction* object_function = JSFunction::cast(raw_object);
|
| Handle<JSFunction> constructor(object_function);
|
| - Handle<JSObject> obj = FACTORY->NewJSObject(constructor);
|
| - Handle<String> first = FACTORY->InternalizeUtf8String("first");
|
| - Handle<String> second = FACTORY->InternalizeUtf8String("second");
|
| + Handle<JSObject> obj = factory->NewJSObject(constructor);
|
| + Handle<String> first = factory->InternalizeUtf8String("first");
|
| + Handle<String> second = factory->InternalizeUtf8String("second");
|
|
|
| obj->SetProperty(
|
| *first, Smi::FromInt(1), NONE, kNonStrictMode)->ToObjectChecked();
|
| @@ -824,6 +837,8 @@ TEST(JSObjectCopy) {
|
|
|
| TEST(StringAllocation) {
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
|
|
| const unsigned char chars[] = { 0xe5, 0xa4, 0xa7 };
|
| for (int length = 0; length < 100; length++) {
|
| @@ -839,18 +854,18 @@ TEST(StringAllocation) {
|
| non_ascii[3 * i + 2] = chars[2];
|
| }
|
| Handle<String> non_ascii_sym =
|
| - FACTORY->InternalizeUtf8String(
|
| + factory->InternalizeUtf8String(
|
| Vector<const char>(non_ascii, 3 * length));
|
| CHECK_EQ(length, non_ascii_sym->length());
|
| Handle<String> ascii_sym =
|
| - FACTORY->InternalizeOneByteString(OneByteVector(ascii, length));
|
| + factory->InternalizeOneByteString(OneByteVector(ascii, length));
|
| CHECK_EQ(length, ascii_sym->length());
|
| Handle<String> non_ascii_str =
|
| - FACTORY->NewStringFromUtf8(Vector<const char>(non_ascii, 3 * length));
|
| + factory->NewStringFromUtf8(Vector<const char>(non_ascii, 3 * length));
|
| non_ascii_str->Hash();
|
| CHECK_EQ(length, non_ascii_str->length());
|
| Handle<String> ascii_str =
|
| - FACTORY->NewStringFromUtf8(Vector<const char>(ascii, length));
|
| + factory->NewStringFromUtf8(Vector<const char>(ascii, length));
|
| ascii_str->Hash();
|
| CHECK_EQ(length, ascii_str->length());
|
| DeleteArray(non_ascii);
|
| @@ -876,6 +891,8 @@ static int ObjectsFoundInHeap(Heap* heap, Handle<Object> objs[], int size) {
|
|
|
| TEST(Iteration) {
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
| v8::HandleScope scope(CcTest::isolate());
|
|
|
| // Array of objects to scan haep for.
|
| @@ -884,16 +901,16 @@ TEST(Iteration) {
|
| int next_objs_index = 0;
|
|
|
| // Allocate a JS array to OLD_POINTER_SPACE and NEW_SPACE
|
| - objs[next_objs_index++] = FACTORY->NewJSArray(10);
|
| - objs[next_objs_index++] = FACTORY->NewJSArray(10,
|
| + objs[next_objs_index++] = factory->NewJSArray(10);
|
| + objs[next_objs_index++] = factory->NewJSArray(10,
|
| FAST_HOLEY_ELEMENTS,
|
| TENURED);
|
|
|
| // Allocate a small string to OLD_DATA_SPACE and NEW_SPACE
|
| objs[next_objs_index++] =
|
| - FACTORY->NewStringFromAscii(CStrVector("abcdefghij"));
|
| + factory->NewStringFromAscii(CStrVector("abcdefghij"));
|
| objs[next_objs_index++] =
|
| - FACTORY->NewStringFromAscii(CStrVector("abcdefghij"), TENURED);
|
| + factory->NewStringFromAscii(CStrVector("abcdefghij"), TENURED);
|
|
|
| // Allocate a large string (for large object space).
|
| int large_size = Page::kMaxNonCodeHeapObjectSize + 1;
|
| @@ -901,7 +918,7 @@ TEST(Iteration) {
|
| for (int i = 0; i < large_size - 1; ++i) str[i] = 'a';
|
| str[large_size - 1] = '\0';
|
| objs[next_objs_index++] =
|
| - FACTORY->NewStringFromAscii(CStrVector(str), TENURED);
|
| + factory->NewStringFromAscii(CStrVector(str), TENURED);
|
| delete[] str;
|
|
|
| // Add a Map object to look for.
|
| @@ -936,6 +953,8 @@ static int LenFromSize(int size) {
|
| TEST(Regression39128) {
|
| // Test case for crbug.com/39128.
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
|
|
| // Increase the chance of 'bump-the-pointer' allocation in old space.
|
| HEAP->CollectAllGarbage(Heap::kNoGCFlags);
|
| @@ -952,7 +971,7 @@ TEST(Regression39128) {
|
| CHECK(object_ctor->has_initial_map());
|
| Handle<Map> object_map(object_ctor->initial_map());
|
| // Create a map with single inobject property.
|
| - Handle<Map> my_map = FACTORY->CopyMap(object_map, 1);
|
| + Handle<Map> my_map = factory->CopyMap(object_map, 1);
|
| int n_properties = my_map->inobject_properties();
|
| CHECK_GT(n_properties, 0);
|
|
|
| @@ -1013,6 +1032,8 @@ TEST(TestCodeFlushing) {
|
| if (!FLAG_flush_code) return;
|
| i::FLAG_allow_natives_syntax = true;
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
| v8::HandleScope scope(CcTest::isolate());
|
| const char* source = "function foo() {"
|
| " var x = 42;"
|
| @@ -1020,7 +1041,7 @@ TEST(TestCodeFlushing) {
|
| " var z = x + y;"
|
| "};"
|
| "foo()";
|
| - Handle<String> foo_name = FACTORY->InternalizeUtf8String("foo");
|
| + Handle<String> foo_name = factory->InternalizeUtf8String("foo");
|
|
|
| // This compile will add the code to the compilation cache.
|
| { v8::HandleScope scope(CcTest::isolate());
|
| @@ -1060,6 +1081,8 @@ TEST(TestCodeFlushingIncremental) {
|
| if (!FLAG_flush_code || !FLAG_flush_code_incrementally) return;
|
| i::FLAG_allow_natives_syntax = true;
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
| v8::HandleScope scope(CcTest::isolate());
|
| const char* source = "function foo() {"
|
| " var x = 42;"
|
| @@ -1067,7 +1090,7 @@ TEST(TestCodeFlushingIncremental) {
|
| " var z = x + y;"
|
| "};"
|
| "foo()";
|
| - Handle<String> foo_name = FACTORY->InternalizeUtf8String("foo");
|
| + Handle<String> foo_name = factory->InternalizeUtf8String("foo");
|
|
|
| // This compile will add the code to the compilation cache.
|
| { v8::HandleScope scope(CcTest::isolate());
|
| @@ -1126,6 +1149,8 @@ TEST(TestCodeFlushingIncrementalScavenge) {
|
| if (!FLAG_flush_code || !FLAG_flush_code_incrementally) return;
|
| i::FLAG_allow_natives_syntax = true;
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
| v8::HandleScope scope(CcTest::isolate());
|
| const char* source = "var foo = function() {"
|
| " var x = 42;"
|
| @@ -1137,8 +1162,8 @@ TEST(TestCodeFlushingIncrementalScavenge) {
|
| " var x = 23;"
|
| "};"
|
| "bar();";
|
| - Handle<String> foo_name = FACTORY->InternalizeUtf8String("foo");
|
| - Handle<String> bar_name = FACTORY->InternalizeUtf8String("bar");
|
| + Handle<String> foo_name = factory->InternalizeUtf8String("foo");
|
| + Handle<String> bar_name = factory->InternalizeUtf8String("bar");
|
|
|
| // Perfrom one initial GC to enable code flushing.
|
| HEAP->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
| @@ -1193,6 +1218,7 @@ TEST(TestCodeFlushingIncrementalAbort) {
|
| i::FLAG_allow_natives_syntax = true;
|
| CcTest::InitializeVM();
|
| Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
| Heap* heap = isolate->heap();
|
| v8::HandleScope scope(CcTest::isolate());
|
| const char* source = "function foo() {"
|
| @@ -1201,7 +1227,7 @@ TEST(TestCodeFlushingIncrementalAbort) {
|
| " var z = x + y;"
|
| "};"
|
| "foo()";
|
| - Handle<String> foo_name = FACTORY->InternalizeUtf8String("foo");
|
| + Handle<String> foo_name = factory->InternalizeUtf8String("foo");
|
|
|
| // This compile will add the code to the compilation cache.
|
| { v8::HandleScope scope(CcTest::isolate());
|
| @@ -1892,6 +1918,8 @@ TEST(InstanceOfStubWriteBarrier) {
|
|
|
| TEST(PrototypeTransitionClearing) {
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
| v8::HandleScope scope(CcTest::isolate());
|
|
|
| CompileRun(
|
| @@ -1931,7 +1959,7 @@ TEST(PrototypeTransitionClearing) {
|
| {
|
| AlwaysAllocateScope always_allocate;
|
| SimulateFullSpace(space);
|
| - prototype = FACTORY->NewJSArray(32 * KB, FAST_HOLEY_ELEMENTS, TENURED);
|
| + prototype = factory->NewJSArray(32 * KB, FAST_HOLEY_ELEMENTS, TENURED);
|
| }
|
|
|
| // Add a prototype on an evacuation candidate and verify that transition
|
| @@ -2290,6 +2318,8 @@ TEST(ReleaseOverReservedPages) {
|
| i::FLAG_crankshaft = false;
|
| i::FLAG_always_opt = false;
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
| v8::HandleScope scope(CcTest::isolate());
|
| static const int number_of_test_pages = 20;
|
|
|
| @@ -2299,7 +2329,7 @@ TEST(ReleaseOverReservedPages) {
|
| for (int i = 0; i < number_of_test_pages; i++) {
|
| AlwaysAllocateScope always_allocate;
|
| SimulateFullSpace(old_pointer_space);
|
| - FACTORY->NewFixedArray(1, TENURED);
|
| + factory->NewFixedArray(1, TENURED);
|
| }
|
| CHECK_EQ(number_of_test_pages + 1, old_pointer_space->CountTotalPages());
|
|
|
| @@ -2329,6 +2359,8 @@ TEST(ReleaseOverReservedPages) {
|
|
|
| TEST(Regress2237) {
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
| v8::HandleScope scope(CcTest::isolate());
|
| Handle<String> slice(HEAP->empty_string());
|
|
|
| @@ -2336,7 +2368,7 @@ TEST(Regress2237) {
|
| // Generate a parent that lives in new-space.
|
| v8::HandleScope inner_scope(CcTest::isolate());
|
| const char* c = "This text is long enough to trigger sliced strings.";
|
| - Handle<String> s = FACTORY->NewStringFromAscii(CStrVector(c));
|
| + Handle<String> s = factory->NewStringFromAscii(CStrVector(c));
|
| CHECK(s->IsSeqOneByteString());
|
| CHECK(HEAP->InNewSpace(*s));
|
|
|
| @@ -2344,7 +2376,7 @@ TEST(Regress2237) {
|
| // lives in old-space.
|
| SimulateFullSpace(HEAP->new_space());
|
| AlwaysAllocateScope always_allocate;
|
| - Handle<String> t = FACTORY->NewProperSubString(s, 5, 35);
|
| + Handle<String> t = factory->NewProperSubString(s, 5, 35);
|
| CHECK(t->IsSlicedString());
|
| CHECK(!HEAP->InNewSpace(*t));
|
| *slice.location() = *t.location();
|
| @@ -2900,6 +2932,8 @@ TEST(Regress169928) {
|
| i::FLAG_allow_natives_syntax = true;
|
| i::FLAG_crankshaft = false;
|
| CcTest::InitializeVM();
|
| + Isolate* isolate = Isolate::Current();
|
| + Factory* factory = isolate->factory();
|
| v8::HandleScope scope(CcTest::isolate());
|
|
|
| // Some flags turn Scavenge collections into Mark-sweep collections
|
| @@ -2930,7 +2964,7 @@ TEST(Regress169928) {
|
| HEAP->CollectGarbage(NEW_SPACE);
|
|
|
| // Allocate the object.
|
| - Handle<FixedArray> array_data = FACTORY->NewFixedArray(2, NOT_TENURED);
|
| + Handle<FixedArray> array_data = factory->NewFixedArray(2, NOT_TENURED);
|
| array_data->set(0, Smi::FromInt(1));
|
| array_data->set(1, Smi::FromInt(2));
|
|
|
| @@ -2938,7 +2972,7 @@ TEST(Regress169928) {
|
| JSArray::kSize + AllocationSiteInfo::kSize +
|
| kPointerSize);
|
|
|
| - Handle<JSArray> array = FACTORY->NewJSArrayWithElements(array_data,
|
| + Handle<JSArray> array = factory->NewJSArrayWithElements(array_data,
|
| FAST_SMI_ELEMENTS,
|
| NOT_TENURED);
|
|
|
|
|