| Index: test/cctest/test-heap.cc | 
| diff --git a/test/cctest/test-heap.cc b/test/cctest/test-heap.cc | 
| index 126ac21adac5acd376825032d9039f9803a1ef2a..94d05555ec556276834a381ad68786266f433e77 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()); | 
|  |