diff -r b40b0e18a918 -r dfce0539a77d jitcraft/API.cpp --- a/jitcraft/API.cpp Tue Jul 10 02:11:13 2012 -0700 +++ b/jitcraft/API.cpp Wed Jul 11 01:12:54 2012 -0700 @@ -29,6 +29,7 @@ #include "Reference.h" #include "Array.h" #include "Interpreter.h" +#include "Stack.h" using namespace ke; @@ -115,7 +116,7 @@ Ke::Compile(const char *path) { RootScope roots(ZONE()); - CompileContext cc(ZONE()); + CompileContext cc(ZONE(), path); char *bytes = NULL; size_t length; @@ -157,6 +158,49 @@ return ToLocal(module); } +void +Ke::Keima::InstallMessageReporter(Ke::IMessageReporter *reporter) +{ + ZONE()->installErrorReporter(reporter); +} + +class StackFrameIterator : public Ke::IStackFrameIterator +{ + StackIter iter_; + + public: + StackFrameIterator() + : iter_(ZONE()) + { + } + + virtual bool done() { + return iter_.done(); + } + + const char *function() { + return iter_.function(); + } + + const char *source() { + return iter_.source(); + } + + unsigned lineNumber() { + return iter_.lineNumber(); + } + + void prev() { + iter_.prev(); + } +}; + +Ke::IStackFrameIterator * +Ke::Keima::NewStackFrameIterator() +{ + return new StackFrameIterator(); +} + static inline ke::HeapRoot * FromAPI(ke::HeapRoot *from) {