#ifndef __X10_COMPILER_WS_FINISHFRAME_H
#define __X10_COMPILER_WS_FINISHFRAME_H

#include <x10rt.h>


#define X10_COMPILER_WS_FRAME_H_NODEPS
#include <x10/compiler/ws/Frame.h>
#undef X10_COMPILER_WS_FRAME_H_NODEPS
#define X10_LANG_INT_H_NODEPS
#include <x10/lang/Int.h>
#undef X10_LANG_INT_H_NODEPS
namespace x10 { namespace lang { 
class Int;
} } 
namespace x10 { namespace compiler { 
class Uninitialized;
} } 
namespace x10 { namespace util { 
template<class TPMGL(T)> class Stack;
} } 
namespace x10 { namespace lang { 
class Throwable;
} } 
namespace x10 { namespace compiler { 
class Ifdef;
} } 
namespace x10 { namespace compiler { 
class Header;
} } 
namespace x10 { namespace util { namespace concurrent { 
class Lock;
} } } 
namespace x10 { namespace lang { 
class Runtime;
} } 
namespace x10 { namespace lang { 
class Boolean;
} } 
namespace x10 { namespace util { 
template<class TPMGL(T)> class ArrayList;
} } 
namespace x10 { namespace compiler { namespace ws { 
class Worker;
} } } 
namespace x10 { namespace compiler { 
class Abort;
} } 
namespace x10 { namespace lang { 
class MultipleExceptions;
} } 
namespace x10 { namespace compiler { 
class Inline;
} } 
namespace x10 { namespace compiler { 
class NoInline;
} } 
namespace x10 { namespace compiler { 
class NoReturn;
} } 
namespace x10 { namespace compiler { namespace ws { 

class FinishFrame : public x10::compiler::ws::Frame   {
    public:
    RTT_H_DECLS_CLASS
    
    x10_int FMGL(asyncs);
    
    x10aux::ref<x10::util::Stack<x10aux::ref<x10::lang::Throwable> > > FMGL(stack);
    
    x10aux::ref<x10::compiler::ws::FinishFrame> FMGL(redirect);
    
    void _constructor(x10aux::ref<x10::compiler::ws::Frame> up) {
        
        //#line 22 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/compiler/ws/FinishFrame.x10": x10.ast.X10ConstructorCall_c
        (this)->::x10::compiler::ws::Frame::_constructor(up);
        
        //#line 21 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/compiler/ws/FinishFrame.x10": x10.ast.AssignPropertyCall_c
        
        //#line 23 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/compiler/ws/FinishFrame.x10": Eval of x10.ast.X10FieldAssign_c
        ((x10aux::ref<x10::compiler::ws::FinishFrame>)this)->FMGL(stack) =
          X10_NULL;
        {
            
            //#line 25 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/compiler/ws/FinishFrame.x10": Eval of x10.ast.X10FieldAssign_c
            ((x10aux::ref<x10::compiler::ws::FinishFrame>)this)->FMGL(redirect) =
              X10_NULL;
        }
    }
    void _constructor(x10_int id__95, x10aux::ref<x10::compiler::ws::FinishFrame> o);
    
    virtual x10aux::ref<x10::compiler::ws::Frame> remap() = 0;
    virtual x10aux::ref<x10::compiler::ws::Frame> realloc();
    virtual void wrapBack(x10aux::ref<x10::compiler::ws::Worker> worker,
                          x10aux::ref<x10::compiler::ws::Frame> frame);
    virtual void wrapResume(x10aux::ref<x10::compiler::ws::Worker> worker);
    virtual void append(x10aux::ref<x10::util::Stack<x10aux::ref<x10::lang::Throwable> > > s);
    virtual void append(x10aux::ref<x10::compiler::ws::FinishFrame> ff);
    virtual void caught(x10aux::ref<x10::lang::Throwable> t);
    virtual void rethrow();
    virtual void rethrowSlow() X10_PRAGMA_NORETURN ;
    virtual void check();
    virtual x10aux::ref<x10::compiler::ws::FinishFrame> x10__compiler__ws__FinishFrame____x10__compiler__ws__FinishFrame__this(
      );
    
    // Serialization
    public: virtual void _serialize_body(x10aux::serialization_buffer& buf);
    
    public: void _deserialize_body(x10aux::deserialization_buffer& buf);
    
};

} } } 
#endif // X10_COMPILER_WS_FINISHFRAME_H

namespace x10 { namespace compiler { namespace ws { 
class FinishFrame;
} } } 

#ifndef X10_COMPILER_WS_FINISHFRAME_H_NODEPS
#define X10_COMPILER_WS_FINISHFRAME_H_NODEPS
#include <x10/compiler/ws/Frame.h>
#include <x10/lang/Int.h>
#include <x10/compiler/Uninitialized.h>
#include <x10/util/Stack.h>
#include <x10/lang/Throwable.h>
#include <x10/compiler/Ifdef.h>
#include <x10/compiler/Header.h>
#include <x10/util/concurrent/Lock.h>
#include <x10/lang/Runtime.h>
#include <x10/lang/Boolean.h>
#include <x10/util/ArrayList.h>
#include <x10/compiler/ws/Worker.h>
#include <x10/compiler/Abort.h>
#include <x10/lang/MultipleExceptions.h>
#include <x10/compiler/Inline.h>
#include <x10/compiler/NoInline.h>
#include <x10/compiler/NoReturn.h>
#ifndef X10_COMPILER_WS_FINISHFRAME_H_GENERICS
#define X10_COMPILER_WS_FINISHFRAME_H_GENERICS
#endif // X10_COMPILER_WS_FINISHFRAME_H_GENERICS
#endif // __X10_COMPILER_WS_FINISHFRAME_H_NODEPS
