jitcraft/Code.h
changeset 70 1aec996cde2d
parent 59 b7d61ddb3c8d
child 85 06a0015b6a5c
     1.1 --- a/jitcraft/Code.h	Wed Jul 11 01:12:54 2012 -0700
     1.2 +++ b/jitcraft/Code.h	Thu Jul 12 00:38:00 2012 -0700
     1.3 @@ -24,6 +24,7 @@
     1.4  #include "Heap.h"
     1.5  #include "Types.h"
     1.6  #include "FixedArray.h"
     1.7 +#include "Token.h"
     1.8  
     1.9  namespace ke {
    1.10  
    1.11 @@ -40,7 +41,9 @@
    1.12      Barriered<FixedArray> locals_;
    1.13      Barriered<FixedArray> objects_;
    1.14      Barriered<ByteArray> safepoints_;
    1.15 +    Barriered<ByteArray> sourcemap_;
    1.16      unsigned maxStackDepth_;
    1.17 +    unsigned lineNumber_;
    1.18  
    1.19    public:
    1.20      static inline size_t BytesPerSafepoint(size_t stackDepth) {
    1.21 @@ -50,7 +53,8 @@
    1.22    public:
    1.23      static Code *New(Zone *zone, Handle<ByteArray> bytecode, Handle<FixedArray> locals,
    1.24                       Handle<FixedArray> objects, unsigned maxStackDepth, Handle<Module> module,
    1.25 -                     Handle<ByteArray> safepoints);
    1.26 +                     Handle<ByteArray> safepoints, Handle<ByteArray> sourcemap,
    1.27 +                     unsigned lineNumber);
    1.28  
    1.29      Module *module() {
    1.30          return module_;
    1.31 @@ -86,6 +90,11 @@
    1.32          return pc - start();
    1.33      }
    1.34  
    1.35 +    SourcePosition pcToSource(unsigned pc);
    1.36 +    unsigned lineNumber() {
    1.37 +        return lineNumber_;
    1.38 +    }
    1.39 +
    1.40      // GC Descriptor.
    1.41      static inline size_t offsetOfModule() {
    1.42          return offsetof(Code, module_);
    1.43 @@ -102,6 +111,9 @@
    1.44      static inline size_t offsetOfSafepoints() {
    1.45          return offsetof(Code, safepoints_);
    1.46      }
    1.47 +    static inline size_t offsetOfSourceMap() {
    1.48 +        return offsetof(Code, sourcemap_);
    1.49 +    }
    1.50      // End GC Descriptor.
    1.51  
    1.52      static Code *cast(Object *obj) {