mirror of
https://github.com/samsonjs/compiler.git
synced 2026-04-27 14:57:45 +00:00
[CHANGED] only generate required labels in if-else
This commit is contained in:
parent
0431cd60f3
commit
e547804711
1 changed files with 2 additions and 3 deletions
|
|
@ -162,16 +162,15 @@ class Compiler
|
||||||
match('i')
|
match('i')
|
||||||
condition
|
condition
|
||||||
else_label = unique_label(:else)
|
else_label = unique_label(:else)
|
||||||
end_label = unique_label(:end)
|
end_label = else_label # only generated if else clause present
|
||||||
x86_jz(else_label)
|
x86_jz(else_label)
|
||||||
block
|
block
|
||||||
if @look == 'l'
|
if @look == 'l'
|
||||||
match('l')
|
match('l')
|
||||||
|
end_label = unique_label(:end) # now we need the 2nd label
|
||||||
x86_jmp(end_label)
|
x86_jmp(end_label)
|
||||||
emit_label(else_label)
|
emit_label(else_label)
|
||||||
block
|
block
|
||||||
else
|
|
||||||
emit_label(else_label) # we end up with an extra label, oh well
|
|
||||||
end
|
end
|
||||||
match('e')
|
match('e')
|
||||||
emit_label(end_label)
|
emit_label(end_label)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue