jitcraft/main.cpp
author David Anderson <dvander@alliedmods.net>
Mon Jul 09 21:40:20 2012 -0700 (2012-07-09)
changeset 66 cbba1997dc71
parent 62 e04c5be84792
child 68 b40b0e18a918
permissions -rw-r--r--
Add support for passing arrays.
     1 /*
     2  * Copyright (C) 2012 David Anderson
     3  *
     4  * This file is part of JITCraft.
     5  *
     6  * JITCraft is free software: you can redistribute it and/or modify it under
     7  * the terms of the GNU General Public License as published by the Free
     8  * Software Foundation, either version 3 of the License, or (at your option)
     9  * any later version.
    10  * 
    11  * Foobar is distributed in the hope that it will be useful, but WITHOUT ANY
    12  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    13  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
    14  *
    15  * You should have received a copy of the GNU General Public License along with
    16  * JITCraft. If not, see http://www.gnu.org/licenses/.
    17  */
    18 #include <stdio.h>
    19 #include "Utility.h"
    20 #include "Scanner.h"
    21 #include "Parser.h"
    22 #include "SemanticAnalysis.h"
    23 #include "Zone.h"
    24 #include "BytecodeCompiler.h"
    25 #include "Code.h"
    26 #include "Interpreter.h"
    27 #include "Modules.h"
    28 #include "RootScopes.h"
    29 #include "../include/keima.h"
    30 
    31 using namespace ke;
    32 
    33 #if 0
    34 static bool
    35 Compile(const char *stream, size_t length)
    36 {
    37 
    38     printf("\n ------------ \n\n");
    39 
    40     Disassemble(module->getFunction(1)->code(), stdout);
    41     //Disassemble(module->getFunction(1), stdout);
    42 
    43     printf("\n ------------ \n\n");
    44 
    45     Function *main = module->getFunction(1);
    46 
    47     Top top = ZONE()->stack().begin();
    48     LocalTop localTop(top);
    49 
    50     Frame *frame = ZONE()->stack().pushFrame(main);
    51     if (!frame)
    52         return false;
    53 
    54     LocalSlot result;
    55     if (!Interpret(ZONE(), frame, &result))
    56         return false;
    57 
    58     printf("Result: %d\n", result.i32);
    59 
    60     return true;
    61 }
    62 #endif
    63 
    64 int main(int argc, char **argv)
    65 {
    66     if (argc < 2) {
    67         fprintf(stderr, "Usage: <file>\n");
    68         return 1;
    69     }
    70 
    71     if (!Ke::Keima::Initialize())
    72         return 1;
    73     {
    74         Ke::HandleScope scope;
    75         Ke::Local<Ke::Module> module = Ke::Compile(argv[1]);
    76         if (!module)
    77             return 1;
    78 
    79        
    80     }
    81 
    82     Ke::Keima::Shutdown();
    83 }