diff -r dfce0539a77d -r 1aec996cde2d jitcraft/BytecodeEmitter.cpp --- a/jitcraft/BytecodeEmitter.cpp Wed Jul 11 01:12:54 2012 -0700 +++ b/jitcraft/BytecodeEmitter.cpp Thu Jul 12 00:38:00 2012 -0700 @@ -32,6 +32,8 @@ oom_(false), maxStackDepth_(0) { + lastCodePosition_ = 0; + firstLine_ = 1; } bool @@ -95,3 +97,18 @@ oom_ &= oopRecords_.append(record); } +void +BytecodeEmitter::note_position(const SourcePosition &pos) +{ + assert(pos.line > 0); + assert(unsigned(pos.line) >= firstLine_); + + unsigned lineDelta = unsigned(pos.line) - firstLine_; + unsigned pcDelta = unsigned(position()) - lastCodePosition_; + + sourcemap_.writeUint32(pcDelta); + sourcemap_.writeUint32(lineDelta); + sourcemap_.writeUint32(pos.col); + + lastCodePosition_ = unsigned(position()); +}