Disassembling works on byte-compiled functions and functions evaluated in buffers without lexical bindings.  If you try to disassemble a function evaluated with lexical bindings, it fails with error "disassemble-internal: not a function".

To reproduce:
* M-x disassemble RET gv-get RET --> works (assuming it is loaded from 'gv.elc')
* Go to gv-get definition and eval it explicitly
* M-x disassemble RET gv-get RET --> fails

Paul