Skip to content

Instantly share code, notes, and snippets.

@bdw
Last active August 29, 2015 14:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bdw/736b57fe772fc0269dbe to your computer and use it in GitHub Desktop.
Save bdw/736b57fe772fc0269dbe to your computer and use it in GitHub Desktop.
Old
getlex_no: (let (($str (load (idx (load (addr (cu)
(&offsetof MVMCompUnit body.strings)) ptr_sz)
$1 ptr_sz) ptr_sz))
($res (call (&funcptr &MVM_frame_find_lexical_by_name)
(arglist 3 (carg (tc) ptr_sz)
(carg $str ptr_sz)
(carg 8 ptr_sz))
reg_val)))
(ifelse (nz $res) (load $res ptr_sz) $res))
# NB - idx is basically 3 args, a + b*x, x being constant; addr = a+x, x being constant
# both can be implemented using simple addition or multiplcation, but that requires an extra const node
# more importantly,
MACRO (^get_string `a) (load (idx (load (addr (cu) (&offsetof MVMCompUnit body.strings)) ptr_sz) `a ptr_sz) ptr_sz)
getlex_no: (let (($res (call (&funcptr &MVM_frame_find_lexical_by_name)
(arglist 3 (carg (tc) ptr_sz)
(carg (^get_string $1) ptr_sz)
(carg 8 ptr_sz)
reg_val)))
(ifelse (nz $res) (load $res ptr_sz) $res)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment