Author: fperrad
Date: Fri Jun 1 00:07:16 2007
New Revision: 18722
Modified:
trunk/languages/lua/lua.pir
trunk/languages/lua/src/POSTGrammar.tg
Log:
[Lua]
- POST generates a docall
Modified: trunk/languages/lua/lua.pir
==============================================================================
--- trunk/languages/lua/lua.pir (original)
+++ trunk/languages/lua/lua.pir Fri Jun 1 00:07:16 2007
@@ -30,18 +30,6 @@
.HLL "Lua", "lua_group"
-.sub '__onload' :anon :init
- load_bytecode 'languages/lua/lib/luabasic.pbc'
- load_bytecode 'languages/lua/lib/luacoroutine.pir'
- load_bytecode 'languages/lua/lib/luapackage.pbc'
- load_bytecode 'languages/lua/lib/luastring.pir'
- load_bytecode 'languages/lua/lib/luatable.pbc'
- load_bytecode 'languages/lua/lib/luamath.pbc'
- load_bytecode 'languages/lua/lib/luaio.pir'
- load_bytecode 'languages/lua/lib/luaos.pbc'
- load_bytecode 'languages/lua/lib/luadebug.pbc'
-.end
-
=head1 SEE ALSO
F<languages/lua/doc/status.pod>
Modified: trunk/languages/lua/src/POSTGrammar.tg
==============================================================================
--- trunk/languages/lua/src/POSTGrammar.tg (original)
+++ trunk/languages/lua/src/POSTGrammar.tg Fri Jun 1 00:07:16 2007
@@ -39,20 +39,28 @@
iter_end:
set_hll_global ['Lua::POST'], '$?SUB', outerpost
unless null outerpost goto no_chunk
-# .local pmc onload
-# onload = post.'new'('POST::Sub', 'name'=>'__onload', 'pragma'=>':anon
:init', 'result'=>'')
-## onload.'push_pirop'('inline', ' print "onload\n"')
-# onload.'push_pirop'('inline', ' load_bytecode
"languages/lua/lib/luabasic.pbc"')
- pragma .= ' :main'
- post.'pragma'(pragma)
- post = post.'new'('Lua::POST::Chunk', post, 'prologue'=><<'PIRCODE')
-
-.HLL "Lua", "lua_group"
-
-#.sub "__onload" :anon :init
-# load_bytecode "languages/lua/lib/luabasic.pbc"
-#.end
-PIRCODE
+ .local pmc start
+ start = post.'new'('POST::Sub', 'name'=>'__start', 'pragma'=>':main',
'result'=>'')
+ start.'push_pirop'('inline', '# print "start\n"')
+ start.'push_pirop'('inline', ' load_bytecode
"languages/lua/lib/luabasic.pbc"')
+ start.'push_pirop'('inline', ' load_bytecode
"languages/lua/lib/luacoroutine.pir"')
+ start.'push_pirop'('inline', ' load_bytecode
"languages/lua/lib/luapackage.pbc"')
+ start.'push_pirop'('inline', ' load_bytecode
"languages/lua/lib/luastring.pir"')
+ start.'push_pirop'('inline', ' load_bytecode
"languages/lua/lib/luatable.pbc"')
+ start.'push_pirop'('inline', ' load_bytecode
"languages/lua/lib/luamath.pbc"')
+ start.'push_pirop'('inline', ' load_bytecode
"languages/lua/lib/luaio.pbc"')
+ start.'push_pirop'('inline', ' load_bytecode
"languages/lua/lib/luaos.pbc"')
+ start.'push_pirop'('inline', ' load_bytecode
"languages/lua/lib/luadebug.pbc"')
+ start.'push_pirop'('inline', ' .const .Sub main = "_main"')
+ start.'push_pirop'('inline', ' $P0 = get_global "_G"')
+ start.'push_pirop'('inline', ' main."setfenv"($P0)')
+ start.'push_pirop'('inline', ' docall(main)')
+ post.'init'('outer'=>start)
+ .local pmc onload
+ onload = post.'new'('POST::Sub', 'name'=>'__onload', 'pragma'=>':anon
:init', 'result'=>'')
+ onload.'push_pirop'('inline', ' .const .Sub main = "_main"')
+ onload.'push_pirop'('inline', '# print "onload\n"')
+ post = post.'new'('Lua::POST::Chunk', post, onload, start,
'prologue'=>'.HLL "Lua", "lua_group"')
no_chunk:
.return (post)
}