blob: a175879f8fcbaeeae060556441e45ad3d172833b [file] [log] [blame]
describe('decoder', function()
-- Decode simple function
local bytecode = require('bpf.ljbytecode')
local f = function (x) return x + 1 end
it('should decode functions', function()
-- Make sure it calls LJ decoder
local bc = bytecode.decoder(f)
assert.truthy(bc)
-- Decode bytecode bytecode to instructions
local jutil = require("jit.util")
spy.on(jutil, 'funcbc')
local pc, op = bc()
-- Check bytecode for sanity (starts with ADDVN(x, 1))
assert.equal(pc, 1)
assert.equal(op, 'ADDVN')
for pc, op in bc do
assert.truthy(pc and op)
end
assert.spy(jutil.funcbc).was.called()
end)
it('should fail on bad input', function()
assert.has_error(function() bytecode.decoder(nil)() end)
assert.has_error(function() bytecode.decoder(5)() end)
assert.has_error(function() bytecode.decoder('test')() end)
end)
it('should dump bytecode', function()
bytecode.dump(f)
end)
end)