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)
 }

Reply via email to