Index: test/cctest/test-heap.cc |
=================================================================== |
--- test/cctest/test-heap.cc (revision 7267) |
+++ test/cctest/test-heap.cc (working copy) |
@@ -24,9 +24,9 @@ |
static void CheckMap(Map* map, int type, int instance_size) { |
CHECK(map->IsHeapObject()); |
#ifdef DEBUG |
- CHECK(Heap::Contains(map)); |
+ CHECK(HEAP->Contains(map)); |
#endif |
- CHECK_EQ(Heap::meta_map(), map->map()); |
+ CHECK_EQ(HEAP->meta_map(), map->map()); |
CHECK_EQ(type, map->instance_type()); |
CHECK_EQ(instance_size, map->instance_size()); |
} |
@@ -34,10 +34,10 @@ |
TEST(HeapMaps) { |
InitializeVM(); |
- CheckMap(Heap::meta_map(), MAP_TYPE, Map::kSize); |
- CheckMap(Heap::heap_number_map(), HEAP_NUMBER_TYPE, HeapNumber::kSize); |
- CheckMap(Heap::fixed_array_map(), FIXED_ARRAY_TYPE, kVariableSizeSentinel); |
- CheckMap(Heap::string_map(), STRING_TYPE, kVariableSizeSentinel); |
+ CheckMap(HEAP->meta_map(), MAP_TYPE, Map::kSize); |
+ CheckMap(HEAP->heap_number_map(), HEAP_NUMBER_TYPE, HeapNumber::kSize); |
+ CheckMap(HEAP->fixed_array_map(), FIXED_ARRAY_TYPE, kVariableSizeSentinel); |
+ CheckMap(HEAP->string_map(), STRING_TYPE, kVariableSizeSentinel); |
} |
@@ -58,7 +58,7 @@ |
static void CheckNumber(double value, const char* string) { |
- Object* obj = Heap::NumberFromDouble(value)->ToObjectChecked(); |
+ Object* obj = HEAP->NumberFromDouble(value)->ToObjectChecked(); |
CHECK(obj->IsNumber()); |
bool exc; |
Object* print_string = *Execution::ToString(Handle<Object>(obj), &exc); |
@@ -76,27 +76,27 @@ |
CodeDesc desc; |
assm.GetCode(&desc); |
- Object* code = Heap::CreateCode( |
+ Object* code = HEAP->CreateCode( |
desc, |
Code::ComputeFlags(Code::STUB), |
- Handle<Object>(Heap::undefined_value()))->ToObjectChecked(); |
+ Handle<Object>(HEAP->undefined_value()))->ToObjectChecked(); |
CHECK(code->IsCode()); |
HeapObject* obj = HeapObject::cast(code); |
Address obj_addr = obj->address(); |
for (int i = 0; i < obj->Size(); i += kPointerSize) { |
- Object* found = Heap::FindCodeObject(obj_addr + i); |
+ Object* found = HEAP->FindCodeObject(obj_addr + i); |
CHECK_EQ(code, found); |
} |
- Object* copy = Heap::CreateCode( |
+ Object* copy = HEAP->CreateCode( |
desc, |
Code::ComputeFlags(Code::STUB), |
- Handle<Object>(Heap::undefined_value()))->ToObjectChecked(); |
+ Handle<Object>(HEAP->undefined_value()))->ToObjectChecked(); |
CHECK(copy->IsCode()); |
HeapObject* obj_copy = HeapObject::cast(copy); |
- Object* not_right = Heap::FindCodeObject(obj_copy->address() + |
+ Object* not_right = HEAP->FindCodeObject(obj_copy->address() + |
obj_copy->Size() / 2); |
CHECK(not_right != code); |
} |
@@ -106,41 +106,41 @@ |
InitializeVM(); |
v8::HandleScope sc; |
- Object* value = Heap::NumberFromDouble(1.000123)->ToObjectChecked(); |
+ Object* value = HEAP->NumberFromDouble(1.000123)->ToObjectChecked(); |
CHECK(value->IsHeapNumber()); |
CHECK(value->IsNumber()); |
CHECK_EQ(1.000123, value->Number()); |
- value = Heap::NumberFromDouble(1.0)->ToObjectChecked(); |
+ value = HEAP->NumberFromDouble(1.0)->ToObjectChecked(); |
CHECK(value->IsSmi()); |
CHECK(value->IsNumber()); |
CHECK_EQ(1.0, value->Number()); |
- value = Heap::NumberFromInt32(1024)->ToObjectChecked(); |
+ value = HEAP->NumberFromInt32(1024)->ToObjectChecked(); |
CHECK(value->IsSmi()); |
CHECK(value->IsNumber()); |
CHECK_EQ(1024.0, value->Number()); |
- value = Heap::NumberFromInt32(Smi::kMinValue)->ToObjectChecked(); |
+ value = HEAP->NumberFromInt32(Smi::kMinValue)->ToObjectChecked(); |
CHECK(value->IsSmi()); |
CHECK(value->IsNumber()); |
CHECK_EQ(Smi::kMinValue, Smi::cast(value)->value()); |
- value = Heap::NumberFromInt32(Smi::kMaxValue)->ToObjectChecked(); |
+ value = HEAP->NumberFromInt32(Smi::kMaxValue)->ToObjectChecked(); |
CHECK(value->IsSmi()); |
CHECK(value->IsNumber()); |
CHECK_EQ(Smi::kMaxValue, Smi::cast(value)->value()); |
#ifndef V8_TARGET_ARCH_X64 |
// TODO(lrn): We need a NumberFromIntptr function in order to test this. |
- value = Heap::NumberFromInt32(Smi::kMinValue - 1)->ToObjectChecked(); |
+ value = HEAP->NumberFromInt32(Smi::kMinValue - 1)->ToObjectChecked(); |
CHECK(value->IsHeapNumber()); |
CHECK(value->IsNumber()); |
CHECK_EQ(static_cast<double>(Smi::kMinValue - 1), value->Number()); |
#endif |
MaybeObject* maybe_value = |
- Heap::NumberFromUint32(static_cast<uint32_t>(Smi::kMaxValue) + 1); |
+ HEAP->NumberFromUint32(static_cast<uint32_t>(Smi::kMaxValue) + 1); |
value = maybe_value->ToObjectChecked(); |
CHECK(value->IsHeapNumber()); |
CHECK(value->IsNumber()); |
@@ -148,21 +148,22 @@ |
value->Number()); |
// nan oddball checks |
- CHECK(Heap::nan_value()->IsNumber()); |
- CHECK(isnan(Heap::nan_value()->Number())); |
+ CHECK(HEAP->nan_value()->IsNumber()); |
+ CHECK(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()); |
- String* object_symbol = String::cast(Heap::Object_symbol()); |
- CHECK(Top::context()->global()->HasLocalProperty(object_symbol)); |
+ String* object_symbol = String::cast(HEAP->Object_symbol()); |
+ CHECK( |
+ Isolate::Current()->context()->global()->HasLocalProperty(object_symbol)); |
// Check ToString for oddballs |
- CheckOddball(Heap::true_value(), "true"); |
- CheckOddball(Heap::false_value(), "false"); |
- CheckOddball(Heap::null_value(), "null"); |
- CheckOddball(Heap::undefined_value(), "undefined"); |
+ CheckOddball(HEAP->true_value(), "true"); |
+ CheckOddball(HEAP->false_value(), "false"); |
+ CheckOddball(HEAP->null_value(), "null"); |
+ CheckOddball(HEAP->undefined_value(), "undefined"); |
// Check ToString for Smis |
CheckSmi(0, "0"); |
@@ -197,25 +198,25 @@ |
v8::HandleScope sc; |
// Check GC. |
- Heap::CollectGarbage(NEW_SPACE); |
+ HEAP->CollectGarbage(NEW_SPACE); |
- Handle<String> name = Factory::LookupAsciiSymbol("theFunction"); |
- Handle<String> prop_name = Factory::LookupAsciiSymbol("theSlot"); |
- Handle<String> prop_namex = Factory::LookupAsciiSymbol("theSlotx"); |
- Handle<String> obj_name = Factory::LookupAsciiSymbol("theObject"); |
+ Handle<String> name = FACTORY->LookupAsciiSymbol("theFunction"); |
+ Handle<String> prop_name = FACTORY->LookupAsciiSymbol("theSlot"); |
+ Handle<String> prop_namex = FACTORY->LookupAsciiSymbol("theSlotx"); |
+ Handle<String> obj_name = FACTORY->LookupAsciiSymbol("theObject"); |
{ |
v8::HandleScope inner_scope; |
// Allocate a function and keep it in global object's property. |
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); |
- Top::context()->global()->SetProperty( |
+ Isolate::Current()->context()->global()->SetProperty( |
*name, *function, NONE, kNonStrictMode)->ToObjectChecked(); |
// Allocate an object. Unrooted after leaving the scope. |
- Handle<JSObject> obj = Factory::NewJSObject(function); |
+ Handle<JSObject> obj = FACTORY->NewJSObject(function); |
obj->SetProperty( |
*prop_name, Smi::FromInt(23), NONE, kNonStrictMode)->ToObjectChecked(); |
obj->SetProperty( |
@@ -225,34 +226,34 @@ |
CHECK_EQ(Smi::FromInt(24), obj->GetProperty(*prop_namex)); |
} |
- Heap::CollectGarbage(NEW_SPACE); |
+ HEAP->CollectGarbage(NEW_SPACE); |
// Function should be alive. |
- CHECK(Top::context()->global()->HasLocalProperty(*name)); |
+ CHECK(Isolate::Current()->context()->global()->HasLocalProperty(*name)); |
// Check function is retained. |
- Object* func_value = |
- Top::context()->global()->GetProperty(*name)->ToObjectChecked(); |
+ Object* func_value = Isolate::Current()->context()->global()-> |
+ GetProperty(*name)->ToObjectChecked(); |
CHECK(func_value->IsJSFunction()); |
Handle<JSFunction> function(JSFunction::cast(func_value)); |
{ |
HandleScope inner_scope; |
// Allocate another object, make it reachable from global. |
- Handle<JSObject> obj = Factory::NewJSObject(function); |
- Top::context()->global()->SetProperty( |
+ Handle<JSObject> obj = FACTORY->NewJSObject(function); |
+ Isolate::Current()->context()->global()->SetProperty( |
*obj_name, *obj, NONE, kNonStrictMode)->ToObjectChecked(); |
obj->SetProperty( |
*prop_name, Smi::FromInt(23), NONE, kNonStrictMode)->ToObjectChecked(); |
} |
// After gc, it should survive. |
- Heap::CollectGarbage(NEW_SPACE); |
+ HEAP->CollectGarbage(NEW_SPACE); |
- CHECK(Top::context()->global()->HasLocalProperty(*obj_name)); |
- CHECK(Top::context()->global()->GetProperty(*obj_name)->ToObjectChecked()-> |
- IsJSObject()); |
- Object* obj = |
- Top::context()->global()->GetProperty(*obj_name)->ToObjectChecked(); |
+ CHECK(Isolate::Current()->context()->global()->HasLocalProperty(*obj_name)); |
+ CHECK(Isolate::Current()->context()->global()-> |
+ GetProperty(*obj_name)->ToObjectChecked()->IsJSObject()); |
+ Object* obj = Isolate::Current()->context()->global()-> |
+ GetProperty(*obj_name)->ToObjectChecked(); |
JSObject* js_obj = JSObject::cast(obj); |
CHECK_EQ(Smi::FromInt(23), js_obj->GetProperty(*prop_name)); |
} |
@@ -260,7 +261,7 @@ |
static void VerifyStringAllocation(const char* string) { |
v8::HandleScope scope; |
- Handle<String> s = Factory::NewStringFromUtf8(CStrVector(string)); |
+ Handle<String> s = FACTORY->NewStringFromUtf8(CStrVector(string)); |
CHECK_EQ(StrLength(string), s->length()); |
for (int index = 0; index < s->length(); index++) { |
CHECK_EQ(static_cast<uint16_t>(string[index]), s->Get(index)); |
@@ -284,12 +285,13 @@ |
v8::HandleScope scope; |
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()); |
} |
TEST(GlobalHandles) { |
+ GlobalHandles* global_handles = Isolate::Current()->global_handles(); |
InitializeVM(); |
Handle<Object> h1; |
@@ -300,17 +302,17 @@ |
{ |
HandleScope scope; |
- Handle<Object> i = Factory::NewStringFromAscii(CStrVector("fisk")); |
- Handle<Object> u = Factory::NewNumber(1.12344); |
+ Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk")); |
+ Handle<Object> u = FACTORY->NewNumber(1.12344); |
- h1 = GlobalHandles::Create(*i); |
- h2 = GlobalHandles::Create(*u); |
- h3 = GlobalHandles::Create(*i); |
- h4 = GlobalHandles::Create(*u); |
+ h1 = global_handles->Create(*i); |
+ h2 = global_handles->Create(*u); |
+ h3 = global_handles->Create(*i); |
+ h4 = global_handles->Create(*u); |
} |
// after gc, it should survive |
- Heap::CollectGarbage(NEW_SPACE); |
+ HEAP->CollectGarbage(NEW_SPACE); |
CHECK((*h1)->IsString()); |
CHECK((*h2)->IsHeapNumber()); |
@@ -318,12 +320,12 @@ |
CHECK((*h4)->IsHeapNumber()); |
CHECK_EQ(*h3, *h1); |
- GlobalHandles::Destroy(h1.location()); |
- GlobalHandles::Destroy(h3.location()); |
+ global_handles->Destroy(h1.location()); |
+ global_handles->Destroy(h3.location()); |
CHECK_EQ(*h4, *h2); |
- GlobalHandles::Destroy(h2.location()); |
- GlobalHandles::Destroy(h4.location()); |
+ global_handles->Destroy(h2.location()); |
+ global_handles->Destroy(h4.location()); |
} |
@@ -337,6 +339,7 @@ |
TEST(WeakGlobalHandlesScavenge) { |
+ GlobalHandles* global_handles = Isolate::Current()->global_handles(); |
InitializeVM(); |
WeakPointerCleared = false; |
@@ -347,33 +350,34 @@ |
{ |
HandleScope scope; |
- Handle<Object> i = Factory::NewStringFromAscii(CStrVector("fisk")); |
- Handle<Object> u = Factory::NewNumber(1.12344); |
+ Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk")); |
+ Handle<Object> u = FACTORY->NewNumber(1.12344); |
- h1 = GlobalHandles::Create(*i); |
- h2 = GlobalHandles::Create(*u); |
+ h1 = global_handles->Create(*i); |
+ h2 = global_handles->Create(*u); |
} |
- GlobalHandles::MakeWeak(h2.location(), |
- reinterpret_cast<void*>(1234), |
- &TestWeakGlobalHandleCallback); |
+ global_handles->MakeWeak(h2.location(), |
+ reinterpret_cast<void*>(1234), |
+ &TestWeakGlobalHandleCallback); |
// Scavenge treats weak pointers as normal roots. |
- Heap::PerformScavenge(); |
+ HEAP->PerformScavenge(); |
CHECK((*h1)->IsString()); |
CHECK((*h2)->IsHeapNumber()); |
CHECK(!WeakPointerCleared); |
- CHECK(!GlobalHandles::IsNearDeath(h2.location())); |
- CHECK(!GlobalHandles::IsNearDeath(h1.location())); |
+ CHECK(!global_handles->IsNearDeath(h2.location())); |
+ CHECK(!global_handles->IsNearDeath(h1.location())); |
- GlobalHandles::Destroy(h1.location()); |
- GlobalHandles::Destroy(h2.location()); |
+ global_handles->Destroy(h1.location()); |
+ global_handles->Destroy(h2.location()); |
} |
TEST(WeakGlobalHandlesMark) { |
+ GlobalHandles* global_handles = Isolate::Current()->global_handles(); |
InitializeVM(); |
WeakPointerCleared = false; |
@@ -384,34 +388,35 @@ |
{ |
HandleScope scope; |
- Handle<Object> i = Factory::NewStringFromAscii(CStrVector("fisk")); |
- Handle<Object> u = Factory::NewNumber(1.12344); |
+ Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk")); |
+ Handle<Object> u = FACTORY->NewNumber(1.12344); |
- h1 = GlobalHandles::Create(*i); |
- h2 = GlobalHandles::Create(*u); |
+ h1 = global_handles->Create(*i); |
+ h2 = global_handles->Create(*u); |
} |
- Heap::CollectGarbage(OLD_POINTER_SPACE); |
- Heap::CollectGarbage(NEW_SPACE); |
+ HEAP->CollectGarbage(OLD_POINTER_SPACE); |
+ HEAP->CollectGarbage(NEW_SPACE); |
// Make sure the object is promoted. |
- GlobalHandles::MakeWeak(h2.location(), |
- reinterpret_cast<void*>(1234), |
- &TestWeakGlobalHandleCallback); |
+ global_handles->MakeWeak(h2.location(), |
+ reinterpret_cast<void*>(1234), |
+ &TestWeakGlobalHandleCallback); |
CHECK(!GlobalHandles::IsNearDeath(h1.location())); |
CHECK(!GlobalHandles::IsNearDeath(h2.location())); |
- Heap::CollectGarbage(OLD_POINTER_SPACE); |
+ HEAP->CollectGarbage(OLD_POINTER_SPACE); |
CHECK((*h1)->IsString()); |
CHECK(WeakPointerCleared); |
CHECK(!GlobalHandles::IsNearDeath(h1.location())); |
- GlobalHandles::Destroy(h1.location()); |
+ global_handles->Destroy(h1.location()); |
} |
TEST(DeleteWeakGlobalHandle) { |
+ GlobalHandles* global_handles = Isolate::Current()->global_handles(); |
InitializeVM(); |
WeakPointerCleared = false; |
@@ -421,21 +426,21 @@ |
{ |
HandleScope scope; |
- Handle<Object> i = Factory::NewStringFromAscii(CStrVector("fisk")); |
- h = GlobalHandles::Create(*i); |
+ Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk")); |
+ h = global_handles->Create(*i); |
} |
- GlobalHandles::MakeWeak(h.location(), |
- reinterpret_cast<void*>(1234), |
- &TestWeakGlobalHandleCallback); |
+ global_handles->MakeWeak(h.location(), |
+ reinterpret_cast<void*>(1234), |
+ &TestWeakGlobalHandleCallback); |
// Scanvenge does not recognize weak reference. |
- Heap::PerformScavenge(); |
+ HEAP->PerformScavenge(); |
CHECK(!WeakPointerCleared); |
// Mark-compact treats weak reference properly. |
- Heap::CollectGarbage(OLD_POINTER_SPACE); |
+ HEAP->CollectGarbage(OLD_POINTER_SPACE); |
CHECK(WeakPointerCleared); |
} |
@@ -507,12 +512,12 @@ |
static void CheckSymbols(const char** strings) { |
for (const char* string = *strings; *strings != 0; string = *strings++) { |
Object* a; |
- MaybeObject* maybe_a = Heap::LookupAsciiSymbol(string); |
+ MaybeObject* maybe_a = HEAP->LookupAsciiSymbol(string); |
// LookupAsciiSymbol may return a failure if a GC is needed. |
if (!maybe_a->ToObject(&a)) continue; |
CHECK(a->IsSymbol()); |
Object* b; |
- MaybeObject *maybe_b = Heap::LookupAsciiSymbol(string); |
+ MaybeObject* maybe_b = HEAP->LookupAsciiSymbol(string); |
if (!maybe_b->ToObject(&b)) continue; |
CHECK_EQ(b, a); |
CHECK(String::cast(b)->IsEqualTo(CStrVector(string))); |
@@ -532,15 +537,15 @@ |
InitializeVM(); |
v8::HandleScope sc; |
- Handle<String> name = Factory::LookupAsciiSymbol("theFunction"); |
+ Handle<String> name = FACTORY->LookupAsciiSymbol("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::LookupAsciiSymbol("theSlot"); |
- Handle<JSObject> obj = Factory::NewJSObject(function); |
+ Handle<String> prop_name = FACTORY->LookupAsciiSymbol("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)); |
@@ -555,14 +560,14 @@ |
InitializeVM(); |
v8::HandleScope sc; |
- String* object_symbol = String::cast(Heap::Object_symbol()); |
- Object* raw_object = |
- Top::context()->global()->GetProperty(object_symbol)->ToObjectChecked(); |
+ String* object_symbol = String::cast(HEAP->Object_symbol()); |
+ Object* raw_object = Isolate::Current()->context()->global()-> |
+ GetProperty(object_symbol)->ToObjectChecked(); |
JSFunction* object_function = JSFunction::cast(raw_object); |
Handle<JSFunction> constructor(object_function); |
- Handle<JSObject> obj = Factory::NewJSObject(constructor); |
- Handle<String> first = Factory::LookupAsciiSymbol("first"); |
- Handle<String> second = Factory::LookupAsciiSymbol("second"); |
+ Handle<JSObject> obj = FACTORY->NewJSObject(constructor); |
+ Handle<String> first = FACTORY->LookupAsciiSymbol("first"); |
+ Handle<String> second = FACTORY->LookupAsciiSymbol("second"); |
// check for empty |
CHECK(!obj->HasLocalProperty(*first)); |
@@ -608,18 +613,18 @@ |
// check string and symbol match |
static 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_symbol = Factory::LookupAsciiSymbol(string1); |
+ Handle<String> s1_symbol = FACTORY->LookupAsciiSymbol(string1); |
CHECK(obj->HasLocalProperty(*s1_symbol)); |
// check symbol and string match |
static const char* string2 = "fugl"; |
- Handle<String> s2_symbol = Factory::LookupAsciiSymbol(string2); |
+ Handle<String> s2_symbol = FACTORY->LookupAsciiSymbol(string2); |
obj->SetProperty( |
*s2_symbol, Smi::FromInt(1), NONE, kNonStrictMode)->ToObjectChecked(); |
- Handle<String> s2 = Factory::NewStringFromAscii(CStrVector(string2)); |
+ Handle<String> s2 = FACTORY->NewStringFromAscii(CStrVector(string2)); |
CHECK(obj->HasLocalProperty(*s2)); |
} |
@@ -628,15 +633,15 @@ |
InitializeVM(); |
v8::HandleScope sc; |
- Handle<String> name = Factory::LookupAsciiSymbol("theFunction"); |
+ Handle<String> name = FACTORY->LookupAsciiSymbol("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::LookupAsciiSymbol("theSlot"); |
- Handle<JSObject> obj = Factory::NewJSObject(function); |
+ Handle<String> prop_name = FACTORY->LookupAsciiSymbol("theSlot"); |
+ Handle<JSObject> obj = FACTORY->NewJSObject(function); |
// Set a propery |
obj->SetProperty( |
@@ -652,14 +657,14 @@ |
InitializeVM(); |
v8::HandleScope sc; |
- Handle<String> name = Factory::LookupAsciiSymbol("Array"); |
- Object* raw_object = |
- Top::context()->global()->GetProperty(*name)->ToObjectChecked(); |
+ Handle<String> name = FACTORY->LookupAsciiSymbol("Array"); |
+ Object* raw_object = Isolate::Current()->context()->global()-> |
+ 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. |
Object* ok = array->Initialize(0)->ToObjectChecked(); |
@@ -676,7 +681,7 @@ |
// 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); |
ok = array->SetElementsLength(*length)->ToObjectChecked(); |
uint32_t int_length = 0; |
@@ -698,14 +703,14 @@ |
InitializeVM(); |
v8::HandleScope sc; |
- String* object_symbol = String::cast(Heap::Object_symbol()); |
- Object* raw_object = |
- Top::context()->global()->GetProperty(object_symbol)->ToObjectChecked(); |
+ String* object_symbol = String::cast(HEAP->Object_symbol()); |
+ Object* raw_object = Isolate::Current()->context()->global()-> |
+ GetProperty(object_symbol)->ToObjectChecked(); |
JSFunction* object_function = JSFunction::cast(raw_object); |
Handle<JSFunction> constructor(object_function); |
- Handle<JSObject> obj = Factory::NewJSObject(constructor); |
- Handle<String> first = Factory::LookupAsciiSymbol("first"); |
- Handle<String> second = Factory::LookupAsciiSymbol("second"); |
+ Handle<JSObject> obj = FACTORY->NewJSObject(constructor); |
+ Handle<String> first = FACTORY->LookupAsciiSymbol("first"); |
+ Handle<String> second = FACTORY->LookupAsciiSymbol("second"); |
obj->SetProperty( |
*first, Smi::FromInt(1), NONE, kNonStrictMode)->ToObjectChecked(); |
@@ -761,17 +766,17 @@ |
non_ascii[3 * i + 2] = chars[2]; |
} |
Handle<String> non_ascii_sym = |
- Factory::LookupSymbol(Vector<const char>(non_ascii, 3 * length)); |
+ FACTORY->LookupSymbol(Vector<const char>(non_ascii, 3 * length)); |
CHECK_EQ(length, non_ascii_sym->length()); |
Handle<String> ascii_sym = |
- Factory::LookupSymbol(Vector<const char>(ascii, length)); |
+ FACTORY->LookupSymbol(Vector<const char>(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); |
@@ -805,22 +810,22 @@ |
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, TENURED); |
+ objs[next_objs_index++] = FACTORY->NewJSArray(10); |
+ objs[next_objs_index++] = FACTORY->NewJSArray(10, 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 = Heap::MaxObjectSizeInPagedSpace() + 1; |
+ int large_size = HEAP->MaxObjectSizeInPagedSpace() + 1; |
char* str = new char[large_size]; |
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. |
@@ -834,9 +839,9 @@ |
TEST(LargeObjectSpaceContains) { |
InitializeVM(); |
- Heap::CollectGarbage(NEW_SPACE); |
+ HEAP->CollectGarbage(NEW_SPACE); |
- Address current_top = Heap::new_space()->top(); |
+ Address current_top = HEAP->new_space()->top(); |
Page* page = Page::FromAddress(current_top); |
Address current_page = page->address(); |
Address next_page = current_page + Page::kPageSize; |
@@ -859,7 +864,7 @@ |
kPointerSize; |
CHECK_EQ(bytes_to_allocate, FixedArray::SizeFor(n_elements)); |
FixedArray* array = FixedArray::cast( |
- Heap::AllocateFixedArray(n_elements)->ToObjectChecked()); |
+ HEAP->AllocateFixedArray(n_elements)->ToObjectChecked()); |
int index = n_elements - 1; |
CHECK_EQ(flags_ptr, |
@@ -869,8 +874,8 @@ |
// CHECK(Page::FromAddress(next_page)->IsLargeObjectPage()); |
HeapObject* addr = HeapObject::FromAddress(next_page + 2 * kPointerSize); |
- CHECK(Heap::new_space()->Contains(addr)); |
- CHECK(!Heap::lo_space()->Contains(addr)); |
+ CHECK(HEAP->new_space()->Contains(addr)); |
+ CHECK(!HEAP->lo_space()->Contains(addr)); |
} |
@@ -901,7 +906,7 @@ |
// Increase the chance of 'bump-the-pointer' allocation in old space. |
bool force_compaction = true; |
- Heap::CollectAllGarbage(force_compaction); |
+ HEAP->CollectAllGarbage(force_compaction); |
v8::HandleScope scope; |
@@ -910,11 +915,12 @@ |
// that region dirty marks are updated correctly. |
// Step 1: prepare a map for the object. We add 1 inobject property to it. |
- Handle<JSFunction> object_ctor(Top::global_context()->object_function()); |
+ Handle<JSFunction> object_ctor( |
+ Isolate::Current()->global_context()->object_function()); |
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); |
@@ -924,15 +930,15 @@ |
// just enough room to allocate JSObject and thus fill the newspace. |
int allocation_amount = Min(FixedArray::kMaxSize, |
- Heap::MaxObjectSizeInNewSpace()); |
+ HEAP->MaxObjectSizeInNewSpace()); |
int allocation_len = LenFromSize(allocation_amount); |
- NewSpace* new_space = Heap::new_space(); |
+ NewSpace* new_space = HEAP->new_space(); |
Address* top_addr = new_space->allocation_top_address(); |
Address* limit_addr = new_space->allocation_limit_address(); |
while ((*limit_addr - *top_addr) > allocation_amount) { |
- CHECK(!Heap::always_allocate()); |
- Object* array = |
- Heap::AllocateFixedArray(allocation_len)->ToObjectChecked(); |
+ CHECK(!HEAP->always_allocate()); |
+ Object* array = HEAP->AllocateFixedArray(allocation_len)->ToObjectChecked(); |
+ CHECK(!array->IsFailure()); |
CHECK(new_space->Contains(array)); |
} |
@@ -941,12 +947,12 @@ |
int fixed_array_len = LenFromSize(to_fill); |
CHECK(fixed_array_len < FixedArray::kMaxLength); |
- CHECK(!Heap::always_allocate()); |
- Object* array = |
- Heap::AllocateFixedArray(fixed_array_len)->ToObjectChecked(); |
+ CHECK(!HEAP->always_allocate()); |
+ Object* array = HEAP->AllocateFixedArray(fixed_array_len)->ToObjectChecked(); |
+ CHECK(!array->IsFailure()); |
CHECK(new_space->Contains(array)); |
- Object* object = Heap::AllocateJSObjectFromMap(*my_map)->ToObjectChecked(); |
+ Object* object = HEAP->AllocateJSObjectFromMap(*my_map)->ToObjectChecked(); |
CHECK(new_space->Contains(object)); |
JSObject* jsobject = JSObject::cast(object); |
CHECK_EQ(0, FixedArray::cast(jsobject->elements())->length()); |
@@ -958,15 +964,15 @@ |
// Step 4: clone jsobject, but force always allocate first to create a clone |
// in old pointer space. |
- Address old_pointer_space_top = Heap::old_pointer_space()->top(); |
+ Address old_pointer_space_top = HEAP->old_pointer_space()->top(); |
AlwaysAllocateScope aa_scope; |
- Object* clone_obj = Heap::CopyJSObject(jsobject)->ToObjectChecked(); |
+ Object* clone_obj = HEAP->CopyJSObject(jsobject)->ToObjectChecked(); |
JSObject* clone = JSObject::cast(clone_obj); |
if (clone->address() != old_pointer_space_top) { |
// Alas, got allocated from free list, we cannot do checks. |
return; |
} |
- CHECK(Heap::old_pointer_space()->Contains(clone->address())); |
+ CHECK(HEAP->old_pointer_space()->Contains(clone->address())); |
// Step 5: verify validity of region dirty marks. |
Address clone_addr = clone->address(); |
@@ -988,7 +994,7 @@ |
" var z = x + y;" |
"};" |
"foo()"; |
- Handle<String> foo_name = Factory::LookupAsciiSymbol("foo"); |
+ Handle<String> foo_name = FACTORY->LookupAsciiSymbol("foo"); |
// This compile will add the code to the compilation cache. |
{ v8::HandleScope scope; |
@@ -996,23 +1002,23 @@ |
} |
// Check function is compiled. |
- Object* func_value = |
- Top::context()->global()->GetProperty(*foo_name)->ToObjectChecked(); |
+ Object* func_value = Isolate::Current()->context()->global()-> |
+ GetProperty(*foo_name)->ToObjectChecked(); |
CHECK(func_value->IsJSFunction()); |
Handle<JSFunction> function(JSFunction::cast(func_value)); |
CHECK(function->shared()->is_compiled()); |
- Heap::CollectAllGarbage(true); |
- Heap::CollectAllGarbage(true); |
+ HEAP->CollectAllGarbage(true); |
+ HEAP->CollectAllGarbage(true); |
CHECK(function->shared()->is_compiled()); |
- Heap::CollectAllGarbage(true); |
- Heap::CollectAllGarbage(true); |
- Heap::CollectAllGarbage(true); |
- Heap::CollectAllGarbage(true); |
- Heap::CollectAllGarbage(true); |
- Heap::CollectAllGarbage(true); |
+ HEAP->CollectAllGarbage(true); |
+ HEAP->CollectAllGarbage(true); |
+ HEAP->CollectAllGarbage(true); |
+ HEAP->CollectAllGarbage(true); |
+ HEAP->CollectAllGarbage(true); |
+ HEAP->CollectAllGarbage(true); |
// foo should no longer be in the compilation cache |
CHECK(!function->shared()->is_compiled() || function->IsOptimized()); |
@@ -1027,7 +1033,7 @@ |
// Count the number of global contexts in the weak list of global contexts. |
static int CountGlobalContexts() { |
int count = 0; |
- Object* object = Heap::global_contexts_list(); |
+ Object* object = HEAP->global_contexts_list(); |
while (!object->IsUndefined()) { |
count++; |
object = Context::cast(object)->get(Context::NEXT_CONTEXT_LINK); |
@@ -1051,6 +1057,8 @@ |
TEST(TestInternalWeakLists) { |
+ v8::V8::Initialize(); |
+ |
static const int kNumTestContexts = 10; |
v8::HandleScope scope; |
@@ -1094,35 +1102,35 @@ |
// Scavenge treats these references as strong. |
for (int j = 0; j < 10; j++) { |
- Heap::PerformScavenge(); |
+ HEAP->PerformScavenge(); |
CHECK_EQ(opt ? 5 : 0, CountOptimizedUserFunctions(ctx[i])); |
} |
// Mark compact handles the weak references. |
- Heap::CollectAllGarbage(true); |
+ HEAP->CollectAllGarbage(true); |
CHECK_EQ(opt ? 4 : 0, CountOptimizedUserFunctions(ctx[i])); |
// Get rid of f3 and f5 in the same way. |
CompileRun("f3=null"); |
for (int j = 0; j < 10; j++) { |
- Heap::PerformScavenge(); |
+ HEAP->PerformScavenge(); |
CHECK_EQ(opt ? 4 : 0, CountOptimizedUserFunctions(ctx[i])); |
} |
- Heap::CollectAllGarbage(true); |
+ HEAP->CollectAllGarbage(true); |
CHECK_EQ(opt ? 3 : 0, CountOptimizedUserFunctions(ctx[i])); |
CompileRun("f5=null"); |
for (int j = 0; j < 10; j++) { |
- Heap::PerformScavenge(); |
+ HEAP->PerformScavenge(); |
CHECK_EQ(opt ? 3 : 0, CountOptimizedUserFunctions(ctx[i])); |
} |
- Heap::CollectAllGarbage(true); |
+ HEAP->CollectAllGarbage(true); |
CHECK_EQ(opt ? 2 : 0, CountOptimizedUserFunctions(ctx[i])); |
ctx[i]->Exit(); |
} |
// Force compilation cache cleanup. |
- Heap::CollectAllGarbage(true); |
+ HEAP->CollectAllGarbage(true); |
// Dispose the global contexts one by one. |
for (int i = 0; i < kNumTestContexts; i++) { |
@@ -1131,12 +1139,12 @@ |
// Scavenge treats these references as strong. |
for (int j = 0; j < 10; j++) { |
- Heap::PerformScavenge(); |
+ HEAP->PerformScavenge(); |
CHECK_EQ(kNumTestContexts - i, CountGlobalContexts()); |
} |
// Mark compact handles the weak references. |
- Heap::CollectAllGarbage(true); |
+ HEAP->CollectAllGarbage(true); |
CHECK_EQ(kNumTestContexts - i - 1, CountGlobalContexts()); |
} |
@@ -1148,10 +1156,10 @@ |
// causing a GC after the specified number of elements. |
static int CountGlobalContextsWithGC(int n) { |
int count = 0; |
- Handle<Object> object(Heap::global_contexts_list()); |
+ Handle<Object> object(HEAP->global_contexts_list()); |
while (!object->IsUndefined()) { |
count++; |
- if (count == n) Heap::CollectAllGarbage(true); |
+ if (count == n) HEAP->CollectAllGarbage(true); |
object = |
Handle<Object>(Context::cast(*object)->get(Context::NEXT_CONTEXT_LINK)); |
} |
@@ -1170,7 +1178,7 @@ |
while (object->IsJSFunction() && |
!Handle<JSFunction>::cast(object)->IsBuiltin()) { |
count++; |
- if (count == n) Heap::CollectAllGarbage(true); |
+ if (count == n) HEAP->CollectAllGarbage(true); |
object = Handle<Object>( |
Object::cast(JSFunction::cast(*object)->next_function_link())); |
} |
@@ -1179,6 +1187,8 @@ |
TEST(TestInternalWeakListsTraverseWithGC) { |
+ v8::V8::Initialize(); |
+ |
static const int kNumTestContexts = 10; |
v8::HandleScope scope; |
@@ -1228,7 +1238,7 @@ |
TEST(TestSizeOfObjectsVsHeapIteratorPrecision) { |
InitializeVM(); |
- intptr_t size_of_objects_1 = Heap::SizeOfObjects(); |
+ intptr_t size_of_objects_1 = HEAP->SizeOfObjects(); |
HeapIterator iterator(HeapIterator::kFilterFreeListNodes); |
intptr_t size_of_objects_2 = 0; |
for (HeapObject* obj = iterator.next(); |
@@ -1283,10 +1293,10 @@ |
InitializeVM(); |
v8::HandleScope scope; |
CompileRun("a = {}; b = {};"); |
- v8::Handle<Object> a(Top::context()->global()->GetProperty( |
- *Factory::LookupAsciiSymbol("a"))->ToObjectChecked()); |
- v8::Handle<Object> b(Top::context()->global()->GetProperty( |
- *Factory::LookupAsciiSymbol("b"))->ToObjectChecked()); |
+ v8::Handle<Object> a(ISOLATE->context()->global()->GetProperty( |
+ *FACTORY->LookupAsciiSymbol("a"))->ToObjectChecked()); |
+ v8::Handle<Object> b(ISOLATE->context()->global()->GetProperty( |
+ *FACTORY->LookupAsciiSymbol("b"))->ToObjectChecked()); |
CHECK_NE(*a, *b); |
{ |
HeapIteratorTestHelper helper(*a, *b); |
@@ -1294,8 +1304,8 @@ |
CHECK(helper.a_found()); |
CHECK(helper.b_found()); |
} |
- CHECK(Top::context()->global()->DeleteProperty( |
- *Factory::LookupAsciiSymbol("a"), JSObject::FORCE_DELETION)); |
+ CHECK(ISOLATE->context()->global()->DeleteProperty( |
+ *FACTORY->LookupAsciiSymbol("a"), JSObject::FORCE_DELETION)); |
// We ensure that GC will not happen, so our raw pointer stays valid. |
AssertNoAllocation no_alloc; |
Object* a_saved = *a; |