| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/messages.h" | 5 #include "src/messages.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "src/api.h" | 9 #include "src/api.h" |
| 10 #include "src/execution.h" | 10 #include "src/execution.h" |
| (...skipping 872 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 883 MaybeHandle<String> err_str = | 883 MaybeHandle<String> err_str = |
| 884 ErrorUtils::ToString(isolate, Handle<Object>::cast(error)); | 884 ErrorUtils::ToString(isolate, Handle<Object>::cast(error)); |
| 885 if (err_str.is_null()) { | 885 if (err_str.is_null()) { |
| 886 // Error.toString threw. Try to return a string representation of the thrown | 886 // Error.toString threw. Try to return a string representation of the thrown |
| 887 // exception instead. | 887 // exception instead. |
| 888 | 888 |
| 889 DCHECK(isolate->has_pending_exception()); | 889 DCHECK(isolate->has_pending_exception()); |
| 890 Handle<Object> pending_exception = | 890 Handle<Object> pending_exception = |
| 891 handle(isolate->pending_exception(), isolate); | 891 handle(isolate->pending_exception(), isolate); |
| 892 isolate->clear_pending_exception(); | 892 isolate->clear_pending_exception(); |
| 893 isolate->set_external_caught_exception(false); |
| 893 | 894 |
| 894 err_str = ErrorUtils::ToString(isolate, pending_exception); | 895 err_str = ErrorUtils::ToString(isolate, pending_exception); |
| 895 if (err_str.is_null()) { | 896 if (err_str.is_null()) { |
| 896 // Formatting the thrown exception threw again, give up. | 897 // Formatting the thrown exception threw again, give up. |
| 897 DCHECK(isolate->has_pending_exception()); | 898 DCHECK(isolate->has_pending_exception()); |
| 898 isolate->clear_pending_exception(); | 899 isolate->clear_pending_exception(); |
| 899 | 900 isolate->set_external_caught_exception(false); |
| 900 builder->AppendCString("<error>"); | 901 builder->AppendCString("<error>"); |
| 901 } else { | 902 } else { |
| 902 // Formatted thrown exception successfully, append it. | 903 // Formatted thrown exception successfully, append it. |
| 903 builder->AppendCString("<error: "); | 904 builder->AppendCString("<error: "); |
| 904 builder->AppendString(err_str.ToHandleChecked()); | 905 builder->AppendString(err_str.ToHandleChecked()); |
| 905 builder->AppendCharacter('>'); | 906 builder->AppendCharacter('>'); |
| 906 } | 907 } |
| 907 } else { | 908 } else { |
| 908 builder->AppendString(err_str.ToHandleChecked()); | 909 builder->AppendString(err_str.ToHandleChecked()); |
| 909 } | 910 } |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 984 StackFrameBase* frame = it.Frame(); | 985 StackFrameBase* frame = it.Frame(); |
| 985 MaybeHandle<String> maybe_frame_string = frame->ToString(); | 986 MaybeHandle<String> maybe_frame_string = frame->ToString(); |
| 986 if (maybe_frame_string.is_null()) { | 987 if (maybe_frame_string.is_null()) { |
| 987 // CallSite.toString threw. Try to return a string representation of the | 988 // CallSite.toString threw. Try to return a string representation of the |
| 988 // thrown exception instead. | 989 // thrown exception instead. |
| 989 | 990 |
| 990 DCHECK(isolate->has_pending_exception()); | 991 DCHECK(isolate->has_pending_exception()); |
| 991 Handle<Object> pending_exception = | 992 Handle<Object> pending_exception = |
| 992 handle(isolate->pending_exception(), isolate); | 993 handle(isolate->pending_exception(), isolate); |
| 993 isolate->clear_pending_exception(); | 994 isolate->clear_pending_exception(); |
| 995 isolate->set_external_caught_exception(false); |
| 994 | 996 |
| 995 maybe_frame_string = ErrorUtils::ToString(isolate, pending_exception); | 997 maybe_frame_string = ErrorUtils::ToString(isolate, pending_exception); |
| 996 if (maybe_frame_string.is_null()) { | 998 if (maybe_frame_string.is_null()) { |
| 997 // Formatting the thrown exception threw again, give up. | 999 // Formatting the thrown exception threw again, give up. |
| 998 | 1000 |
| 999 builder.AppendCString("<error>"); | 1001 builder.AppendCString("<error>"); |
| 1000 } else { | 1002 } else { |
| 1001 // Formatted thrown exception successfully, append it. | 1003 // Formatted thrown exception successfully, append it. |
| 1002 builder.AppendCString("<error: "); | 1004 builder.AppendCString("<error: "); |
| 1003 builder.AppendString(maybe_frame_string.ToHandleChecked()); | 1005 builder.AppendString(maybe_frame_string.ToHandleChecked()); |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1215 Handle<String> arg2_str = Object::NoSideEffectsToString(isolate, arg2); | 1217 Handle<String> arg2_str = Object::NoSideEffectsToString(isolate, arg2); |
| 1216 | 1218 |
| 1217 isolate->native_context()->IncrementErrorsThrown(); | 1219 isolate->native_context()->IncrementErrorsThrown(); |
| 1218 | 1220 |
| 1219 Handle<String> msg; | 1221 Handle<String> msg; |
| 1220 if (!MessageTemplate::FormatMessage(template_index, arg0_str, arg1_str, | 1222 if (!MessageTemplate::FormatMessage(template_index, arg0_str, arg1_str, |
| 1221 arg2_str) | 1223 arg2_str) |
| 1222 .ToHandle(&msg)) { | 1224 .ToHandle(&msg)) { |
| 1223 DCHECK(isolate->has_pending_exception()); | 1225 DCHECK(isolate->has_pending_exception()); |
| 1224 isolate->clear_pending_exception(); | 1226 isolate->clear_pending_exception(); |
| 1227 isolate->set_external_caught_exception(false); |
| 1225 return isolate->factory()->NewStringFromAsciiChecked("<error>"); | 1228 return isolate->factory()->NewStringFromAsciiChecked("<error>"); |
| 1226 } | 1229 } |
| 1227 | 1230 |
| 1228 return msg; | 1231 return msg; |
| 1229 } | 1232 } |
| 1230 | 1233 |
| 1231 } // namespace | 1234 } // namespace |
| 1232 | 1235 |
| 1233 // static | 1236 // static |
| 1234 MaybeHandle<Object> ErrorUtils::MakeGenericError( | 1237 MaybeHandle<Object> ErrorUtils::MakeGenericError( |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1246 DCHECK(mode != SKIP_UNTIL_SEEN); | 1249 DCHECK(mode != SKIP_UNTIL_SEEN); |
| 1247 | 1250 |
| 1248 Handle<Object> no_caller; | 1251 Handle<Object> no_caller; |
| 1249 Handle<String> msg = FormatMessage(isolate, template_index, arg0, arg1, arg2); | 1252 Handle<String> msg = FormatMessage(isolate, template_index, arg0, arg1, arg2); |
| 1250 return ErrorUtils::Construct(isolate, constructor, constructor, msg, mode, | 1253 return ErrorUtils::Construct(isolate, constructor, constructor, msg, mode, |
| 1251 no_caller, false); | 1254 no_caller, false); |
| 1252 } | 1255 } |
| 1253 | 1256 |
| 1254 } // namespace internal | 1257 } // namespace internal |
| 1255 } // namespace v8 | 1258 } // namespace v8 |
| OLD | NEW |