| Index: src/runtime.cc
|
| diff --git a/src/runtime.cc b/src/runtime.cc
|
| index c69882f5a36b2de7a517bfd0a79cd12eb16296fd..40468c255ff74f2c11eb2f62aeadb1620207e221 100644
|
| --- a/src/runtime.cc
|
| +++ b/src/runtime.cc
|
| @@ -849,15 +849,15 @@ RUNTIME_FUNCTION(Runtime_ArrayBufferInitialize) {
|
| }
|
| size_t allocated_length = 0;
|
| if (!TryNumberToSize(isolate, *byteLength, &allocated_length)) {
|
| - return isolate->Throw(
|
| - *isolate->factory()->NewRangeError("invalid_array_buffer_length",
|
| - HandleVector<Object>(NULL, 0)));
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate, NewRangeError("invalid_array_buffer_length",
|
| + HandleVector<Object>(NULL, 0)));
|
| }
|
| if (!Runtime::SetupArrayBufferAllocatingData(isolate,
|
| holder, allocated_length)) {
|
| - return isolate->Throw(
|
| - *isolate->factory()->NewRangeError("invalid_array_buffer_length",
|
| - HandleVector<Object>(NULL, 0)));
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate, NewRangeError("invalid_array_buffer_length",
|
| + HandleVector<Object>(NULL, 0)));
|
| }
|
| return *holder;
|
| }
|
| @@ -987,9 +987,9 @@ RUNTIME_FUNCTION(Runtime_TypedArrayInitialize) {
|
| size_t length = byte_length / element_size;
|
|
|
| if (length > static_cast<unsigned>(Smi::kMaxValue)) {
|
| - return isolate->Throw(
|
| - *isolate->factory()->NewRangeError("invalid_typed_array_length",
|
| - HandleVector<Object>(NULL, 0)));
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate, NewRangeError("invalid_typed_array_length",
|
| + HandleVector<Object>(NULL, 0)));
|
| }
|
|
|
| // All checks are done, now we can modify objects.
|
| @@ -1069,9 +1069,9 @@ RUNTIME_FUNCTION(Runtime_TypedArrayInitializeFromArrayLike) {
|
|
|
| if ((length > static_cast<unsigned>(Smi::kMaxValue)) ||
|
| (length > (kMaxInt / element_size))) {
|
| - return isolate->Throw(*isolate->factory()->
|
| - NewRangeError("invalid_typed_array_length",
|
| - HandleVector<Object>(NULL, 0)));
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate, NewRangeError("invalid_typed_array_length",
|
| + HandleVector<Object>(NULL, 0)));
|
| }
|
| size_t byte_length = length * element_size;
|
|
|
| @@ -1099,9 +1099,9 @@ RUNTIME_FUNCTION(Runtime_TypedArrayInitializeFromArrayLike) {
|
|
|
| if (!Runtime::SetupArrayBufferAllocatingData(
|
| isolate, buffer, byte_length, false)) {
|
| - return isolate->Throw(*isolate->factory()->
|
| - NewRangeError("invalid_array_buffer_length",
|
| - HandleVector<Object>(NULL, 0)));
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate, NewRangeError("invalid_array_buffer_length",
|
| + HandleVector<Object>(NULL, 0)));
|
| }
|
|
|
| holder->set_buffer(*buffer);
|
| @@ -1183,9 +1183,11 @@ enum TypedArraySetResultCodes {
|
| RUNTIME_FUNCTION(Runtime_TypedArraySetFastCases) {
|
| HandleScope scope(isolate);
|
| DCHECK(args.length() == 3);
|
| - if (!args[0]->IsJSTypedArray())
|
| - return isolate->Throw(*isolate->factory()->NewTypeError(
|
| - "not_typed_array", HandleVector<Object>(NULL, 0)));
|
| + if (!args[0]->IsJSTypedArray()) {
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate,
|
| + NewTypeError("not_typed_array", HandleVector<Object>(NULL, 0)));
|
| + }
|
|
|
| if (!args[1]->IsJSTypedArray())
|
| return Smi::FromInt(TYPED_ARRAY_SET_NON_TYPED_ARRAY);
|
| @@ -1202,11 +1204,12 @@ RUNTIME_FUNCTION(Runtime_TypedArraySetFastCases) {
|
| size_t source_length = NumberToSize(isolate, source->length());
|
| size_t target_byte_length = NumberToSize(isolate, target->byte_length());
|
| size_t source_byte_length = NumberToSize(isolate, source->byte_length());
|
| - if (offset > target_length ||
|
| - offset + source_length > target_length ||
|
| - offset + source_length < offset) // overflow
|
| - return isolate->Throw(*isolate->factory()->NewRangeError(
|
| - "typed_array_set_source_too_large", HandleVector<Object>(NULL, 0)));
|
| + if (offset > target_length || offset + source_length > target_length ||
|
| + offset + source_length < offset) { // overflow
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate, NewRangeError("typed_array_set_source_too_large",
|
| + HandleVector<Object>(NULL, 0)));
|
| + }
|
|
|
| size_t target_offset = NumberToSize(isolate, target->byte_offset());
|
| size_t source_offset = NumberToSize(isolate, source->byte_offset());
|
| @@ -1401,22 +1404,22 @@ static bool DataViewSetValue(
|
| }
|
|
|
|
|
| -#define DATA_VIEW_GETTER(TypeName, Type, Converter) \
|
| - RUNTIME_FUNCTION(Runtime_DataViewGet##TypeName) { \
|
| - HandleScope scope(isolate); \
|
| - DCHECK(args.length() == 3); \
|
| - CONVERT_ARG_HANDLE_CHECKED(JSDataView, holder, 0); \
|
| - CONVERT_NUMBER_ARG_HANDLE_CHECKED(offset, 1); \
|
| - CONVERT_BOOLEAN_ARG_CHECKED(is_little_endian, 2); \
|
| - Type result; \
|
| - if (DataViewGetValue( \
|
| - isolate, holder, offset, is_little_endian, &result)) { \
|
| - return *isolate->factory()->Converter(result); \
|
| - } else { \
|
| - return isolate->Throw(*isolate->factory()->NewRangeError( \
|
| - "invalid_data_view_accessor_offset", \
|
| - HandleVector<Object>(NULL, 0))); \
|
| - } \
|
| +#define DATA_VIEW_GETTER(TypeName, Type, Converter) \
|
| + RUNTIME_FUNCTION(Runtime_DataViewGet##TypeName) { \
|
| + HandleScope scope(isolate); \
|
| + DCHECK(args.length() == 3); \
|
| + CONVERT_ARG_HANDLE_CHECKED(JSDataView, holder, 0); \
|
| + CONVERT_NUMBER_ARG_HANDLE_CHECKED(offset, 1); \
|
| + CONVERT_BOOLEAN_ARG_CHECKED(is_little_endian, 2); \
|
| + Type result; \
|
| + if (DataViewGetValue(isolate, holder, offset, is_little_endian, \
|
| + &result)) { \
|
| + return *isolate->factory()->Converter(result); \
|
| + } else { \
|
| + THROW_NEW_ERROR_RETURN_FAILURE( \
|
| + isolate, NewRangeError("invalid_data_view_accessor_offset", \
|
| + HandleVector<Object>(NULL, 0))); \
|
| + } \
|
| }
|
|
|
| DATA_VIEW_GETTER(Uint8, uint8_t, NewNumberFromUint)
|
| @@ -1483,23 +1486,22 @@ double DataViewConvertValue<double>(double value) {
|
| }
|
|
|
|
|
| -#define DATA_VIEW_SETTER(TypeName, Type) \
|
| - RUNTIME_FUNCTION(Runtime_DataViewSet##TypeName) { \
|
| - HandleScope scope(isolate); \
|
| - DCHECK(args.length() == 4); \
|
| - CONVERT_ARG_HANDLE_CHECKED(JSDataView, holder, 0); \
|
| - CONVERT_NUMBER_ARG_HANDLE_CHECKED(offset, 1); \
|
| - CONVERT_NUMBER_ARG_HANDLE_CHECKED(value, 2); \
|
| - CONVERT_BOOLEAN_ARG_CHECKED(is_little_endian, 3); \
|
| - Type v = DataViewConvertValue<Type>(value->Number()); \
|
| - if (DataViewSetValue( \
|
| - isolate, holder, offset, is_little_endian, v)) { \
|
| - return isolate->heap()->undefined_value(); \
|
| - } else { \
|
| - return isolate->Throw(*isolate->factory()->NewRangeError( \
|
| - "invalid_data_view_accessor_offset", \
|
| - HandleVector<Object>(NULL, 0))); \
|
| - } \
|
| +#define DATA_VIEW_SETTER(TypeName, Type) \
|
| + RUNTIME_FUNCTION(Runtime_DataViewSet##TypeName) { \
|
| + HandleScope scope(isolate); \
|
| + DCHECK(args.length() == 4); \
|
| + CONVERT_ARG_HANDLE_CHECKED(JSDataView, holder, 0); \
|
| + CONVERT_NUMBER_ARG_HANDLE_CHECKED(offset, 1); \
|
| + CONVERT_NUMBER_ARG_HANDLE_CHECKED(value, 2); \
|
| + CONVERT_BOOLEAN_ARG_CHECKED(is_little_endian, 3); \
|
| + Type v = DataViewConvertValue<Type>(value->Number()); \
|
| + if (DataViewSetValue(isolate, holder, offset, is_little_endian, v)) { \
|
| + return isolate->heap()->undefined_value(); \
|
| + } else { \
|
| + THROW_NEW_ERROR_RETURN_FAILURE( \
|
| + isolate, NewRangeError("invalid_data_view_accessor_offset", \
|
| + HandleVector<Object>(NULL, 0))); \
|
| + } \
|
| }
|
|
|
| DATA_VIEW_SETTER(Uint8, uint8_t)
|
| @@ -2167,9 +2169,8 @@ RUNTIME_FUNCTION(Runtime_EnableAccessChecks) {
|
| static Object* ThrowRedeclarationError(Isolate* isolate, Handle<String> name) {
|
| HandleScope scope(isolate);
|
| Handle<Object> args[1] = { name };
|
| - Handle<Object> error = isolate->factory()->NewTypeError(
|
| - "var_redeclaration", HandleVector(args, 1));
|
| - return isolate->Throw(*error);
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate, NewTypeError("var_redeclaration", HandleVector(args, 1)));
|
| }
|
|
|
|
|
| @@ -3075,8 +3076,7 @@ RUNTIME_FUNCTION(Runtime_ThrowGeneratorStateError) {
|
| const char* message = continuation == JSGeneratorObject::kGeneratorClosed ?
|
| "generator_finished" : "generator_running";
|
| Vector< Handle<Object> > argv = HandleVector<Object>(NULL, 0);
|
| - Handle<Object> error = isolate->factory()->NewError(message, argv);
|
| - return isolate->Throw(*error);
|
| + THROW_NEW_ERROR_RETURN_FAILURE(isolate, NewError(message, argv));
|
| }
|
|
|
|
|
| @@ -4813,9 +4813,9 @@ MaybeHandle<Object> Runtime::GetObjectProperty(Isolate* isolate,
|
| Handle<Object> key) {
|
| if (object->IsUndefined() || object->IsNull()) {
|
| Handle<Object> args[2] = { key, object };
|
| - return isolate->Throw<Object>(
|
| - isolate->factory()->NewTypeError("non_object_property_load",
|
| - HandleVector(args, 2)));
|
| + THROW_NEW_ERROR(isolate, NewTypeError("non_object_property_load",
|
| + HandleVector(args, 2)),
|
| + Object);
|
| }
|
|
|
| // Check if the given key is an array index.
|
| @@ -5088,10 +5088,9 @@ MaybeHandle<Object> Runtime::SetObjectProperty(Isolate* isolate,
|
| StrictMode strict_mode) {
|
| if (object->IsUndefined() || object->IsNull()) {
|
| Handle<Object> args[2] = { key, object };
|
| - Handle<Object> error =
|
| - isolate->factory()->NewTypeError("non_object_property_store",
|
| - HandleVector(args, 2));
|
| - return isolate->Throw<Object>(error);
|
| + THROW_NEW_ERROR(isolate, NewTypeError("non_object_property_store",
|
| + HandleVector(args, 2)),
|
| + Object);
|
| }
|
|
|
| if (object->IsJSProxy()) {
|
| @@ -5339,9 +5338,9 @@ RUNTIME_FUNCTION(Runtime_AddPropertyForTemplate) {
|
| }
|
| if (duplicate) {
|
| Handle<Object> args[1] = { key };
|
| - Handle<Object> error = isolate->factory()->NewTypeError(
|
| - "duplicate_template_property", HandleVector(args, 1));
|
| - return isolate->Throw(*error);
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate,
|
| + NewTypeError("duplicate_template_property", HandleVector(args, 1)));
|
| }
|
| #endif
|
|
|
| @@ -6051,8 +6050,9 @@ RUNTIME_FUNCTION(Runtime_GetArgumentsProperty) {
|
| if (String::Equals(isolate->factory()->callee_string(), key)) {
|
| JSFunction* function = frame->function();
|
| if (function->shared()->strict_mode() == STRICT) {
|
| - return isolate->Throw(*isolate->factory()->NewTypeError(
|
| - "strict_arguments_callee", HandleVector<Object>(NULL, 0)));
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate, NewTypeError("strict_arguments_callee",
|
| + HandleVector<Object>(NULL, 0)));
|
| }
|
| return function;
|
| }
|
| @@ -6448,7 +6448,8 @@ MUST_USE_RESULT static Object* ConvertCaseHelper(
|
| current_length += char_length;
|
| if (current_length > String::kMaxLength) {
|
| AllowHeapAllocation allocate_error_and_return;
|
| - return isolate->ThrowInvalidStringLength();
|
| + THROW_NEW_ERROR_RETURN_FAILURE(isolate,
|
| + NewInvalidStringLengthError());
|
| }
|
| }
|
| // Try again with the real length. Return signed if we need
|
| @@ -7163,7 +7164,9 @@ RUNTIME_FUNCTION(Runtime_StringBuilderConcat) {
|
| HandleScope scope(isolate);
|
| DCHECK(args.length() == 3);
|
| CONVERT_ARG_HANDLE_CHECKED(JSArray, array, 0);
|
| - if (!args[1]->IsSmi()) return isolate->ThrowInvalidStringLength();
|
| + if (!args[1]->IsSmi()) {
|
| + THROW_NEW_ERROR_RETURN_FAILURE(isolate, NewInvalidStringLengthError());
|
| + }
|
| CONVERT_SMI_ARG_CHECKED(array_length, 1);
|
| CONVERT_ARG_HANDLE_CHECKED(String, special, 2);
|
|
|
| @@ -7235,7 +7238,9 @@ RUNTIME_FUNCTION(Runtime_StringBuilderJoin) {
|
| HandleScope scope(isolate);
|
| DCHECK(args.length() == 3);
|
| CONVERT_ARG_HANDLE_CHECKED(JSArray, array, 0);
|
| - if (!args[1]->IsSmi()) return isolate->ThrowInvalidStringLength();
|
| + if (!args[1]->IsSmi()) {
|
| + THROW_NEW_ERROR_RETURN_FAILURE(isolate, NewInvalidStringLengthError());
|
| + }
|
| CONVERT_SMI_ARG_CHECKED(array_length, 1);
|
| CONVERT_ARG_HANDLE_CHECKED(String, separator, 2);
|
| RUNTIME_ASSERT(array->HasFastObjectElements());
|
| @@ -7259,7 +7264,7 @@ RUNTIME_FUNCTION(Runtime_StringBuilderJoin) {
|
| int max_nof_separators =
|
| (String::kMaxLength + separator_length - 1) / separator_length;
|
| if (max_nof_separators < (array_length - 1)) {
|
| - return isolate->ThrowInvalidStringLength();
|
| + THROW_NEW_ERROR_RETURN_FAILURE(isolate, NewInvalidStringLengthError());
|
| }
|
| int length = (array_length - 1) * separator_length;
|
| for (int i = 0; i < array_length; i++) {
|
| @@ -7421,7 +7426,7 @@ RUNTIME_FUNCTION(Runtime_SparseJoinWithSeparator) {
|
| // Throw an exception if the resulting string is too large. See
|
| // https://code.google.com/p/chromium/issues/detail?id=336820
|
| // for details.
|
| - return isolate->ThrowInvalidStringLength();
|
| + THROW_NEW_ERROR_RETURN_FAILURE(isolate, NewInvalidStringLengthError());
|
| }
|
|
|
| if (is_ascii) {
|
| @@ -8326,9 +8331,8 @@ static Object* Runtime_NewObjectHelper(Isolate* isolate,
|
| // If the constructor isn't a proper function we throw a type error.
|
| if (!constructor->IsJSFunction()) {
|
| Vector< Handle<Object> > arguments = HandleVector(&constructor, 1);
|
| - Handle<Object> type_error =
|
| - isolate->factory()->NewTypeError("not_constructor", arguments);
|
| - return isolate->Throw(*type_error);
|
| + THROW_NEW_ERROR_RETURN_FAILURE(isolate,
|
| + NewTypeError("not_constructor", arguments));
|
| }
|
|
|
| Handle<JSFunction> function = Handle<JSFunction>::cast(constructor);
|
| @@ -8337,9 +8341,8 @@ static Object* Runtime_NewObjectHelper(Isolate* isolate,
|
| // case generated code bailouts here, since function has no initial_map.
|
| if (!function->should_have_prototype() && !function->shared()->bound()) {
|
| Vector< Handle<Object> > arguments = HandleVector(&constructor, 1);
|
| - Handle<Object> type_error =
|
| - isolate->factory()->NewTypeError("not_constructor", arguments);
|
| - return isolate->Throw(*type_error);
|
| + THROW_NEW_ERROR_RETURN_FAILURE(isolate,
|
| + NewTypeError("not_constructor", arguments));
|
| }
|
|
|
| Debug* debug = isolate->debug();
|
| @@ -9033,10 +9036,8 @@ RUNTIME_FUNCTION(Runtime_PushWithContext) {
|
| Object::ToObject(isolate, args.at<Object>(0));
|
| if (!maybe_object.ToHandle(&extension_object)) {
|
| Handle<Object> handle = args.at<Object>(0);
|
| - Handle<Object> result =
|
| - isolate->factory()->NewTypeError("with_expression",
|
| - HandleVector(&handle, 1));
|
| - return isolate->Throw(*result);
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate, NewTypeError("with_expression", HandleVector(&handle, 1)));
|
| }
|
| }
|
|
|
| @@ -9348,10 +9349,12 @@ static ObjectPair LoadLookupSlotHelper(Arguments args, Isolate* isolate,
|
| case MUTABLE_CHECK_INITIALIZED:
|
| case IMMUTABLE_CHECK_INITIALIZED_HARMONY:
|
| if (value->IsTheHole()) {
|
| - Handle<Object> reference_error =
|
| + Handle<Object> error;
|
| + MaybeHandle<Object> maybe_error =
|
| isolate->factory()->NewReferenceError("not_defined",
|
| HandleVector(&name, 1));
|
| - return MakePair(isolate->Throw(*reference_error), NULL);
|
| + if (maybe_error.ToHandle(&error)) isolate->Throw(*error);
|
| + return MakePair(isolate->heap()->exception(), NULL);
|
| }
|
| // FALLTHROUGH
|
| case MUTABLE_IS_INITIALIZED:
|
| @@ -9403,10 +9406,11 @@ static ObjectPair LoadLookupSlotHelper(Arguments args, Isolate* isolate,
|
|
|
| if (throw_error) {
|
| // The property doesn't exist - throw exception.
|
| - Handle<Object> reference_error =
|
| - isolate->factory()->NewReferenceError("not_defined",
|
| - HandleVector(&name, 1));
|
| - return MakePair(isolate->Throw(*reference_error), NULL);
|
| + Handle<Object> error;
|
| + MaybeHandle<Object> maybe_error = isolate->factory()->NewReferenceError(
|
| + "not_defined", HandleVector(&name, 1));
|
| + if (maybe_error.ToHandle(&error)) isolate->Throw(*error);
|
| + return MakePair(isolate->heap()->exception(), NULL);
|
| } else {
|
| // The property doesn't exist - return undefined.
|
| return MakePair(isolate->heap()->undefined_value(),
|
| @@ -9452,10 +9456,9 @@ RUNTIME_FUNCTION(Runtime_StoreLookupSlot) {
|
| Handle<Context>::cast(holder)->set(index, *value);
|
| } else if (strict_mode == STRICT) {
|
| // Setting read only property in strict mode.
|
| - Handle<Object> error =
|
| - isolate->factory()->NewTypeError("strict_cannot_assign",
|
| - HandleVector(&name, 1));
|
| - return isolate->Throw(*error);
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate,
|
| + NewTypeError("strict_cannot_assign", HandleVector(&name, 1)));
|
| }
|
| return *value;
|
| }
|
| @@ -9469,9 +9472,8 @@ RUNTIME_FUNCTION(Runtime_StoreLookupSlot) {
|
| object = Handle<JSReceiver>::cast(holder);
|
| } else if (strict_mode == STRICT) {
|
| // If absent in strict mode: throw.
|
| - Handle<Object> error = isolate->factory()->NewReferenceError(
|
| - "not_defined", HandleVector(&name, 1));
|
| - return isolate->Throw(*error);
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate, NewReferenceError("not_defined", HandleVector(&name, 1)));
|
| } else {
|
| // If absent in sloppy mode: add the property to the global object.
|
| object = Handle<JSReceiver>(context->global_object());
|
| @@ -9511,18 +9513,16 @@ RUNTIME_FUNCTION(Runtime_ThrowReferenceError) {
|
| HandleScope scope(isolate);
|
| DCHECK(args.length() == 1);
|
| CONVERT_ARG_HANDLE_CHECKED(Object, name, 0);
|
| - Handle<Object> reference_error =
|
| - isolate->factory()->NewReferenceError("not_defined",
|
| - HandleVector(&name, 1));
|
| - return isolate->Throw(*reference_error);
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate, NewReferenceError("not_defined", HandleVector(&name, 1)));
|
| }
|
|
|
|
|
| RUNTIME_FUNCTION(Runtime_ThrowNotDateError) {
|
| HandleScope scope(isolate);
|
| DCHECK(args.length() == 0);
|
| - return isolate->Throw(*isolate->factory()->NewTypeError(
|
| - "not_date_object", HandleVector<Object>(NULL, 0)));
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate, NewTypeError("not_date_object", HandleVector<Object>(NULL, 0)));
|
| }
|
|
|
|
|
| @@ -9880,8 +9880,9 @@ RUNTIME_FUNCTION(Runtime_CompileString) {
|
| !CodeGenerationFromStringsAllowed(isolate, context)) {
|
| Handle<Object> error_message =
|
| context->ErrorMessageForCodeGenerationFromStrings();
|
| - return isolate->Throw(*isolate->factory()->NewEvalError(
|
| - "code_gen_from_strings", HandleVector<Object>(&error_message, 1)));
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate, NewEvalError("code_gen_from_strings",
|
| + HandleVector<Object>(&error_message, 1)));
|
| }
|
|
|
| // Compile source string in the native context.
|
| @@ -9910,8 +9911,10 @@ static ObjectPair CompileGlobalEval(Isolate* isolate,
|
| !CodeGenerationFromStringsAllowed(isolate, native_context)) {
|
| Handle<Object> error_message =
|
| native_context->ErrorMessageForCodeGenerationFromStrings();
|
| - isolate->Throw(*isolate->factory()->NewEvalError(
|
| - "code_gen_from_strings", HandleVector<Object>(&error_message, 1)));
|
| + Handle<Object> error;
|
| + MaybeHandle<Object> maybe_error = isolate->factory()->NewEvalError(
|
| + "code_gen_from_strings", HandleVector<Object>(&error_message, 1));
|
| + if (maybe_error.ToHandle(&error)) isolate->Throw(*error);
|
| return MakePair(isolate->heap()->exception(), NULL);
|
| }
|
|
|
| @@ -10689,9 +10692,9 @@ RUNTIME_FUNCTION(Runtime_ArrayConcat) {
|
| }
|
|
|
| if (visitor.exceeds_array_limit()) {
|
| - return isolate->Throw(
|
| - *isolate->factory()->NewRangeError("invalid_array_length",
|
| - HandleVector<Object>(NULL, 0)));
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate,
|
| + NewRangeError("invalid_array_length", HandleVector<Object>(NULL, 0)));
|
| }
|
| return *visitor.ToArray();
|
| }
|
| @@ -14036,9 +14039,8 @@ RUNTIME_FUNCTION(Runtime_GetImplFromInitializedIntlObject) {
|
|
|
| if (!input->IsJSObject()) {
|
| Vector< Handle<Object> > arguments = HandleVector(&input, 1);
|
| - Handle<Object> type_error =
|
| - isolate->factory()->NewTypeError("not_intl_object", arguments);
|
| - return isolate->Throw(*type_error);
|
| + THROW_NEW_ERROR_RETURN_FAILURE(isolate,
|
| + NewTypeError("not_intl_object", arguments));
|
| }
|
|
|
| Handle<JSObject> obj = Handle<JSObject>::cast(input);
|
| @@ -14047,9 +14049,8 @@ RUNTIME_FUNCTION(Runtime_GetImplFromInitializedIntlObject) {
|
| Handle<Object> impl(obj->GetHiddenProperty(marker), isolate);
|
| if (impl->IsTheHole()) {
|
| Vector< Handle<Object> > arguments = HandleVector(&obj, 1);
|
| - Handle<Object> type_error =
|
| - isolate->factory()->NewTypeError("not_intl_object", arguments);
|
| - return isolate->Throw(*type_error);
|
| + THROW_NEW_ERROR_RETURN_FAILURE(isolate,
|
| + NewTypeError("not_intl_object", arguments));
|
| }
|
| return *impl;
|
| }
|
| @@ -15371,8 +15372,9 @@ RUNTIME_FUNCTION(RuntimeReference_DateField) {
|
| CONVERT_SMI_ARG_CHECKED(index, 1);
|
| if (!obj->IsJSDate()) {
|
| HandleScope scope(isolate);
|
| - return isolate->Throw(*isolate->factory()->NewTypeError(
|
| - "not_date_object", HandleVector<Object>(NULL, 0)));
|
| + THROW_NEW_ERROR_RETURN_FAILURE(
|
| + isolate,
|
| + NewTypeError("not_date_object", HandleVector<Object>(NULL, 0)));
|
| }
|
| JSDate* date = JSDate::cast(obj);
|
| if (index == 0) return date->value();
|
|
|