X64: Omitted creating native builtins and using them in test-heap.
This allows test-heap to run successfully. Review URL: http://codereview.chromium.org/115706 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2034 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
cc619a34ef
commit
e9f1a09f9d
@ -1087,6 +1087,12 @@ bool Genesis::InstallNatives() {
|
||||
global_context()->set_empty_script(*script);
|
||||
}
|
||||
|
||||
#ifdef V8_HOST_ARCH_64_BIT
|
||||
// TODO(X64): Reenable remaining initialization when code generation works.
|
||||
return true;
|
||||
#endif // V8_HOST_ARCH_64_BIT
|
||||
|
||||
|
||||
if (FLAG_natives_file == NULL) {
|
||||
// Without natives file, install default natives.
|
||||
for (int i = Natives::GetDelayCount();
|
||||
@ -1532,6 +1538,7 @@ Genesis::Genesis(Handle<Object> global_object,
|
||||
SaveContext context;
|
||||
|
||||
CreateRoots(global_template, global_object);
|
||||
|
||||
if (!InstallNatives()) return;
|
||||
|
||||
MakeFunctionInstancePrototypeWritable();
|
||||
|
@ -800,6 +800,8 @@ class UpdateRSetVisitor: public ObjectVisitor {
|
||||
|
||||
|
||||
int Heap::UpdateRSet(HeapObject* obj) {
|
||||
#ifndef V8_HOST_ARCH_64_BIT
|
||||
// TODO(X64) Reenable RSet when we have a working 64-bit layout of Page.
|
||||
ASSERT(!InNewSpace(obj));
|
||||
// Special handling of fixed arrays to iterate the body based on the start
|
||||
// address and offset. Just iterating the pointers as in UpdateRSetVisitor
|
||||
@ -821,6 +823,7 @@ int Heap::UpdateRSet(HeapObject* obj) {
|
||||
UpdateRSetVisitor v;
|
||||
obj->Iterate(&v);
|
||||
}
|
||||
#endif // V8_HOST_ARCH_64_BIT
|
||||
return obj->Size();
|
||||
}
|
||||
|
||||
|
@ -764,9 +764,11 @@ Failure* Failure::RetryAfterGC(int requested_bytes) {
|
||||
|
||||
Failure* Failure::Construct(Type type, int value) {
|
||||
int info = (value << kFailureTypeTagSize) | type;
|
||||
// TODO(X64): Stop using Smi validation for non-smi checks, even if they
|
||||
// happen to be identical at the moment.
|
||||
ASSERT(Smi::IsValid(info)); // Same validation check as in Smi
|
||||
return reinterpret_cast<Failure*>(
|
||||
static_cast<intptr_t>((info << kFailureTagSize) | kFailureTag));
|
||||
(static_cast<intptr_t>(info) << kFailureTagSize) | kFailureTag);
|
||||
}
|
||||
|
||||
|
||||
|
@ -536,6 +536,9 @@ void Failure::FailurePrint() {
|
||||
|
||||
Failure* Failure::RetryAfterGC(int requested_bytes, AllocationSpace space) {
|
||||
ASSERT((space & ~kSpaceTagMask) == 0);
|
||||
// TODO(X64): Stop using Smi validation for non-smi checks, even if they
|
||||
// happen to be identical at the moment.
|
||||
|
||||
int requested = requested_bytes >> kObjectAlignmentBits;
|
||||
int value = (requested << kSpaceTagSize) | space;
|
||||
// We can't very well allocate a heap number in this situation, and if the
|
||||
|
@ -159,9 +159,14 @@ void Page::UnsetRSet(Address address, int offset) {
|
||||
|
||||
|
||||
bool Page::IsRSetSet(Address address, int offset) {
|
||||
#ifdef V8_HOST_ARCH_64_BIT
|
||||
// TODO(X64): Reenable when RSet works.
|
||||
return true;
|
||||
#else // V8_HOST_ARCH_64_BIT
|
||||
uint32_t bitmask = 0;
|
||||
Address rset_address = ComputeRSetBitPosition(address, offset, &bitmask);
|
||||
return (Memory::uint32_at(rset_address) & bitmask) != 0;
|
||||
#endif // V8_HOST_ARCH_64_BIT
|
||||
}
|
||||
|
||||
|
||||
|
@ -36,34 +36,43 @@ 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, Array::kHeaderSize);
|
||||
CheckMap(Heap::fixed_array_map(), FIXED_ARRAY_TYPE, Array::kAlignedSize);
|
||||
CheckMap(Heap::long_string_map(), LONG_STRING_TYPE,
|
||||
SeqTwoByteString::kHeaderSize);
|
||||
SeqTwoByteString::kAlignedSize);
|
||||
}
|
||||
|
||||
|
||||
static void CheckOddball(Object* obj, const char* string) {
|
||||
CHECK(obj->IsOddball());
|
||||
#ifndef V8_HOST_ARCH_64_BIT
|
||||
// TODO(X64): Reenable when native builtins work.
|
||||
bool exc;
|
||||
Object* print_string = *Execution::ToString(Handle<Object>(obj), &exc);
|
||||
CHECK(String::cast(print_string)->IsEqualTo(CStrVector(string)));
|
||||
#endif // V8_HOST_ARCH_64_BIT
|
||||
}
|
||||
|
||||
|
||||
static void CheckSmi(int value, const char* string) {
|
||||
#ifndef V8_HOST_ARCH_64_BIT
|
||||
// TODO(X64): Reenable when native builtins work.
|
||||
bool exc;
|
||||
Object* print_string =
|
||||
*Execution::ToString(Handle<Object>(Smi::FromInt(value)), &exc);
|
||||
CHECK(String::cast(print_string)->IsEqualTo(CStrVector(string)));
|
||||
#endif // V8_HOST_ARCH_64_BIT
|
||||
}
|
||||
|
||||
|
||||
static void CheckNumber(double value, const char* string) {
|
||||
Object* obj = Heap::NumberFromDouble(value);
|
||||
CHECK(obj->IsNumber());
|
||||
#ifndef V8_HOST_ARCH_64_BIT
|
||||
// TODO(X64): Reenable when native builtins work.
|
||||
bool exc;
|
||||
Object* print_string = *Execution::ToString(Handle<Object>(obj), &exc);
|
||||
CHECK(String::cast(print_string)->IsEqualTo(CStrVector(string)));
|
||||
#endif // V8_HOST_ARCH_64_BIT
|
||||
}
|
||||
|
||||
|
||||
@ -178,12 +187,16 @@ TEST(HeapObjects) {
|
||||
|
||||
TEST(Tagging) {
|
||||
InitializeVM();
|
||||
int request = 24;
|
||||
ASSERT_EQ(request, OBJECT_SIZE_ALIGN(request));
|
||||
CHECK(Smi::FromInt(42)->IsSmi());
|
||||
CHECK(Failure::RetryAfterGC(12, NEW_SPACE)->IsFailure());
|
||||
CHECK_EQ(12, Failure::RetryAfterGC(12, NEW_SPACE)->requested());
|
||||
CHECK_EQ(NEW_SPACE, Failure::RetryAfterGC(12, NEW_SPACE)->allocation_space());
|
||||
CHECK(Failure::RetryAfterGC(request, NEW_SPACE)->IsFailure());
|
||||
CHECK_EQ(request, Failure::RetryAfterGC(request, NEW_SPACE)->requested());
|
||||
CHECK_EQ(NEW_SPACE,
|
||||
Failure::RetryAfterGC(request, NEW_SPACE)->allocation_space());
|
||||
CHECK_EQ(OLD_POINTER_SPACE,
|
||||
Failure::RetryAfterGC(12, OLD_POINTER_SPACE)->allocation_space());
|
||||
Failure::RetryAfterGC(request,
|
||||
OLD_POINTER_SPACE)->allocation_space());
|
||||
CHECK(Failure::Exception()->IsFailure());
|
||||
CHECK(Smi::FromInt(Smi::kMinValue)->IsSmi());
|
||||
CHECK(Smi::FromInt(Smi::kMaxValue)->IsSmi());
|
||||
|
Loading…
Reference in New Issue
Block a user