dart-sdk/runtime/vm/longjump.h
turnidge@google.com 0ddd4c04e9 Dart_PropagateError, take 2.
This change hopefully takes care of the non-mac build issues.  The
checked mode failures are fixed in a separate cl.
Review URL: https://chromiumcodereview.appspot.com//9316071

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@3863 260f80e4-7a28-3924-810f-c04153c831b5
2012-02-02 19:05:06 +00:00

37 lines
775 B
C++

// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#ifndef VM_LONGJUMP_H_
#define VM_LONGJUMP_H_
#include <setjmp.h>
#include "vm/allocation.h"
namespace dart {
class Error;
class LongJump : public ValueObject {
public:
LongJump() : top_(NULL) { }
jmp_buf* Set();
void Jump(int value, const Error& error);
// Would it be safe to use this longjump?
//
// Checks to make sure that the jump would not cross Dart frames.
bool IsSafeToJump();
private:
jmp_buf environment_;
StackResource* top_;
DISALLOW_COPY_AND_ASSIGN(LongJump);
};
} // namespace dart
#endif // VM_LONGJUMP_H_