diff options
author | John Reck <jreck@google.com> | 2010-11-02 12:39:01 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2010-11-02 12:40:32 -0700 |
commit | 5913587db4c6bab03d97bfe44b06289fd6d7270d (patch) | |
tree | 96ab490452936f90e6e51a0ef86baee781c7dc46 /test/cctest | |
parent | f87a203d89e1bbb6708282e0b64dbd13d59b723d (diff) | |
download | android_external_v8-5913587db4c6bab03d97bfe44b06289fd6d7270d.tar.gz android_external_v8-5913587db4c6bab03d97bfe44b06289fd6d7270d.tar.bz2 android_external_v8-5913587db4c6bab03d97bfe44b06289fd6d7270d.zip |
Update V8 to r5716 as required by WebKit r70949
Change-Id: I0d5cd05bb0427af33e5c9f6efdc209366a32bde3
Diffstat (limited to 'test/cctest')
-rw-r--r-- | test/cctest/test-alloc.cc | 7 | ||||
-rw-r--r-- | test/cctest/test-api.cc | 80 | ||||
-rw-r--r-- | test/cctest/test-assembler-arm.cc | 49 | ||||
-rw-r--r-- | test/cctest/test-assembler-ia32.cc | 62 | ||||
-rw-r--r-- | test/cctest/test-compiler.cc | 22 | ||||
-rw-r--r-- | test/cctest/test-disasm-ia32.cc | 7 | ||||
-rw-r--r-- | test/cctest/test-heap.cc | 159 | ||||
-rw-r--r-- | test/cctest/test-log-stack-tracer.cc | 36 | ||||
-rw-r--r-- | test/cctest/test-log.cc | 4 | ||||
-rw-r--r-- | test/cctest/test-mark-compact.cc | 95 | ||||
-rw-r--r-- | test/cctest/test-serialize.cc | 14 | ||||
-rw-r--r-- | test/cctest/test-spaces.cc | 18 | ||||
-rw-r--r-- | test/cctest/test-strings.cc | 2 | ||||
-rw-r--r-- | test/cctest/test-strtod.cc | 48 |
14 files changed, 342 insertions, 261 deletions
diff --git a/test/cctest/test-alloc.cc b/test/cctest/test-alloc.cc index 2936d6e7..fcf2ce4f 100644 --- a/test/cctest/test-alloc.cc +++ b/test/cctest/test-alloc.cc @@ -35,7 +35,7 @@ using namespace v8::internal; -static Object* AllocateAfterFailures() { +static MaybeObject* AllocateAfterFailures() { static int attempts = 0; if (++attempts < 3) return Failure::RetryAfterGC(); @@ -60,7 +60,8 @@ static Object* AllocateAfterFailures() { CHECK(!Heap::AllocateFixedArray(100)->IsFailure()); CHECK(!Heap::AllocateHeapNumber(0.42)->IsFailure()); CHECK(!Heap::AllocateArgumentsObject(Smi::FromInt(87), 10)->IsFailure()); - Object* object = Heap::AllocateJSObject(*Top::object_function()); + Object* object = + Heap::AllocateJSObject(*Top::object_function())->ToObjectChecked(); CHECK(!Heap::CopyJSObject(JSObject::cast(object))->IsFailure()); // Old data space. @@ -111,7 +112,7 @@ TEST(StressHandles) { } -static Object* TestAccessorGet(Object* object, void*) { +static MaybeObject* TestAccessorGet(Object* object, void*) { return AllocateAfterFailures(); } diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc index fd44aec4..6eb15d8f 100644 --- a/test/cctest/test-api.cc +++ b/test/cctest/test-api.cc @@ -9278,7 +9278,9 @@ class RegExpStringModificationTest { // Inject the input as a global variable. i::Handle<i::String> input_name = i::Factory::NewStringFromAscii(i::Vector<const char>("input", 5)); - i::Top::global_context()->global()->SetProperty(*input_name, *input_, NONE); + i::Top::global_context()->global()->SetProperty(*input_name, + *input_, + NONE)->ToObjectChecked(); MorphThread morph_thread(this); @@ -9750,7 +9752,7 @@ THREADED_TEST(PixelArray) { // Set the elements to be the pixels. // jsobj->set_elements(*pixels); obj->SetIndexedPropertiesToPixelData(pixel_data, kElementCount); - CHECK_EQ(1, i::Smi::cast(jsobj->GetElement(1))->value()); + CHECK_EQ(1, i::Smi::cast(jsobj->GetElement(1)->ToObjectChecked())->value()); obj->Set(v8_str("field"), v8::Int32::New(1503)); context->Global()->Set(v8_str("pixels"), obj); v8::Handle<v8::Value> result = CompileRun("pixels.field"); @@ -9802,27 +9804,34 @@ THREADED_TEST(PixelArray) { i::Handle<i::Smi> value(i::Smi::FromInt(2)); i::SetElement(jsobj, 1, value); - CHECK_EQ(2, i::Smi::cast(jsobj->GetElement(1))->value()); + CHECK_EQ(2, i::Smi::cast(jsobj->GetElement(1)->ToObjectChecked())->value()); *value.location() = i::Smi::FromInt(256); i::SetElement(jsobj, 1, value); - CHECK_EQ(255, i::Smi::cast(jsobj->GetElement(1))->value()); + CHECK_EQ(255, + i::Smi::cast(jsobj->GetElement(1)->ToObjectChecked())->value()); *value.location() = i::Smi::FromInt(-1); i::SetElement(jsobj, 1, value); - CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(1))->value()); + CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(1)->ToObjectChecked())->value()); result = CompileRun("for (var i = 0; i < 8; i++) {" " pixels[i] = (i * 65) - 109;" "}" "pixels[1] + pixels[6];"); CHECK_EQ(255, result->Int32Value()); - CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(0))->value()); - CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(1))->value()); - CHECK_EQ(21, i::Smi::cast(jsobj->GetElement(2))->value()); - CHECK_EQ(86, i::Smi::cast(jsobj->GetElement(3))->value()); - CHECK_EQ(151, i::Smi::cast(jsobj->GetElement(4))->value()); - CHECK_EQ(216, i::Smi::cast(jsobj->GetElement(5))->value()); - CHECK_EQ(255, i::Smi::cast(jsobj->GetElement(6))->value()); - CHECK_EQ(255, i::Smi::cast(jsobj->GetElement(7))->value()); + CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(0)->ToObjectChecked())->value()); + CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(1)->ToObjectChecked())->value()); + CHECK_EQ(21, + i::Smi::cast(jsobj->GetElement(2)->ToObjectChecked())->value()); + CHECK_EQ(86, + i::Smi::cast(jsobj->GetElement(3)->ToObjectChecked())->value()); + CHECK_EQ(151, + i::Smi::cast(jsobj->GetElement(4)->ToObjectChecked())->value()); + CHECK_EQ(216, + i::Smi::cast(jsobj->GetElement(5)->ToObjectChecked())->value()); + CHECK_EQ(255, + i::Smi::cast(jsobj->GetElement(6)->ToObjectChecked())->value()); + CHECK_EQ(255, + i::Smi::cast(jsobj->GetElement(7)->ToObjectChecked())->value()); result = CompileRun("var sum = 0;" "for (var i = 0; i < 8; i++) {" " sum += pixels[i];" @@ -9835,49 +9844,50 @@ THREADED_TEST(PixelArray) { "}" "pixels[1] + pixels[6];"); CHECK_EQ(8, result->Int32Value()); - CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(0))->value()); - CHECK_EQ(1, i::Smi::cast(jsobj->GetElement(1))->value()); - CHECK_EQ(2, i::Smi::cast(jsobj->GetElement(2))->value()); - CHECK_EQ(3, i::Smi::cast(jsobj->GetElement(3))->value()); - CHECK_EQ(4, i::Smi::cast(jsobj->GetElement(4))->value()); - CHECK_EQ(6, i::Smi::cast(jsobj->GetElement(5))->value()); - CHECK_EQ(7, i::Smi::cast(jsobj->GetElement(6))->value()); - CHECK_EQ(8, i::Smi::cast(jsobj->GetElement(7))->value()); + CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(0)->ToObjectChecked())->value()); + CHECK_EQ(1, i::Smi::cast(jsobj->GetElement(1)->ToObjectChecked())->value()); + CHECK_EQ(2, i::Smi::cast(jsobj->GetElement(2)->ToObjectChecked())->value()); + CHECK_EQ(3, i::Smi::cast(jsobj->GetElement(3)->ToObjectChecked())->value()); + CHECK_EQ(4, i::Smi::cast(jsobj->GetElement(4)->ToObjectChecked())->value()); + CHECK_EQ(6, i::Smi::cast(jsobj->GetElement(5)->ToObjectChecked())->value()); + CHECK_EQ(7, i::Smi::cast(jsobj->GetElement(6)->ToObjectChecked())->value()); + CHECK_EQ(8, i::Smi::cast(jsobj->GetElement(7)->ToObjectChecked())->value()); result = CompileRun("for (var i = 0; i < 8; i++) {" " pixels[7] = undefined;" "}" "pixels[7];"); CHECK_EQ(0, result->Int32Value()); - CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(7))->value()); + CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(7)->ToObjectChecked())->value()); result = CompileRun("for (var i = 0; i < 8; i++) {" " pixels[6] = '2.3';" "}" "pixels[6];"); CHECK_EQ(2, result->Int32Value()); - CHECK_EQ(2, i::Smi::cast(jsobj->GetElement(6))->value()); + CHECK_EQ(2, i::Smi::cast(jsobj->GetElement(6)->ToObjectChecked())->value()); result = CompileRun("for (var i = 0; i < 8; i++) {" " pixels[5] = NaN;" "}" "pixels[5];"); CHECK_EQ(0, result->Int32Value()); - CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(5))->value()); + CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(5)->ToObjectChecked())->value()); result = CompileRun("for (var i = 0; i < 8; i++) {" " pixels[8] = Infinity;" "}" "pixels[8];"); CHECK_EQ(255, result->Int32Value()); - CHECK_EQ(255, i::Smi::cast(jsobj->GetElement(8))->value()); + CHECK_EQ(255, + i::Smi::cast(jsobj->GetElement(8)->ToObjectChecked())->value()); result = CompileRun("for (var i = 0; i < 8; i++) {" " pixels[9] = -Infinity;" "}" "pixels[9];"); CHECK_EQ(0, result->Int32Value()); - CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(9))->value()); + CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(9)->ToObjectChecked())->value()); result = CompileRun("pixels[3] = 33;" "delete pixels[3];" @@ -9987,7 +9997,8 @@ static void ExternalArrayTestHelper(v8::ExternalArrayType array_type, obj->SetIndexedPropertiesToExternalArrayData(array_data, array_type, kElementCount); - CHECK_EQ(1, static_cast<int>(jsobj->GetElement(1)->Number())); + CHECK_EQ( + 1, static_cast<int>(jsobj->GetElement(1)->ToObjectChecked()->Number())); obj->Set(v8_str("field"), v8::Int32::New(1503)); context->Global()->Set(v8_str("ext_array"), obj); v8::Handle<v8::Value> result = CompileRun("ext_array.field"); @@ -10126,14 +10137,16 @@ static void ExternalArrayTestHelper(v8::ExternalArrayType array_type, "}" "ext_array[7];"); CHECK_EQ(0, result->Int32Value()); - CHECK_EQ(0, static_cast<int>(jsobj->GetElement(7)->Number())); + CHECK_EQ( + 0, static_cast<int>(jsobj->GetElement(7)->ToObjectChecked()->Number())); result = CompileRun("for (var i = 0; i < 8; i++) {" " ext_array[6] = '2.3';" "}" "ext_array[6];"); CHECK_EQ(2, result->Int32Value()); - CHECK_EQ(2, static_cast<int>(jsobj->GetElement(6)->Number())); + CHECK_EQ( + 2, static_cast<int>(jsobj->GetElement(6)->ToObjectChecked()->Number())); if (array_type != v8::kExternalFloatArray) { // Though the specification doesn't state it, be explicit about @@ -10146,7 +10159,8 @@ static void ExternalArrayTestHelper(v8::ExternalArrayType array_type, "}" "ext_array[5];"); CHECK_EQ(0, result->Int32Value()); - CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(5))->value()); + CHECK_EQ(0, + i::Smi::cast(jsobj->GetElement(5)->ToObjectChecked())->value()); result = CompileRun("for (var i = 0; i < 8; i++) {" " ext_array[i] = 5;" @@ -10156,7 +10170,8 @@ static void ExternalArrayTestHelper(v8::ExternalArrayType array_type, "}" "ext_array[5];"); CHECK_EQ(0, result->Int32Value()); - CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(5))->value()); + CHECK_EQ(0, + i::Smi::cast(jsobj->GetElement(5)->ToObjectChecked())->value()); result = CompileRun("for (var i = 0; i < 8; i++) {" " ext_array[i] = 5;" @@ -10166,7 +10181,8 @@ static void ExternalArrayTestHelper(v8::ExternalArrayType array_type, "}" "ext_array[5];"); CHECK_EQ(0, result->Int32Value()); - CHECK_EQ(0, i::Smi::cast(jsobj->GetElement(5))->value()); + CHECK_EQ(0, + i::Smi::cast(jsobj->GetElement(5)->ToObjectChecked())->value()); } result = CompileRun("ext_array[3] = 33;" diff --git a/test/cctest/test-assembler-arm.cc b/test/cctest/test-assembler-arm.cc index 7c669d30..4f90b613 100644 --- a/test/cctest/test-assembler-arm.cc +++ b/test/cctest/test-assembler-arm.cc @@ -69,9 +69,10 @@ TEST(0) { CodeDesc desc; assm.GetCode(&desc); - Object* code = Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value())); + Object* code = Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked(); CHECK(code->IsCode()); #ifdef DEBUG Code::cast(code)->Print(); @@ -105,9 +106,10 @@ TEST(1) { CodeDesc desc; assm.GetCode(&desc); - Object* code = Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value())); + Object* code = Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked(); CHECK(code->IsCode()); #ifdef DEBUG Code::cast(code)->Print(); @@ -150,9 +152,10 @@ TEST(2) { CodeDesc desc; assm.GetCode(&desc); - Object* code = Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value())); + Object* code = Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked(); CHECK(code->IsCode()); #ifdef DEBUG Code::cast(code)->Print(); @@ -197,9 +200,10 @@ TEST(3) { CodeDesc desc; assm.GetCode(&desc); - Object* code = Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value())); + Object* code = Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked(); CHECK(code->IsCode()); #ifdef DEBUG Code::cast(code)->Print(); @@ -290,9 +294,10 @@ TEST(4) { CodeDesc desc; assm.GetCode(&desc); - Object* code = Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value())); + Object* code = Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked(); CHECK(code->IsCode()); #ifdef DEBUG Code::cast(code)->Print(); @@ -341,9 +346,10 @@ TEST(5) { CodeDesc desc; assm.GetCode(&desc); - Object* code = Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value())); + Object* code = Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked(); CHECK(code->IsCode()); #ifdef DEBUG Code::cast(code)->Print(); @@ -375,9 +381,10 @@ TEST(6) { CodeDesc desc; assm.GetCode(&desc); - Object* code = Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value())); + Object* code = Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked(); CHECK(code->IsCode()); #ifdef DEBUG Code::cast(code)->Print(); diff --git a/test/cctest/test-assembler-ia32.cc b/test/cctest/test-assembler-ia32.cc index b60865de..40232ef5 100644 --- a/test/cctest/test-assembler-ia32.cc +++ b/test/cctest/test-assembler-ia32.cc @@ -71,7 +71,8 @@ TEST(AssemblerIa320) { assm.GetCode(&desc); Object* code = Heap::CreateCode(desc, Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value())); + Handle<Object>(Heap::undefined_value()))-> + ToObjectChecked(); CHECK(code->IsCode()); #ifdef DEBUG Code::cast(code)->Print(); @@ -108,7 +109,8 @@ TEST(AssemblerIa321) { assm.GetCode(&desc); Object* code = Heap::CreateCode(desc, Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value())); + Handle<Object>(Heap::undefined_value()))-> + ToObjectChecked(); CHECK(code->IsCode()); #ifdef DEBUG Code::cast(code)->Print(); @@ -147,9 +149,11 @@ TEST(AssemblerIa322) { CodeDesc desc; assm.GetCode(&desc); - Object* code = Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value())); + Object* code = Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked(); + CHECK(code->IsCode()); #ifdef DEBUG Code::cast(code)->Print(); @@ -180,10 +184,10 @@ TEST(AssemblerIa323) { CodeDesc desc; assm.GetCode(&desc); - Code* code = - Code::cast(Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value()))); + Code* code = Code::cast(Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked()); // don't print the code - our disassembler can't handle cvttss2si // instead print bytes Disassembler::Dump(stdout, @@ -214,10 +218,10 @@ TEST(AssemblerIa324) { CodeDesc desc; assm.GetCode(&desc); - Code* code = - Code::cast(Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value()))); + Code* code = Code::cast(Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked()); // don't print the code - our disassembler can't handle cvttsd2si // instead print bytes Disassembler::Dump(stdout, @@ -243,10 +247,10 @@ TEST(AssemblerIa325) { CodeDesc desc; assm.GetCode(&desc); - Code* code = - Code::cast(Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value()))); + Code* code = Code::cast(Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked()); F0 f = FUNCTION_CAST<F0>(code->entry()); int res = f(); CHECK_EQ(42, res); @@ -280,10 +284,10 @@ TEST(AssemblerIa326) { CodeDesc desc; assm.GetCode(&desc); - Code* code = - Code::cast(Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value()))); + Code* code = Code::cast(Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked()); #ifdef DEBUG ::printf("\n---\n"); // don't print the code - our disassembler can't handle SSE instructions @@ -320,10 +324,10 @@ TEST(AssemblerIa328) { __ ret(0); CodeDesc desc; assm.GetCode(&desc); - Code* code = - Code::cast(Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value()))); + Code* code = Code::cast(Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked()); CHECK(code->IsCode()); #ifdef DEBUG Code::cast(code)->Print(); @@ -375,10 +379,10 @@ TEST(AssemblerIa329) { CodeDesc desc; assm.GetCode(&desc); - Code* code = - Code::cast(Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value()))); + Code* code = Code::cast(Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked()); CHECK(code->IsCode()); #ifdef DEBUG Code::cast(code)->Print(); diff --git a/test/cctest/test-compiler.cc b/test/cctest/test-compiler.cc index 96549a37..b424b7f9 100644 --- a/test/cctest/test-compiler.cc +++ b/test/cctest/test-compiler.cc @@ -98,7 +98,7 @@ static void InitializeVM() { } -static Object* GetGlobalProperty(const char* name) { +static MaybeObject* GetGlobalProperty(const char* name) { Handle<String> symbol = Factory::LookupAsciiSymbol(name); return Top::context()->global()->GetProperty(*symbol); } @@ -140,7 +140,7 @@ static double Inc(int x) { Handle<JSObject> global(Top::context()->global()); Execution::Call(fun, global, 0, NULL, &has_pending_exception); CHECK(!has_pending_exception); - return GetGlobalProperty("result")->Number(); + return GetGlobalProperty("result")->ToObjectChecked()->Number(); } @@ -161,7 +161,7 @@ static double Add(int x, int y) { Handle<JSObject> global(Top::context()->global()); Execution::Call(fun, global, 0, NULL, &has_pending_exception); CHECK(!has_pending_exception); - return GetGlobalProperty("result")->Number(); + return GetGlobalProperty("result")->ToObjectChecked()->Number(); } @@ -181,7 +181,7 @@ static double Abs(int x) { Handle<JSObject> global(Top::context()->global()); Execution::Call(fun, global, 0, NULL, &has_pending_exception); CHECK(!has_pending_exception); - return GetGlobalProperty("result")->Number(); + return GetGlobalProperty("result")->ToObjectChecked()->Number(); } @@ -202,7 +202,7 @@ static double Sum(int n) { Handle<JSObject> global(Top::context()->global()); Execution::Call(fun, global, 0, NULL, &has_pending_exception); CHECK(!has_pending_exception); - return GetGlobalProperty("result")->Number(); + return GetGlobalProperty("result")->ToObjectChecked()->Number(); } @@ -256,7 +256,7 @@ TEST(Stuff) { Handle<JSObject> global(Top::context()->global()); Execution::Call(fun, global, 0, NULL, &has_pending_exception); CHECK(!has_pending_exception); - CHECK_EQ(511.0, GetGlobalProperty("r")->Number()); + CHECK_EQ(511.0, GetGlobalProperty("r")->ToObjectChecked()->Number()); } @@ -272,7 +272,7 @@ TEST(UncaughtThrow) { Handle<Object> result = Execution::Call(fun, global, 0, NULL, &has_pending_exception); CHECK(has_pending_exception); - CHECK_EQ(42.0, Top::pending_exception()->Number()); + CHECK_EQ(42.0, Top::pending_exception()->ToObjectChecked()->Number()); } @@ -297,10 +297,10 @@ TEST(C2JSFrames) { Execution::Call(fun0, global, 0, NULL, &has_pending_exception); CHECK(!has_pending_exception); - Handle<Object> fun1 = - Handle<Object>( - Top::context()->global()->GetProperty( - *Factory::LookupAsciiSymbol("foo"))); + Object* foo_symbol = Factory::LookupAsciiSymbol("foo")->ToObjectChecked(); + MaybeObject* fun1_object = + Top::context()->global()->GetProperty(String::cast(foo_symbol)); + Handle<Object> fun1(fun1_object->ToObjectChecked()); CHECK(fun1->IsJSFunction()); Object** argv[1] = { diff --git a/test/cctest/test-disasm-ia32.cc b/test/cctest/test-disasm-ia32.cc index b53eaaa2..5cd56acf 100644 --- a/test/cctest/test-disasm-ia32.cc +++ b/test/cctest/test-disasm-ia32.cc @@ -438,9 +438,10 @@ TEST(DisasmIa320) { CodeDesc desc; assm.GetCode(&desc); - Object* code = Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value())); + Object* code = Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked(); CHECK(code->IsCode()); #ifdef DEBUG Code::cast(code)->Print(); diff --git a/test/cctest/test-heap.cc b/test/cctest/test-heap.cc index 126ac21a..94d05555 100644 --- a/test/cctest/test-heap.cc +++ b/test/cctest/test-heap.cc @@ -58,7 +58,7 @@ static void CheckSmi(int value, const char* string) { static void CheckNumber(double value, const char* string) { - Object* obj = Heap::NumberFromDouble(value); + Object* obj = Heap::NumberFromDouble(value)->ToObjectChecked(); CHECK(obj->IsNumber()); bool exc; Object* print_string = *Execution::ToString(Handle<Object>(obj), &exc); @@ -76,9 +76,10 @@ static void CheckFindCodeObject() { CodeDesc desc; assm.GetCode(&desc); - Object* code = Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value())); + Object* code = Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked(); CHECK(code->IsCode()); HeapObject* obj = HeapObject::cast(code); @@ -89,9 +90,10 @@ static void CheckFindCodeObject() { CHECK_EQ(code, found); } - Object* copy = Heap::CreateCode(desc, - Code::ComputeFlags(Code::STUB), - Handle<Object>(Heap::undefined_value())); + Object* copy = Heap::CreateCode( + desc, + Code::ComputeFlags(Code::STUB), + Handle<Object>(Heap::undefined_value()))->ToObjectChecked(); CHECK(copy->IsCode()); HeapObject* obj_copy = HeapObject::cast(copy); Object* not_right = Heap::FindCodeObject(obj_copy->address() + @@ -104,40 +106,42 @@ TEST(HeapObjects) { InitializeVM(); v8::HandleScope sc; - Object* value = Heap::NumberFromDouble(1.000123); + Object* value = Heap::NumberFromDouble(1.000123)->ToObjectChecked(); CHECK(value->IsHeapNumber()); CHECK(value->IsNumber()); CHECK_EQ(1.000123, value->Number()); - value = Heap::NumberFromDouble(1.0); + value = Heap::NumberFromDouble(1.0)->ToObjectChecked(); CHECK(value->IsSmi()); CHECK(value->IsNumber()); CHECK_EQ(1.0, value->Number()); - value = Heap::NumberFromInt32(1024); + value = Heap::NumberFromInt32(1024)->ToObjectChecked(); CHECK(value->IsSmi()); CHECK(value->IsNumber()); CHECK_EQ(1024.0, value->Number()); - value = Heap::NumberFromInt32(Smi::kMinValue); + 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); + 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); + value = Heap::NumberFromInt32(Smi::kMinValue - 1)->ToObjectChecked(); CHECK(value->IsHeapNumber()); CHECK(value->IsNumber()); CHECK_EQ(static_cast<double>(Smi::kMinValue - 1), value->Number()); #endif - value = Heap::NumberFromUint32(static_cast<uint32_t>(Smi::kMaxValue) + 1); + MaybeObject* maybe_value = + Heap::NumberFromUint32(static_cast<uint32_t>(Smi::kMaxValue) + 1); + value = maybe_value->ToObjectChecked(); CHECK(value->IsHeapNumber()); CHECK(value->IsNumber()); CHECK_EQ(static_cast<double>(static_cast<uint32_t>(Smi::kMaxValue) + 1), @@ -208,11 +212,13 @@ TEST(GarbageCollection) { Handle<Map> initial_map = Factory::NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize); function->set_initial_map(*initial_map); - Top::context()->global()->SetProperty(*name, *function, NONE); + Top::context()->global()->SetProperty(*name, + *function, + NONE)->ToObjectChecked(); // Allocate an object. Unrooted after leaving the scope. Handle<JSObject> obj = Factory::NewJSObject(function); - obj->SetProperty(*prop_name, Smi::FromInt(23), NONE); - obj->SetProperty(*prop_namex, Smi::FromInt(24), NONE); + obj->SetProperty(*prop_name, Smi::FromInt(23), NONE)->ToObjectChecked(); + obj->SetProperty(*prop_namex, Smi::FromInt(24), NONE)->ToObjectChecked(); CHECK_EQ(Smi::FromInt(23), obj->GetProperty(*prop_name)); CHECK_EQ(Smi::FromInt(24), obj->GetProperty(*prop_namex)); @@ -223,7 +229,8 @@ TEST(GarbageCollection) { // Function should be alive. CHECK(Top::context()->global()->HasLocalProperty(*name)); // Check function is retained. - Object* func_value = Top::context()->global()->GetProperty(*name); + Object* func_value = + Top::context()->global()->GetProperty(*name)->ToObjectChecked(); CHECK(func_value->IsJSFunction()); Handle<JSFunction> function(JSFunction::cast(func_value)); @@ -231,18 +238,22 @@ TEST(GarbageCollection) { HandleScope inner_scope; // Allocate another object, make it reachable from global. Handle<JSObject> obj = Factory::NewJSObject(function); - Top::context()->global()->SetProperty(*obj_name, *obj, NONE); - obj->SetProperty(*prop_name, Smi::FromInt(23), NONE); + Top::context()->global()->SetProperty(*obj_name, + *obj, + NONE)->ToObjectChecked(); + obj->SetProperty(*prop_name, Smi::FromInt(23), NONE)->ToObjectChecked(); } // After gc, it should survive. Heap::CollectGarbage(NEW_SPACE); CHECK(Top::context()->global()->HasLocalProperty(*obj_name)); - CHECK(Top::context()->global()->GetProperty(*obj_name)->IsJSObject()); - JSObject* obj = - JSObject::cast(Top::context()->global()->GetProperty(*obj_name)); - CHECK_EQ(Smi::FromInt(23), obj->GetProperty(*prop_name)); + CHECK(Top::context()->global()->GetProperty(*obj_name)->ToObjectChecked()-> + IsJSObject()); + Object* obj = + Top::context()->global()->GetProperty(*obj_name)->ToObjectChecked(); + JSObject* js_obj = JSObject::cast(obj); + CHECK_EQ(Smi::FromInt(23), js_obj->GetProperty(*prop_name)); } @@ -494,12 +505,14 @@ static const char* not_so_random_string_table[] = { static void CheckSymbols(const char** strings) { for (const char* string = *strings; *strings != 0; string = *strings++) { - Object* a = Heap::LookupAsciiSymbol(string); + Object* a; + MaybeObject* maybe_a = Heap::LookupAsciiSymbol(string); // LookupAsciiSymbol may return a failure if a GC is needed. - if (a->IsFailure()) continue; + if (!maybe_a->ToObject(&a)) continue; CHECK(a->IsSymbol()); - Object* b = Heap::LookupAsciiSymbol(string); - if (b->IsFailure()) continue; + Object* b; + MaybeObject* maybe_b = Heap::LookupAsciiSymbol(string); + if (!maybe_b->ToObject(&b)) continue; CHECK_EQ(b, a); CHECK(String::cast(b)->IsEqualTo(CStrVector(string))); } @@ -527,10 +540,12 @@ TEST(FunctionAllocation) { Handle<String> prop_name = Factory::LookupAsciiSymbol("theSlot"); Handle<JSObject> obj = Factory::NewJSObject(function); - obj->SetProperty(*prop_name, Smi::FromInt(23), NONE); + obj->SetProperty(*prop_name, Smi::FromInt(23), NONE)->ToObjectChecked(); CHECK_EQ(Smi::FromInt(23), obj->GetProperty(*prop_name)); // Check that we can add properties to function objects. - function->SetProperty(*prop_name, Smi::FromInt(24), NONE); + function->SetProperty(*prop_name, + Smi::FromInt(24), + NONE)->ToObjectChecked(); CHECK_EQ(Smi::FromInt(24), function->GetProperty(*prop_name)); } @@ -540,8 +555,9 @@ TEST(ObjectProperties) { v8::HandleScope sc; String* object_symbol = String::cast(Heap::Object_symbol()); - JSFunction* object_function = - JSFunction::cast(Top::context()->global()->GetProperty(object_symbol)); + Object* raw_object = + Top::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"); @@ -551,7 +567,7 @@ TEST(ObjectProperties) { CHECK(!obj->HasLocalProperty(*first)); // add first - obj->SetProperty(*first, Smi::FromInt(1), NONE); + obj->SetProperty(*first, Smi::FromInt(1), NONE)->ToObjectChecked(); CHECK(obj->HasLocalProperty(*first)); // delete first @@ -559,8 +575,8 @@ TEST(ObjectProperties) { CHECK(!obj->HasLocalProperty(*first)); // add first and then second - obj->SetProperty(*first, Smi::FromInt(1), NONE); - obj->SetProperty(*second, Smi::FromInt(2), NONE); + obj->SetProperty(*first, Smi::FromInt(1), NONE)->ToObjectChecked(); + obj->SetProperty(*second, Smi::FromInt(2), NONE)->ToObjectChecked(); CHECK(obj->HasLocalProperty(*first)); CHECK(obj->HasLocalProperty(*second)); @@ -572,8 +588,8 @@ TEST(ObjectProperties) { CHECK(!obj->HasLocalProperty(*second)); // add first and then second - obj->SetProperty(*first, Smi::FromInt(1), NONE); - obj->SetProperty(*second, Smi::FromInt(2), NONE); + obj->SetProperty(*first, Smi::FromInt(1), NONE)->ToObjectChecked(); + obj->SetProperty(*second, Smi::FromInt(2), NONE)->ToObjectChecked(); CHECK(obj->HasLocalProperty(*first)); CHECK(obj->HasLocalProperty(*second)); @@ -587,14 +603,14 @@ TEST(ObjectProperties) { // check string and symbol match static const char* string1 = "fisk"; Handle<String> s1 = Factory::NewStringFromAscii(CStrVector(string1)); - obj->SetProperty(*s1, Smi::FromInt(1), NONE); + obj->SetProperty(*s1, Smi::FromInt(1), NONE)->ToObjectChecked(); 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); - obj->SetProperty(*s2_symbol, Smi::FromInt(1), NONE); + obj->SetProperty(*s2_symbol, Smi::FromInt(1), NONE)->ToObjectChecked(); Handle<String> s2 = Factory::NewStringFromAscii(CStrVector(string2)); CHECK(obj->HasLocalProperty(*s2)); } @@ -615,7 +631,7 @@ TEST(JSObjectMaps) { Handle<JSObject> obj = Factory::NewJSObject(function); // Set a propery - obj->SetProperty(*prop_name, Smi::FromInt(23), NONE); + obj->SetProperty(*prop_name, Smi::FromInt(23), NONE)->ToObjectChecked(); CHECK_EQ(Smi::FromInt(23), obj->GetProperty(*prop_name)); // Check the map has changed @@ -628,33 +644,31 @@ TEST(JSArray) { v8::HandleScope sc; Handle<String> name = Factory::LookupAsciiSymbol("Array"); + Object* raw_object = + Top::context()->global()->GetProperty(*name)->ToObjectChecked(); Handle<JSFunction> function = Handle<JSFunction>( - JSFunction::cast(Top::context()->global()->GetProperty(*name))); + JSFunction::cast(raw_object)); // Allocate the object. Handle<JSObject> object = Factory::NewJSObject(function); Handle<JSArray> array = Handle<JSArray>::cast(object); - Object* ok = array->Initialize(0); // We just initialized the VM, no heap allocation failure yet. - CHECK(!ok->IsFailure()); + Object* ok = array->Initialize(0)->ToObjectChecked(); // Set array length to 0. - ok = array->SetElementsLength(Smi::FromInt(0)); - CHECK(!ok->IsFailure()); + ok = array->SetElementsLength(Smi::FromInt(0))->ToObjectChecked(); CHECK_EQ(Smi::FromInt(0), array->length()); CHECK(array->HasFastElements()); // Must be in fast mode. // array[length] = name. - ok = array->SetElement(0, *name); - CHECK(!ok->IsFailure()); + ok = array->SetElement(0, *name)->ToObjectChecked(); CHECK_EQ(Smi::FromInt(1), array->length()); CHECK_EQ(array->GetElement(0), *name); // Set array length with larger than smi value. Handle<Object> length = Factory::NewNumberFromUint(static_cast<uint32_t>(Smi::kMaxValue) + 1); - ok = array->SetElementsLength(*length); - CHECK(!ok->IsFailure()); + ok = array->SetElementsLength(*length)->ToObjectChecked(); uint32_t int_length = 0; CHECK(length->ToArrayIndex(&int_length)); @@ -662,8 +676,7 @@ TEST(JSArray) { CHECK(array->HasDictionaryElements()); // Must be in slow mode. // array[length] = name. - ok = array->SetElement(int_length, *name); - CHECK(!ok->IsFailure()); + ok = array->SetElement(int_length, *name)->ToObjectChecked(); uint32_t new_int_length = 0; CHECK(array->length()->ToArrayIndex(&new_int_length)); CHECK_EQ(static_cast<double>(int_length), new_int_length - 1); @@ -677,21 +690,20 @@ TEST(JSObjectCopy) { v8::HandleScope sc; String* object_symbol = String::cast(Heap::Object_symbol()); - JSFunction* object_function = - JSFunction::cast(Top::context()->global()->GetProperty(object_symbol)); + Object* raw_object = + Top::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"); - obj->SetProperty(*first, Smi::FromInt(1), NONE); - obj->SetProperty(*second, Smi::FromInt(2), NONE); + obj->SetProperty(*first, Smi::FromInt(1), NONE)->ToObjectChecked(); + obj->SetProperty(*second, Smi::FromInt(2), NONE)->ToObjectChecked(); - Object* ok = obj->SetElement(0, *first); - CHECK(!ok->IsFailure()); + Object* ok = obj->SetElement(0, *first)->ToObjectChecked(); - ok = obj->SetElement(1, *second); - CHECK(!ok->IsFailure()); + ok = obj->SetElement(1, *second)->ToObjectChecked(); // Make the clone. Handle<JSObject> clone = Copy(obj); @@ -704,13 +716,11 @@ TEST(JSObjectCopy) { CHECK_EQ(obj->GetProperty(*second), clone->GetProperty(*second)); // Flip the values. - clone->SetProperty(*first, Smi::FromInt(2), NONE); - clone->SetProperty(*second, Smi::FromInt(1), NONE); + clone->SetProperty(*first, Smi::FromInt(2), NONE)->ToObjectChecked(); + clone->SetProperty(*second, Smi::FromInt(1), NONE)->ToObjectChecked(); - ok = clone->SetElement(0, *second); - CHECK(!ok->IsFailure()); - ok = clone->SetElement(1, *first); - CHECK(!ok->IsFailure()); + ok = clone->SetElement(0, *second)->ToObjectChecked(); + ok = clone->SetElement(1, *first)->ToObjectChecked(); CHECK_EQ(obj->GetElement(1), clone->GetElement(0)); CHECK_EQ(obj->GetElement(0), clone->GetElement(1)); @@ -836,7 +846,7 @@ TEST(LargeObjectSpaceContains) { kPointerSize; CHECK_EQ(bytes_to_allocate, FixedArray::SizeFor(n_elements)); FixedArray* array = FixedArray::cast( - Heap::AllocateFixedArray(n_elements)); + Heap::AllocateFixedArray(n_elements)->ToObjectChecked()); int index = n_elements - 1; CHECK_EQ(flags_ptr, @@ -908,8 +918,8 @@ TEST(Regression39128) { 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); - CHECK(!array->IsFailure()); + Object* array = + Heap::AllocateFixedArray(allocation_len)->ToObjectChecked(); CHECK(new_space->Contains(array)); } @@ -919,12 +929,11 @@ TEST(Regression39128) { CHECK(fixed_array_len < FixedArray::kMaxLength); CHECK(!Heap::always_allocate()); - Object* array = Heap::AllocateFixedArray(fixed_array_len); - CHECK(!array->IsFailure()); + Object* array = + Heap::AllocateFixedArray(fixed_array_len)->ToObjectChecked(); CHECK(new_space->Contains(array)); - Object* object = Heap::AllocateJSObjectFromMap(*my_map); - CHECK(!object->IsFailure()); + 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()); @@ -938,8 +947,7 @@ TEST(Regression39128) { // in old pointer space. Address old_pointer_space_top = Heap::old_pointer_space()->top(); AlwaysAllocateScope aa_scope; - Object* clone_obj = Heap::CopyJSObject(jsobject); - CHECK(!object->IsFailure()); + 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. @@ -973,7 +981,8 @@ TEST(TestCodeFlushing) { CompileRun(source); // Check function is compiled. - Object* func_value = Top::context()->global()->GetProperty(*foo_name); + Object* func_value = + Top::context()->global()->GetProperty(*foo_name)->ToObjectChecked(); CHECK(func_value->IsJSFunction()); Handle<JSFunction> function(JSFunction::cast(func_value)); CHECK(function->shared()->is_compiled()); diff --git a/test/cctest/test-log-stack-tracer.cc b/test/cctest/test-log-stack-tracer.cc index 7d7bd406..65be6bd8 100644 --- a/test/cctest/test-log-stack-tracer.cc +++ b/test/cctest/test-log-stack-tracer.cc @@ -199,13 +199,6 @@ static void InitializeVM() { } -static Handle<JSFunction> CompileFunction(const char* source) { - Handle<JSFunction> result(JSFunction::cast( - *v8::Utils::OpenHandle(*Script::Compile(String::New(source))))); - return result; -} - - static void CheckJSFunctionAtAddress(const char* func_name, Address addr) { i::Object* obj = i::HeapObject::FromAddress(addr); CHECK(obj->IsJSFunction()); @@ -218,16 +211,6 @@ static void CheckJSFunctionAtAddress(const char* func_name, Address addr) { } -static void SetGlobalProperty(const char* name, Local<Value> value) { - env->Global()->Set(String::New(name), value); -} - - -static Handle<v8::internal::String> NewString(const char* s) { - return i::Factory::NewStringFromAscii(i::CStrVector(s)); -} - - // This C++ function is called as a constructor, to grab the frame pointer // from the calling function. When this function runs, the stack contains // a C_Entry frame and a Construct frame above the calling function's frame. @@ -273,25 +256,18 @@ static void CreateTraceCallerFunction(const char* func_name, const char* trace_func_name) { i::EmbeddedVector<char, 256> trace_call_buf; i::OS::SNPrintF(trace_call_buf, - "fp = new FPGrabber(); %s(fp.low_bits, fp.high_bits);", - trace_func_name); + "function %s() {" + " fp = new FPGrabber();" + " %s(fp.low_bits, fp.high_bits);" + "}", + func_name, trace_func_name); // Create the FPGrabber function, which grabs the caller's frame pointer // when called as a constructor. CreateFramePointerGrabberConstructor("FPGrabber"); // Compile the script. - Handle<JSFunction> func = CompileFunction(trace_call_buf.start()); - CHECK(!func.is_null()); - func->shared()->set_name(*NewString(func_name)); - -#ifdef DEBUG - v8::internal::Code* func_code = func->code(); - CHECK(func_code->IsCode()); - func_code->Print(); -#endif - - SetGlobalProperty(func_name, v8::ToApi<Value>(func)); + CompileRun(trace_call_buf.start()); } diff --git a/test/cctest/test-log.cc b/test/cctest/test-log.cc index 16d0f005..71687374 100644 --- a/test/cctest/test-log.cc +++ b/test/cctest/test-log.cc @@ -337,8 +337,8 @@ TEST(ProfLazyMode) { } -// Profiling multiple threads that use V8 is currently only available on Linux. -#ifdef __linux__ +// BUG(913). Need to implement support for profiling multiple VM threads. +#if 0 namespace { diff --git a/test/cctest/test-mark-compact.cc b/test/cctest/test-mark-compact.cc index 531b1f77..ea5afecc 100644 --- a/test/cctest/test-mark-compact.cc +++ b/test/cctest/test-mark-compact.cc @@ -85,8 +85,7 @@ TEST(Promotion) { int array_size = (Heap::MaxObjectSizeInPagedSpace() - FixedArray::kHeaderSize) / (kPointerSize * 4); - Object* obj = Heap::AllocateFixedArray(array_size); - CHECK(!obj->IsFailure()); + Object* obj = Heap::AllocateFixedArray(array_size)->ToObjectChecked(); Handle<FixedArray> array(FixedArray::cast(obj)); @@ -116,7 +115,7 @@ TEST(NoPromotion) { // Allocate a big Fixed array in the new space. int size = (Heap::MaxObjectSizeInPagedSpace() - FixedArray::kHeaderSize) / kPointerSize; - Object* obj = Heap::AllocateFixedArray(size); + Object* obj = Heap::AllocateFixedArray(size)->ToObjectChecked(); Handle<FixedArray> array(FixedArray::cast(obj)); @@ -126,8 +125,10 @@ TEST(NoPromotion) { // Allocate objects in the old space until out of memory. FixedArray* host = *array; while (true) { - Object* obj = Heap::AllocateFixedArray(100, TENURED); - if (obj->IsFailure()) break; + Object* obj; + { MaybeObject* maybe_obj = Heap::AllocateFixedArray(100, TENURED); + if (!maybe_obj->ToObject(&obj)) break; + } host->set(0, obj); host = FixedArray::cast(obj); @@ -151,59 +152,75 @@ TEST(MarkCompactCollector) { // keep allocating garbage in new space until it fails const int ARRAY_SIZE = 100; Object* array; + MaybeObject* maybe_array; do { - array = Heap::AllocateFixedArray(ARRAY_SIZE); - } while (!array->IsFailure()); + maybe_array = Heap::AllocateFixedArray(ARRAY_SIZE); + } while (maybe_array->ToObject(&array)); Heap::CollectGarbage(NEW_SPACE); - array = Heap::AllocateFixedArray(ARRAY_SIZE); - CHECK(!array->IsFailure()); + array = Heap::AllocateFixedArray(ARRAY_SIZE)->ToObjectChecked(); // keep allocating maps until it fails Object* mapp; + MaybeObject* maybe_mapp; do { - mapp = Heap::AllocateMap(JS_OBJECT_TYPE, JSObject::kHeaderSize); - } while (!mapp->IsFailure()); + maybe_mapp = Heap::AllocateMap(JS_OBJECT_TYPE, JSObject::kHeaderSize); + } while (maybe_mapp->ToObject(&mapp)); Heap::CollectGarbage(MAP_SPACE); - mapp = Heap::AllocateMap(JS_OBJECT_TYPE, JSObject::kHeaderSize); - CHECK(!mapp->IsFailure()); + mapp = Heap::AllocateMap(JS_OBJECT_TYPE, + JSObject::kHeaderSize)->ToObjectChecked(); // allocate a garbage - String* func_name = String::cast(Heap::LookupAsciiSymbol("theFunction")); - SharedFunctionInfo* function_share = - SharedFunctionInfo::cast(Heap::AllocateSharedFunctionInfo(func_name)); - JSFunction* function = - JSFunction::cast(Heap::AllocateFunction(*Top::function_map(), - function_share, - Heap::undefined_value())); + String* func_name = + String::cast(Heap::LookupAsciiSymbol("theFunction")->ToObjectChecked()); + SharedFunctionInfo* function_share = SharedFunctionInfo::cast( + Heap::AllocateSharedFunctionInfo(func_name)->ToObjectChecked()); + JSFunction* function = JSFunction::cast( + Heap::AllocateFunction(*Top::function_map(), + function_share, + Heap::undefined_value())->ToObjectChecked()); Map* initial_map = - Map::cast(Heap::AllocateMap(JS_OBJECT_TYPE, JSObject::kHeaderSize)); + Map::cast(Heap::AllocateMap(JS_OBJECT_TYPE, + JSObject::kHeaderSize)->ToObjectChecked()); function->set_initial_map(initial_map); - Top::context()->global()->SetProperty(func_name, function, NONE); + Top::context()->global()->SetProperty(func_name, + function, + NONE)->ToObjectChecked(); - JSObject* obj = JSObject::cast(Heap::AllocateJSObject(function)); + JSObject* obj = + JSObject::cast(Heap::AllocateJSObject(function)->ToObjectChecked()); Heap::CollectGarbage(OLD_POINTER_SPACE); - func_name = String::cast(Heap::LookupAsciiSymbol("theFunction")); + func_name = + String::cast(Heap::LookupAsciiSymbol("theFunction")->ToObjectChecked()); CHECK(Top::context()->global()->HasLocalProperty(func_name)); - Object* func_value = Top::context()->global()->GetProperty(func_name); + Object* func_value = + Top::context()->global()->GetProperty(func_name)->ToObjectChecked(); CHECK(func_value->IsJSFunction()); function = JSFunction::cast(func_value); - obj = JSObject::cast(Heap::AllocateJSObject(function)); - String* obj_name = String::cast(Heap::LookupAsciiSymbol("theObject")); - Top::context()->global()->SetProperty(obj_name, obj, NONE); - String* prop_name = String::cast(Heap::LookupAsciiSymbol("theSlot")); - obj->SetProperty(prop_name, Smi::FromInt(23), NONE); + obj = JSObject::cast(Heap::AllocateJSObject(function)->ToObjectChecked()); + String* obj_name = + String::cast(Heap::LookupAsciiSymbol("theObject")->ToObjectChecked()); + Top::context()->global()->SetProperty(obj_name, + obj, + NONE)->ToObjectChecked(); + String* prop_name = + String::cast(Heap::LookupAsciiSymbol("theSlot")->ToObjectChecked()); + obj->SetProperty(prop_name, Smi::FromInt(23), NONE)->ToObjectChecked(); Heap::CollectGarbage(OLD_POINTER_SPACE); - obj_name = String::cast(Heap::LookupAsciiSymbol("theObject")); + obj_name = + String::cast(Heap::LookupAsciiSymbol("theObject")->ToObjectChecked()); CHECK(Top::context()->global()->HasLocalProperty(obj_name)); - CHECK(Top::context()->global()->GetProperty(obj_name)->IsJSObject()); - obj = JSObject::cast(Top::context()->global()->GetProperty(obj_name)); - prop_name = String::cast(Heap::LookupAsciiSymbol("theSlot")); - CHECK(obj->GetProperty(prop_name) == Smi::FromInt(23)); + CHECK(Top::context()->global()-> + GetProperty(obj_name)->ToObjectChecked()->IsJSObject()); + obj = JSObject::cast( + Top::context()->global()->GetProperty(obj_name)->ToObjectChecked()); + prop_name = + String::cast(Heap::LookupAsciiSymbol("theSlot")->ToObjectChecked()); + CHECK(obj->GetProperty(prop_name)->ToObjectChecked() == Smi::FromInt(23)); } @@ -283,9 +300,9 @@ TEST(ObjectGroups) { v8::HandleScope handle_scope; Handle<Object> g1s1 = - GlobalHandles::Create(Heap::AllocateFixedArray(1)); + GlobalHandles::Create(Heap::AllocateFixedArray(1)->ToObjectChecked()); Handle<Object> g1s2 = - GlobalHandles::Create(Heap::AllocateFixedArray(1)); + GlobalHandles::Create(Heap::AllocateFixedArray(1)->ToObjectChecked()); GlobalHandles::MakeWeak(g1s1.location(), reinterpret_cast<void*>(1234), &WeakPointerCallback); @@ -294,9 +311,9 @@ TEST(ObjectGroups) { &WeakPointerCallback); Handle<Object> g2s1 = - GlobalHandles::Create(Heap::AllocateFixedArray(1)); + GlobalHandles::Create(Heap::AllocateFixedArray(1)->ToObjectChecked()); Handle<Object> g2s2 = - GlobalHandles::Create(Heap::AllocateFixedArray(1)); + GlobalHandles::Create(Heap::AllocateFixedArray(1)->ToObjectChecked()); GlobalHandles::MakeWeak(g2s1.location(), reinterpret_cast<void*>(1234), &WeakPointerCallback); diff --git a/test/cctest/test-serialize.cc b/test/cctest/test-serialize.cc index 20fb2fe6..6a513e5f 100644 --- a/test/cctest/test-serialize.cc +++ b/test/cctest/test-serialize.cc @@ -576,7 +576,8 @@ TEST(LinearAllocation) { for (int i = 0; i + kSmallFixedArraySize <= new_space_size; i += kSmallFixedArraySize) { - Object* obj = Heap::AllocateFixedArray(kSmallFixedArrayLength); + Object* obj = + Heap::AllocateFixedArray(kSmallFixedArrayLength)->ToObjectChecked(); if (new_last != NULL) { CHECK(reinterpret_cast<char*>(obj) == reinterpret_cast<char*>(new_last) + kSmallFixedArraySize); @@ -588,7 +589,8 @@ TEST(LinearAllocation) { for (int i = 0; i + kSmallFixedArraySize <= size; i += kSmallFixedArraySize) { - Object* obj = Heap::AllocateFixedArray(kSmallFixedArrayLength, TENURED); + Object* obj = Heap::AllocateFixedArray(kSmallFixedArrayLength, + TENURED)->ToObjectChecked(); int old_page_fullness = i % Page::kPageSize; int page_fullness = (i + kSmallFixedArraySize) % Page::kPageSize; if (page_fullness < old_page_fullness || @@ -605,7 +607,8 @@ TEST(LinearAllocation) { Object* data_last = NULL; for (int i = 0; i + kSmallStringSize <= size; i += kSmallStringSize) { - Object* obj = Heap::AllocateRawAsciiString(kSmallStringLength, TENURED); + Object* obj = Heap::AllocateRawAsciiString(kSmallStringLength, + TENURED)->ToObjectChecked(); int old_page_fullness = i % Page::kPageSize; int page_fullness = (i + kSmallStringSize) % Page::kPageSize; if (page_fullness < old_page_fullness || @@ -622,7 +625,8 @@ TEST(LinearAllocation) { Object* map_last = NULL; for (int i = 0; i + kMapSize <= size; i += kMapSize) { - Object* obj = Heap::AllocateMap(JS_OBJECT_TYPE, 42 * kPointerSize); + Object* obj = Heap::AllocateMap(JS_OBJECT_TYPE, + 42 * kPointerSize)->ToObjectChecked(); int old_page_fullness = i % Page::kPageSize; int page_fullness = (i + kMapSize) % Page::kPageSize; if (page_fullness < old_page_fullness || @@ -644,7 +648,7 @@ TEST(LinearAllocation) { int large_object_array_length = (size - FixedArray::kHeaderSize) / kPointerSize; Object* obj = Heap::AllocateFixedArray(large_object_array_length, - TENURED); + TENURED)->ToObjectChecked(); CHECK(!obj->IsFailure()); } } diff --git a/test/cctest/test-spaces.cc b/test/cctest/test-spaces.cc index db8c54fa..06f1bfac 100644 --- a/test/cctest/test-spaces.cc +++ b/test/cctest/test-spaces.cc @@ -160,8 +160,8 @@ TEST(NewSpace) { CHECK(new_space.HasBeenSetup()); while (new_space.Available() >= Page::kMaxHeapObjectSize) { - Object* obj = new_space.AllocateRaw(Page::kMaxHeapObjectSize); - CHECK(!obj->IsFailure()); + Object* obj = + new_space.AllocateRaw(Page::kMaxHeapObjectSize)->ToObjectUnchecked(); CHECK(new_space.Contains(HeapObject::cast(obj))); } @@ -188,8 +188,7 @@ TEST(OldSpace) { CHECK(s->Setup(start, size)); while (s->Available() > 0) { - Object* obj = s->AllocateRaw(Page::kMaxHeapObjectSize); - CHECK(!obj->IsFailure()); + s->AllocateRaw(Page::kMaxHeapObjectSize)->ToObjectUnchecked(); } s->TearDown(); @@ -207,8 +206,7 @@ TEST(LargeObjectSpace) { Map* faked_map = reinterpret_cast<Map*>(HeapObject::FromAddress(0)); int lo_size = Page::kPageSize; - Object* obj = lo->AllocateRaw(lo_size); - CHECK(!obj->IsFailure()); + Object* obj = lo->AllocateRaw(lo_size)->ToObjectUnchecked(); CHECK(obj->IsHeapObject()); HeapObject* ho = HeapObject::cast(obj); @@ -222,16 +220,16 @@ TEST(LargeObjectSpace) { while (true) { intptr_t available = lo->Available(); - obj = lo->AllocateRaw(lo_size); - if (obj->IsFailure()) break; + { MaybeObject* maybe_obj = lo->AllocateRaw(lo_size); + if (!maybe_obj->ToObject(&obj)) break; + } HeapObject::cast(obj)->set_map(faked_map); CHECK(lo->Available() < available); }; CHECK(!lo->IsEmpty()); - obj = lo->AllocateRaw(lo_size); - CHECK(obj->IsFailure()); + CHECK(lo->AllocateRaw(lo_size)->IsFailure()); lo->TearDown(); delete lo; diff --git a/test/cctest/test-strings.cc b/test/cctest/test-strings.cc index 3a9e4da2..3f02b32b 100644 --- a/test/cctest/test-strings.cc +++ b/test/cctest/test-strings.cc @@ -476,7 +476,7 @@ TEST(CachedHashOverflow) { CHECK_EQ(results[i]->IsUndefined(), result->IsUndefined()); CHECK_EQ(results[i]->IsNumber(), result->IsNumber()); if (result->IsNumber()) { - CHECK_EQ(Smi::cast(results[i]->ToSmi())->value(), + CHECK_EQ(Smi::cast(results[i]->ToSmi()->ToObjectChecked())->value(), result->ToInt32()->Value()); } } diff --git a/test/cctest/test-strtod.cc b/test/cctest/test-strtod.cc index ae1c00d3..56b26ea1 100644 --- a/test/cctest/test-strtod.cc +++ b/test/cctest/test-strtod.cc @@ -198,10 +198,58 @@ TEST(Strtod) { CHECK_EQ(1234e304, StrtodChar("0000000123400000", 299)); CHECK_EQ(V8_INFINITY, StrtodChar("00000000180000000", 300)); CHECK_EQ(17e307, StrtodChar("00000000170000000", 300)); + CHECK_EQ(1.7976931348623157E+308, StrtodChar("17976931348623157", 292)); + CHECK_EQ(1.7976931348623158E+308, StrtodChar("17976931348623158", 292)); + CHECK_EQ(V8_INFINITY, StrtodChar("17976931348623159", 292)); // The following number is the result of 89255.0/1e-22. Both floating-point // numbers can be accurately represented with doubles. However on Linux,x86 // the floating-point stack is set to 80bits and the double-rounding // introduces an error. CHECK_EQ(89255e-22, StrtodChar("89255", -22)); + CHECK_EQ(104110013277974872254e-225, + StrtodChar("104110013277974872254", -225)); + + CHECK_EQ(123456789e108, StrtodChar("123456789", 108)); + CHECK_EQ(123456789e109, StrtodChar("123456789", 109)); + CHECK_EQ(123456789e110, StrtodChar("123456789", 110)); + CHECK_EQ(123456789e111, StrtodChar("123456789", 111)); + CHECK_EQ(123456789e112, StrtodChar("123456789", 112)); + CHECK_EQ(123456789e113, StrtodChar("123456789", 113)); + CHECK_EQ(123456789e114, StrtodChar("123456789", 114)); + CHECK_EQ(123456789e115, StrtodChar("123456789", 115)); + + CHECK_EQ(1234567890123456789012345e108, + StrtodChar("1234567890123456789012345", 108)); + CHECK_EQ(1234567890123456789012345e109, + StrtodChar("1234567890123456789012345", 109)); + CHECK_EQ(1234567890123456789012345e110, + StrtodChar("1234567890123456789012345", 110)); + CHECK_EQ(1234567890123456789012345e111, + StrtodChar("1234567890123456789012345", 111)); + CHECK_EQ(1234567890123456789012345e112, + StrtodChar("1234567890123456789012345", 112)); + CHECK_EQ(1234567890123456789012345e113, + StrtodChar("1234567890123456789012345", 113)); + CHECK_EQ(1234567890123456789012345e114, + StrtodChar("1234567890123456789012345", 114)); + CHECK_EQ(1234567890123456789012345e115, + StrtodChar("1234567890123456789012345", 115)); + + CHECK_EQ(1234567890123456789052345e108, + StrtodChar("1234567890123456789052345", 108)); + CHECK_EQ(1234567890123456789052345e109, + StrtodChar("1234567890123456789052345", 109)); + CHECK_EQ(1234567890123456789052345e110, + StrtodChar("1234567890123456789052345", 110)); + CHECK_EQ(1234567890123456789052345e111, + StrtodChar("1234567890123456789052345", 111)); + CHECK_EQ(1234567890123456789052345e112, + StrtodChar("1234567890123456789052345", 112)); + CHECK_EQ(1234567890123456789052345e113, + StrtodChar("1234567890123456789052345", 113)); + CHECK_EQ(1234567890123456789052345e114, + StrtodChar("1234567890123456789052345", 114)); + CHECK_EQ(1234567890123456789052345e115, + StrtodChar("1234567890123456789052345", 115)); } |