in a few places.
Review URL: http://codereview.chromium.org/8828
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@616
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
v8::Handle<Value> ThrowException(v8::Handle<v8::Value> value) {
if (IsDeadCheck("v8::ThrowException()")) return v8::Handle<Value>();
- i::Top::ScheduleThrow(*Utils::OpenHandle(*value));
+ // If we're passed an empty handle, we throw an undefined exception
+ // to deal more gracefully with out of memory situations.
+ if (value.IsEmpty()) {
+ i::Top::ScheduleThrow(i::Heap::undefined_value());
+ } else {
+ i::Top::ScheduleThrow(*Utils::OpenHandle(*value));
+ }
return v8::Undefined();
}
if (report_exception) {
if (message != NULL) {
MessageHandler::ReportMessage(message);
- } else {
+ } else if (!message_obj.is_null()) {
MessageHandler::ReportMessage(location, message_obj);
}
}