Author: fperrad
Date: Fri May 25 02:33:47 2007
New Revision: 18640

Modified:
   trunk/languages/lua/src/POSTGrammar.tg
   trunk/languages/lua/src/lua51.pir

Log:
[Lua]
- POST

Modified: trunk/languages/lua/src/POSTGrammar.tg
==============================================================================
--- trunk/languages/lua/src/POSTGrammar.tg      (original)
+++ trunk/languages/lua/src/POSTGrammar.tg      Fri May 25 02:33:47 2007
@@ -26,8 +26,7 @@
     outerpost = get_hll_global ['Lua::POST'], '$?SUB'
     .local pmc post
     post = new 'POST::Sub'
-    post.'init'('node'=>node, 'name'=>name, 'outer'=>outerpost, 
'pragma'=>pragma, 'blocktype'=>blocktype)
-    post.'result'('')
+    post.'init'('node'=>node, 'name'=>name, 'outer'=>outerpost, 
'pragma'=>pragma, 'blocktype'=>blocktype, 'result'=>'')
     set_hll_global ['Lua::POST'], '$?SUB', post
     .local pmc iter
     iter = node.'iterator'()
@@ -40,7 +39,11 @@
   iter_end:
     set_hll_global ['Lua::POST'], '$?SUB', outerpost
   unless null outerpost goto no_chunk
-    post = post.'new'('Lua::POST::Chunk', post)
+    post = post.'new'('Lua::POST::Chunk', post, 'prologue'=><<'PIRCODE')
+
+.HLL "Lua", "lua_group"
+
+PIRCODE
   no_chunk:
     .return (post)
 }

Modified: trunk/languages/lua/src/lua51.pir
==============================================================================
--- trunk/languages/lua/src/lua51.pir   (original)
+++ trunk/languages/lua/src/lua51.pir   Fri May 25 02:33:47 2007
@@ -727,18 +727,23 @@
 
 .namespace [ "Lua::POST::Chunk" ]
 
+.sub 'prologue' :method
+    .param pmc value           :optional
+    .param int has_value       :opt_flag
+    .return self.'attr'('prologue', value, has_value)
+.end
+
 .sub 'pir' :method
     self.'cpir'()
+    $S0 = self.'prologue'()
+    if $S0 == '' goto L1
     .local pmc code
     new code, 'PGE::CodeString'
-    code.'emit'(<<'PIRCODE')
-
-.HLL "Lua", "lua_group"
-
-PIRCODE
+    code.'emit'($S0)
     $P0 = get_hll_global ['POST'], '$!subpir'
     code .= $P0
     set_hll_global ['POST'], '$!subpir', code
+L1:
 .end
 
 

Reply via email to