| Index: runtime/vm/snapshot.cc
|
| ===================================================================
|
| --- runtime/vm/snapshot.cc (revision 31435)
|
| +++ runtime/vm/snapshot.cc (working copy)
|
| @@ -167,12 +167,10 @@
|
|
|
|
|
| RawObject* SnapshotReader::ReadObject() {
|
| - // Setup for long jump in case there is an exception while reading.
|
| - LongJump* base = isolate()->long_jump_base();
|
| - LongJump jump;
|
| - isolate()->set_long_jump_base(&jump);
|
| const Instance& null_object = Instance::Handle();
|
| *ErrorHandle() = UnhandledException::New(null_object, null_object);
|
| + // Setup for long jump in case there is an exception while reading.
|
| + LongJumpScope jump;
|
| if (setjmp(*jump.Set()) == 0) {
|
| Object& obj = Object::Handle(ReadObjectImpl());
|
| for (intptr_t i = 0; i < backward_references_.length(); i++) {
|
| @@ -181,13 +179,11 @@
|
| backward_references_[i]->set_state(kIsDeserialized);
|
| }
|
| }
|
| - isolate()->set_long_jump_base(base);
|
| return obj.raw();
|
| } else {
|
| // An error occurred while reading, return the error object.
|
| const Error& err = Error::Handle(isolate()->object_store()->sticky_error());
|
| isolate()->object_store()->clear_sticky_error();
|
| - isolate()->set_long_jump_base(base);
|
| return err.raw();
|
| }
|
| }
|
| @@ -1082,9 +1078,7 @@
|
|
|
| // Setup for long jump in case there is an exception while writing
|
| // the snapshot.
|
| - LongJump* base = isolate->long_jump_base();
|
| - LongJump jump;
|
| - isolate->set_long_jump_base(&jump);
|
| + LongJumpScope jump;
|
| if (setjmp(*jump.Set()) == 0) {
|
| NoGCScope no_gc;
|
|
|
| @@ -1101,10 +1095,7 @@
|
|
|
| FillHeader(kind());
|
| UnmarkAll();
|
| -
|
| - isolate->set_long_jump_base(base);
|
| } else {
|
| - isolate->set_long_jump_base(base);
|
| ThrowException(exception_type(), exception_msg());
|
| }
|
| }
|
| @@ -1475,9 +1466,7 @@
|
|
|
| // Setup for long jump in case there is an exception while writing
|
| // the snapshot.
|
| - LongJump* base = isolate->long_jump_base();
|
| - LongJump jump;
|
| - isolate->set_long_jump_base(&jump);
|
| + LongJumpScope jump;
|
| if (setjmp(*jump.Set()) == 0) {
|
| // Write out the library object.
|
| NoGCScope no_gc;
|
| @@ -1485,9 +1474,7 @@
|
| WriteObject(lib.raw());
|
| FillHeader(kind());
|
| UnmarkAll();
|
| - isolate->set_long_jump_base(base);
|
| } else {
|
| - isolate->set_long_jump_base(base);
|
| ThrowException(exception_type(), exception_msg());
|
| }
|
| }
|
| @@ -1512,16 +1499,12 @@
|
|
|
| // Setup for long jump in case there is an exception while writing
|
| // the message.
|
| - LongJump* base = isolate->long_jump_base();
|
| - LongJump jump;
|
| - isolate->set_long_jump_base(&jump);
|
| + LongJumpScope jump;
|
| if (setjmp(*jump.Set()) == 0) {
|
| NoGCScope no_gc;
|
| WriteObject(obj.raw());
|
| UnmarkAll();
|
| - isolate->set_long_jump_base(base);
|
| } else {
|
| - isolate->set_long_jump_base(base);
|
| ThrowException(exception_type(), exception_msg());
|
| }
|
| }
|
|
|