blob: d24094f83c0974b6c77c912633ce344ad1a06e14 [file] [log] [blame]
//===--------- VirtualMachine.h - Registering a VM ------------------------===//
//
// The VMKit project
//
// This file is distributed under the University of Pierre et Marie Curie
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// Ultimately, this would be like a generic way of defining a VM. But we're not
// quite there yet.
//
//===----------------------------------------------------------------------===//
#ifndef MVM_VIRTUALMACHINE_H
#define MVM_VIRTUALMACHINE_H
#include "mvm/CompilationUnit.h"
#include "mvm/Object.h"
namespace mvm {
/// VirtualMachine - This class is the root of virtual machine classes. It
/// defines what a VM should be. Currently, a VM only initializes itself
/// and runs applications.
///
class VirtualMachine : public mvm::Object {
public:
/// runApplication - Run an application. The application name is in
/// the arguments, hence it is the virtual machine's job to parse them.
virtual void runApplication(int argc, char** argv) = 0;
/// compile - Compile a given file to LLVM.
virtual void compile(const char* name) = 0;
static CompilationUnit* initialiseJVM(bool staticCompilation = false);
static VirtualMachine* createJVM(CompilationUnit* C = 0);
static CompilationUnit* initialiseCLIVM();
static VirtualMachine* createCLIVM(CompilationUnit* C = 0);
};
} // end namespace mvm
#endif // MVM_VIRTUALMACHINE_H