JIT: Multiplication management
[scilab.git] / scilab / modules / jit / includes / vmkit_core.h
1 #include "MutatorThread.h"
2 #include "vmkit/System.h"
3 #include "vmkit/Locks.h"
4 #include "vmkit/Thread.h"
5 #include "vmkit/VirtualMachine.h"
6
7 namespace VMKitScilab
8 {
9 class ScilabVM;
10
11 class ScilabThread : public vmkit::MutatorThread
12 {
13 private:
14     int argc, iFileIndex, iLangIndex, ret;
15     char **argv;
16
17 public:
18     void setArgs(int argc, char** argv, int iFileIndex, int iLangIndex);
19     void setret(int ret);
20     int getargc();
21     int getiFileIndex();
22     int getiLangIndex();
23     char **getargv();
24     int getret();
25
26     ScilabThread (ScilabVM* vm);
27     ScilabVM* vm();
28     void execute();
29 };
30
31 class ScilabVM : public vmkit::VirtualMachine
32 {
33 private:
34     int ret;
35
36 public:
37     vmkit::BumpPtrAllocator Alloc;
38     vmkit::CompiledFrames **frames;
39
40     ScilabVM (vmkit::BumpPtrAllocator& Alloc, vmkit::CompiledFrames** frames) : VirtualMachine(Alloc, frames) {}
41     ~ScilabVM() {}
42
43     virtual void startCollection() {}
44     virtual void endCollection() {}
45     virtual void scanWeakReferencesQueue(word_t closure) {}
46     virtual void scanSoftReferencesQueue(word_t closure) {}
47     virtual void scanPhantomReferencesQueue(word_t closure) {}
48     virtual void scanFinalizationQueue(word_t closure) {}
49     virtual void addFinalizationCandidate(gc* obj) {}
50     virtual void finalizeObject(gc* res) {}
51     virtual void traceObject(gc* obj, word_t closure) {}
52     virtual void setType(gc* header, void* type) {}
53     virtual void setType(void* header, void* type) {}
54     virtual void* getType(gc* obj) {}
55     virtual size_t getObjectSize(gc* obj) {}
56     virtual const char* getObjectTypeName(gc* obj) {}
57     virtual bool isCorruptedType(gc* header) {}
58     virtual void printMethod(vmkit::FrameInfo* FI, word_t ip, word_t addr) {}
59     virtual void invokeEnqueueReference(gc* res) {}
60     virtual void clearObjectReferent(gc* ref) {}
61     virtual gc** getObjectReferentPtr(gc* _obj) {}
62     virtual void setObjectReferent(gc* _obj, gc* val) {}
63
64     virtual void runApplication(int argc, char** argv) {}
65
66     virtual void runApplication(int argc, char**  argv, int iFileIndex, int iLangIndex);
67
68     virtual void nullPointerException() {}
69     virtual void stackOverflowError() {}
70
71     static void mainStart(ScilabThread* thread);
72     int getret();
73     void setret(int ret);
74 };
75 }