jitcraft/API.cpp
changeset 69 dfce0539a77d
parent 68 b40b0e18a918
child 70 1aec996cde2d
     1.1 --- a/jitcraft/API.cpp	Tue Jul 10 02:11:13 2012 -0700
     1.2 +++ b/jitcraft/API.cpp	Wed Jul 11 01:12:54 2012 -0700
     1.3 @@ -29,6 +29,7 @@
     1.4  #include "Reference.h"
     1.5  #include "Array.h"
     1.6  #include "Interpreter.h"
     1.7 +#include "Stack.h"
     1.8  
     1.9  using namespace ke;
    1.10  
    1.11 @@ -115,7 +116,7 @@
    1.12  Ke::Compile(const char *path)
    1.13  {
    1.14      RootScope roots(ZONE());
    1.15 -    CompileContext cc(ZONE());
    1.16 +    CompileContext cc(ZONE(), path);
    1.17  
    1.18      char *bytes = NULL;
    1.19      size_t length;
    1.20 @@ -157,6 +158,49 @@
    1.21      return ToLocal<ke::Module, Ke::Module>(module);
    1.22  }
    1.23  
    1.24 +void
    1.25 +Ke::Keima::InstallMessageReporter(Ke::IMessageReporter *reporter)
    1.26 +{
    1.27 +    ZONE()->installErrorReporter(reporter);
    1.28 +}
    1.29 +
    1.30 +class StackFrameIterator : public Ke::IStackFrameIterator
    1.31 +{
    1.32 +    StackIter iter_;
    1.33 +
    1.34 +  public:
    1.35 +    StackFrameIterator()
    1.36 +      : iter_(ZONE())
    1.37 +    {
    1.38 +    }
    1.39 +
    1.40 +    virtual bool done() {
    1.41 +        return iter_.done();
    1.42 +    }
    1.43 +
    1.44 +    const char *function() {
    1.45 +        return iter_.function();
    1.46 +    }
    1.47 +
    1.48 +    const char *source() {
    1.49 +        return iter_.source();
    1.50 +    }
    1.51 +
    1.52 +    unsigned lineNumber() {
    1.53 +        return iter_.lineNumber();
    1.54 +    }
    1.55 +
    1.56 +    void prev() {
    1.57 +        iter_.prev();
    1.58 +    }
    1.59 +};
    1.60 +
    1.61 +Ke::IStackFrameIterator *
    1.62 +Ke::Keima::NewStackFrameIterator()
    1.63 +{
    1.64 +    return new StackFrameIterator();
    1.65 +}
    1.66 +
    1.67  static inline ke::HeapRoot *
    1.68  FromAPI(ke::HeapRoot *from)
    1.69  {