Index: src/runtime.cc |
diff --git a/src/runtime.cc b/src/runtime.cc |
index 405496c40a0394890a494f51cd462e8a7e9f1eed..e486b0618c51216d2291659bb7e1ac679a0839af 100644 |
--- a/src/runtime.cc |
+++ b/src/runtime.cc |
@@ -917,9 +917,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ArrayBufferIsView) { |
HandleScope scope(isolate); |
ASSERT(args.length() == 1); |
CONVERT_ARG_CHECKED(Object, object, 0); |
- return object->IsJSArrayBufferView() |
- ? isolate->heap()->true_value() |
- : isolate->heap()->false_value(); |
+ return isolate->heap()->ToBoolean(object->IsJSArrayBufferView()); |
} |
@@ -1137,13 +1135,11 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_TypedArrayInitializeFromArrayLike) { |
buffer->backing_store(), |
backing_store + source_byte_offset, |
byte_length); |
- return *isolate->factory()->true_value(); |
- } else { |
- return *isolate->factory()->false_value(); |
+ return isolate->heap()->true_value(); |
} |
} |
- return *isolate->factory()->false_value(); |
+ return isolate->heap()->false_value(); |
} |
@@ -1722,7 +1718,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetPrototype) { |
v8::ACCESS_GET)) { |
isolate->ReportFailedAccessCheck(Handle<JSObject>::cast(obj), |
v8::ACCESS_GET); |
- RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
+ RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate); |
return isolate->heap()->undefined_value(); |
} |
obj = Object::GetPrototype(isolate, obj); |
@@ -1752,7 +1748,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_SetPrototype) { |
!isolate->MayNamedAccess( |
obj, isolate->factory()->proto_string(), v8::ACCESS_SET)) { |
isolate->ReportFailedAccessCheck(obj, v8::ACCESS_SET); |
- RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
+ RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate); |
return isolate->heap()->undefined_value(); |
} |
if (obj->map()->is_observed()) { |
@@ -1995,8 +1991,9 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_PreventExtensions) { |
HandleScope scope(isolate); |
ASSERT(args.length() == 1); |
CONVERT_ARG_HANDLE_CHECKED(JSObject, obj, 0); |
- Handle<Object> result = JSObject::PreventExtensions(obj); |
- RETURN_IF_EMPTY_HANDLE(isolate, result); |
+ Handle<Object> result; |
+ ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
+ isolate, result, JSObject::PreventExtensions(obj)); |
return *result; |
} |
@@ -2220,7 +2217,7 @@ RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_DeclareGlobals) { |
attr = lookup.GetAttributes(); |
} |
// Define or redefine own property. |
- RETURN_IF_EMPTY_HANDLE(isolate, |
+ RETURN_FAILURE_ON_EXCEPTION(isolate, |
JSObject::SetLocalPropertyIgnoreAttributes( |
global, name, value, static_cast<PropertyAttributes>(attr))); |
} else { |
@@ -2326,7 +2323,7 @@ RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_DeclareContextSlot) { |
} |
if (object->IsJSGlobalObject()) { |
// Define own property on the global object. |
- RETURN_IF_EMPTY_HANDLE(isolate, |
+ RETURN_FAILURE_ON_EXCEPTION(isolate, |
JSObject::SetLocalPropertyIgnoreAttributes(object, name, value, mode)); |
} else { |
RETURN_FAILURE_ON_EXCEPTION(isolate, |
@@ -2426,7 +2423,7 @@ RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_InitializeConstGlobal) { |
if (!lookup.IsFound()) { |
HandleScope handle_scope(isolate); |
Handle<GlobalObject> global(isolate->context()->global_object()); |
- RETURN_IF_EMPTY_HANDLE( |
+ RETURN_FAILURE_ON_EXCEPTION( |
isolate, |
JSObject::SetLocalPropertyIgnoreAttributes(global, name, value, |
attributes)); |
@@ -2671,16 +2668,16 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_RegExpInitializeObject) { |
static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE); |
Handle<Object> zero(Smi::FromInt(0), isolate); |
Factory* factory = isolate->factory(); |
- CHECK_NOT_EMPTY_HANDLE(isolate, JSObject::SetLocalPropertyIgnoreAttributes( |
- regexp, factory->source_string(), source, final)); |
- CHECK_NOT_EMPTY_HANDLE(isolate, JSObject::SetLocalPropertyIgnoreAttributes( |
- regexp, factory->global_string(), global, final)); |
- CHECK_NOT_EMPTY_HANDLE(isolate, JSObject::SetLocalPropertyIgnoreAttributes( |
- regexp, factory->ignore_case_string(), ignoreCase, final)); |
- CHECK_NOT_EMPTY_HANDLE(isolate, JSObject::SetLocalPropertyIgnoreAttributes( |
- regexp, factory->multiline_string(), multiline, final)); |
- CHECK_NOT_EMPTY_HANDLE(isolate, JSObject::SetLocalPropertyIgnoreAttributes( |
- regexp, factory->last_index_string(), zero, writable)); |
+ JSObject::SetLocalPropertyIgnoreAttributes( |
+ regexp, factory->source_string(), source, final).Check(); |
+ JSObject::SetLocalPropertyIgnoreAttributes( |
+ regexp, factory->global_string(), global, final).Check(); |
+ JSObject::SetLocalPropertyIgnoreAttributes( |
+ regexp, factory->ignore_case_string(), ignoreCase, final).Check(); |
+ JSObject::SetLocalPropertyIgnoreAttributes( |
+ regexp, factory->multiline_string(), multiline, final).Check(); |
+ JSObject::SetLocalPropertyIgnoreAttributes( |
+ regexp, factory->last_index_string(), zero, writable).Check(); |
return *regexp; |
} |
@@ -4857,11 +4854,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_IsValidSmi) { |
ASSERT(args.length() == 1); |
CONVERT_NUMBER_CHECKED(int32_t, number, Int32, args[0]); |
- if (Smi::IsValid(number)) { |
- return isolate->heap()->true_value(); |
- } else { |
- return isolate->heap()->false_value(); |
- } |
+ return isolate->heap()->ToBoolean(Smi::IsValid(number)); |
} |
@@ -5070,8 +5063,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_KeyedGetProperty) { |
Handle<String> str = args.at<String>(0); |
int index = args.smi_at(1); |
if (index >= 0 && index < str->length()) { |
- Handle<Object> result = GetCharAt(str, index); |
- return *result; |
+ return *GetCharAt(str, index); |
} |
} |
@@ -5113,7 +5105,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DefineOrRedefineAccessorProperty) { |
bool fast = obj->HasFastProperties(); |
JSObject::DefineAccessor(obj, name, getter, setter, attr); |
- RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
+ RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate); |
if (fast) JSObject::TransformToFastProperties(obj, 0); |
return isolate->heap()->undefined_value(); |
} |
@@ -5221,8 +5213,7 @@ MaybeHandle<Object> Runtime::SetObjectProperty(Isolate* isolate, |
Handle<Object> error = |
isolate->factory()->NewTypeError("non_object_property_store", |
HandleVector(args, 2)); |
- isolate->Throw(*error); |
- return Handle<Object>(); |
+ return isolate->Throw<Object>(error); |
} |
if (object->IsJSProxy()) { |
@@ -5541,10 +5532,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugCallbackSupportsStepping) { |
} |
CONVERT_ARG_CHECKED(Object, callback, 0); |
// We do not step into the callback if it's a builtin or not even a function. |
- if (!callback->IsJSFunction() || JSFunction::cast(callback)->IsBuiltin()) { |
- return isolate->heap()->false_value(); |
- } |
- return isolate->heap()->true_value(); |
+ return isolate->heap()->ToBoolean( |
+ callback->IsJSFunction() && !JSFunction::cast(callback)->IsBuiltin()); |
#else |
return isolate->heap()->false_value(); |
#endif // ENABLE_DEBUGGER_SUPPORT |
@@ -5628,7 +5617,7 @@ static MaybeObject* HasLocalPropertyImplementation(Isolate* isolate, |
Handle<JSObject>::cast(proto), |
key); |
} |
- RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
+ RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate); |
return isolate->heap()->false_value(); |
} |
@@ -5652,7 +5641,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_HasLocalProperty) { |
ASSERT(!isolate->has_scheduled_exception()); |
return isolate->heap()->true_value(); |
} else { |
- RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
+ RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate); |
} |
Map* map = js_obj->map(); |
if (!key_is_array_index && |
@@ -5682,7 +5671,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_HasProperty) { |
CONVERT_ARG_HANDLE_CHECKED(Name, key, 1); |
bool result = JSReceiver::HasProperty(receiver, key); |
- RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
+ RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate); |
if (isolate->has_pending_exception()) return Failure::Exception(); |
return isolate->heap()->ToBoolean(result); |
} |
@@ -5695,8 +5684,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_HasElement) { |
CONVERT_SMI_ARG_CHECKED(index, 1); |
bool result = JSReceiver::HasElement(receiver, index); |
- RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
- if (isolate->has_pending_exception()) return Failure::Exception(); |
+ RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate); |
return isolate->heap()->ToBoolean(result); |
} |
@@ -5710,7 +5698,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_IsPropertyEnumerable) { |
PropertyAttributes att = JSReceiver::GetLocalPropertyAttribute(object, key); |
if (att == ABSENT || (att & DONT_ENUM) != 0) { |
- RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
+ RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate); |
return isolate->heap()->false_value(); |
} |
ASSERT(!isolate->has_scheduled_exception()); |
@@ -5796,7 +5784,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetLocalPropertyNames) { |
!isolate->MayNamedAccess( |
obj, isolate->factory()->undefined_value(), v8::ACCESS_KEYS)) { |
isolate->ReportFailedAccessCheck(obj, v8::ACCESS_KEYS); |
- RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
+ RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate); |
return *isolate->factory()->NewJSArray(0); |
} |
obj = Handle<JSObject>(JSObject::cast(obj->GetPrototype())); |
@@ -5815,7 +5803,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetLocalPropertyNames) { |
!isolate->MayNamedAccess( |
jsproto, isolate->factory()->undefined_value(), v8::ACCESS_KEYS)) { |
isolate->ReportFailedAccessCheck(jsproto, v8::ACCESS_KEYS); |
- RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
+ RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate); |
return *isolate->factory()->NewJSArray(0); |
} |
int n; |
@@ -5971,7 +5959,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_LocalKeys) { |
!isolate->MayNamedAccess( |
object, isolate->factory()->undefined_value(), v8::ACCESS_KEYS)) { |
isolate->ReportFailedAccessCheck(object, v8::ACCESS_KEYS); |
- RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
+ RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate); |
return *isolate->factory()->NewJSArray(0); |
} |
@@ -8290,7 +8278,6 @@ static MaybeObject* Runtime_NewObjectHelper(Isolate* isolate, |
} else { |
result = isolate->factory()->NewJSObjectWithMemento(function, site); |
} |
- RETURN_IF_EMPTY_HANDLE(isolate, result); |
isolate->counters()->constructed_objects()->Increment(); |
isolate->counters()->constructed_objects_runtime()->Increment(); |
@@ -9064,8 +9051,9 @@ RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_DeclareModules) { |
IsImmutableVariableMode(mode) ? FROZEN : SEALED; |
Handle<AccessorInfo> info = |
Accessors::MakeModuleExport(name, index, attr); |
- Handle<Object> result = JSObject::SetAccessor(module, info); |
- ASSERT(!(result.is_null() || result->IsUndefined())); |
+ Handle<Object> result = |
+ JSObject::SetAccessor(module, info).ToHandleChecked(); |
+ ASSERT(!result->IsUndefined()); |
USE(result); |
break; |
} |
@@ -9084,7 +9072,7 @@ RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_DeclareModules) { |
} |
} |
- JSObject::PreventExtensions(module); |
+ JSObject::PreventExtensions(module).Assert(); |
} |
ASSERT(!isolate->has_pending_exception()); |
@@ -10641,9 +10629,10 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_LookupAccessor) { |
CONVERT_SMI_ARG_CHECKED(flag, 2); |
AccessorComponent component = flag == 0 ? ACCESSOR_GETTER : ACCESSOR_SETTER; |
if (!receiver->IsJSObject()) return isolate->heap()->undefined_value(); |
- Handle<Object> result = |
- JSObject::GetAccessor(Handle<JSObject>::cast(receiver), name, component); |
- RETURN_IF_EMPTY_HANDLE(isolate, result); |
+ Handle<Object> result; |
+ ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
+ isolate, result, |
+ JSObject::GetAccessor(Handle<JSObject>::cast(receiver), name, component)); |
return *result; |
} |
@@ -12376,7 +12365,6 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetFunctionScopeDetails) { |
Handle<JSObject> details; |
ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
isolate, details, MaterializeScopeDetails(isolate, &it)); |
- RETURN_IF_EMPTY_HANDLE(isolate, details); |
return *details; |
} |
@@ -13692,7 +13680,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_AvailableLocalesOf) { |
continue; |
} |
- RETURN_IF_EMPTY_HANDLE(isolate, |
+ RETURN_FAILURE_ON_EXCEPTION(isolate, |
JSObject::SetLocalPropertyIgnoreAttributes( |
locales, |
isolate->factory()->NewStringFromAscii(CStrVector(result)), |
@@ -13796,13 +13784,13 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetLanguageTagVariants) { |
Handle<JSObject> result = |
isolate->factory()->NewJSObject(isolate->object_function()); |
- RETURN_IF_EMPTY_HANDLE(isolate, |
+ RETURN_FAILURE_ON_EXCEPTION(isolate, |
JSObject::SetLocalPropertyIgnoreAttributes( |
result, |
maximized, |
isolate->factory()->NewStringFromAscii(CStrVector(base_max_locale)), |
NONE)); |
- RETURN_IF_EMPTY_HANDLE(isolate, |
+ RETURN_FAILURE_ON_EXCEPTION(isolate, |
JSObject::SetLocalPropertyIgnoreAttributes( |
result, |
base, |
@@ -13924,7 +13912,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateDateTimeFormat) { |
local_object->SetInternalField(0, reinterpret_cast<Smi*>(date_format)); |
- RETURN_IF_EMPTY_HANDLE(isolate, |
+ RETURN_FAILURE_ON_EXCEPTION(isolate, |
JSObject::SetLocalPropertyIgnoreAttributes( |
local_object, |
isolate->factory()->NewStringFromAscii(CStrVector("dateFormat")), |
@@ -14019,7 +14007,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateNumberFormat) { |
local_object->SetInternalField(0, reinterpret_cast<Smi*>(number_format)); |
- RETURN_IF_EMPTY_HANDLE(isolate, |
+ RETURN_FAILURE_ON_EXCEPTION(isolate, |
JSObject::SetLocalPropertyIgnoreAttributes( |
local_object, |
isolate->factory()->NewStringFromAscii(CStrVector("numberFormat")), |
@@ -14123,7 +14111,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateCollator) { |
local_object->SetInternalField(0, reinterpret_cast<Smi*>(collator)); |
- RETURN_IF_EMPTY_HANDLE(isolate, |
+ RETURN_FAILURE_ON_EXCEPTION(isolate, |
JSObject::SetLocalPropertyIgnoreAttributes( |
local_object, |
isolate->factory()->NewStringFromAscii(CStrVector("collator")), |
@@ -14223,7 +14211,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateBreakIterator) { |
// Make sure that the pointer to adopted text is NULL. |
local_object->SetInternalField(1, reinterpret_cast<Smi*>(NULL)); |
- RETURN_IF_EMPTY_HANDLE(isolate, |
+ RETURN_FAILURE_ON_EXCEPTION(isolate, |
JSObject::SetLocalPropertyIgnoreAttributes( |
local_object, |
isolate->factory()->NewStringFromAscii(CStrVector("breakIterator")), |