OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/exceptions.h" | 5 #include "vm/exceptions.h" |
6 | 6 |
7 #include "vm/dart_api_impl.h" | 7 #include "vm/dart_api_impl.h" |
8 #include "vm/dart_entry.h" | 8 #include "vm/dart_entry.h" |
9 #include "vm/debugger.h" | 9 #include "vm/debugger.h" |
10 #include "vm/flags.h" | 10 #include "vm/flags.h" |
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
528 // We got an error while constructing the exception object. | 528 // We got an error while constructing the exception object. |
529 // Propagate the error instead of throwing the exception. | 529 // Propagate the error instead of throwing the exception. |
530 PropagateError(Error::Cast(result)); | 530 PropagateError(Error::Cast(result)); |
531 } else { | 531 } else { |
532 ASSERT(result.IsInstance()); | 532 ASSERT(result.IsInstance()); |
533 Throw(Instance::Cast(result)); | 533 Throw(Instance::Cast(result)); |
534 } | 534 } |
535 } | 535 } |
536 | 536 |
537 | 537 |
| 538 void Exceptions::ThrowOOM() { |
| 539 Isolate* isolate = Isolate::Current(); |
| 540 const Instance& oom = Instance::Handle( |
| 541 isolate, isolate->object_store()->out_of_memory()); |
| 542 Throw(oom); |
| 543 } |
| 544 |
| 545 |
| 546 void Exceptions::ThrowStackOverflow() { |
| 547 Isolate* isolate = Isolate::Current(); |
| 548 const Instance& stack_overflow = Instance::Handle( |
| 549 isolate, isolate->object_store()->stack_overflow()); |
| 550 Throw(stack_overflow); |
| 551 } |
| 552 |
| 553 |
538 RawObject* Exceptions::Create(ExceptionType type, const Array& arguments) { | 554 RawObject* Exceptions::Create(ExceptionType type, const Array& arguments) { |
539 Library& library = Library::Handle(); | 555 Library& library = Library::Handle(); |
540 const String* class_name = NULL; | 556 const String* class_name = NULL; |
541 const String* constructor_name = &Symbols::Dot(); | 557 const String* constructor_name = &Symbols::Dot(); |
542 switch (type) { | 558 switch (type) { |
543 case kNone: | 559 case kNone: |
544 UNREACHABLE(); | 560 UNREACHABLE(); |
545 break; | 561 break; |
546 case kRange: | 562 case kRange: |
547 library = Library::CoreLibrary(); | 563 library = Library::CoreLibrary(); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
590 break; | 606 break; |
591 } | 607 } |
592 | 608 |
593 return DartLibraryCalls::ExceptionCreate(library, | 609 return DartLibraryCalls::ExceptionCreate(library, |
594 *class_name, | 610 *class_name, |
595 *constructor_name, | 611 *constructor_name, |
596 arguments); | 612 arguments); |
597 } | 613 } |
598 | 614 |
599 } // namespace dart | 615 } // namespace dart |
OLD | NEW |