58 lines
No EOL
1.3 KiB
C++
58 lines
No EOL
1.3 KiB
C++
|
|
|
|
#include "MethodObject/methodobject.h"
|
|
#include "primitives/primitives.h"
|
|
|
|
#include "Interpreter/Interpreter.h"
|
|
|
|
#include "log.h"
|
|
|
|
using namespace osc;
|
|
using namespace tp;
|
|
using namespace obj;
|
|
|
|
int main(int argc, char* argv[]) {
|
|
tp::alloc_init();
|
|
string::Initialize();
|
|
Logger::init();
|
|
|
|
objects_init();
|
|
primitives_define_types();
|
|
MethodObject::Initialize();
|
|
|
|
{
|
|
time_ms load_start = get_time();
|
|
RelAssert(argc == 2 && "Invalid Arguments");
|
|
auto obj = NDO->load(argv[1]);
|
|
RelAssert(obj && "Failed to Load the File");
|
|
RelAssert(obj->type == &MethodObject::TypeData && "Innvalid file content");
|
|
|
|
Interpreter interp;
|
|
NDO_CASTV(MethodObject, obj, method);
|
|
|
|
RelAssert(method->mScript && "Innvalid file content");
|
|
time_ms load_end = get_time();
|
|
|
|
GLog->write("\noscvm - execution started\n");
|
|
time_ms exec_start = get_time();
|
|
interp.exec(&method->mScript->mBytecode);
|
|
time_ms exec_end = get_time();
|
|
|
|
auto exec_time = (exec_end - exec_start);
|
|
auto load_time = (load_end - load_start);
|
|
GLog->write(sfmt("\noscvm - execution finished (Load : %f Exec : %f)", load_time, exec_time));
|
|
}
|
|
|
|
try {
|
|
MethodObject::UnInitialize();
|
|
objects_finalize();
|
|
primitives_uninitialize();
|
|
|
|
Logger::deinit();
|
|
string::UnInitialize();
|
|
tp::alloc_uninit();
|
|
|
|
} catch (...) {
|
|
tp::terminate();
|
|
}
|
|
} |