aboutsummaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2014-08-20 02:14:55 +0200
committerDrahflow <drahflow@gmx.de>2014-08-20 02:14:55 +0200
commit6bf9bb21e14d049220d534b33be0740bb9bd9a2b (patch)
tree91d2649f520c38e5a29e3a51fd03b7953ca26826 /compiler
parentb2e0267e4ca3de13ff168f818776cb07d893f110 (diff)
There is now a single empty array only
Diffstat (limited to 'compiler')
-rw-r--r--compiler/elymasGlobal.ey15
1 files changed, 13 insertions, 2 deletions
diff --git a/compiler/elymasGlobal.ey b/compiler/elymasGlobal.ey
index 83d4d63..bf34103 100644
--- a/compiler/elymasGlobal.ey
+++ b/compiler/elymasGlobal.ey
@@ -19,6 +19,12 @@
2 ==QUOTEMARKER
<
+ [
+ %08 %00 %00 %00 %00 %00 %00 %70
+ ] /emptyArray defv
+ > { defv }' ::allocateOffsetStruct
+
+ <
# do nothing
[
:retn
@@ -671,6 +677,7 @@
/rdi /rcx :movqRegReg
/rsp /rdi :subqRegReg
+ /empty :jzLbl8
/rcx :pushqReg
# rdi == size of array
@@ -683,16 +690,20 @@
/rax /ecx :movlMemReg
3 /rcx :shrqImm8Reg
/rcx :decqReg # rcx == number of array elements
- /rcx /rcx :testqRegReg
- /empty :jzLbl8
8 /rcx /rax /rax :leaqMemIndexScaleReg # rax == address of last cell
@copy
/rax :popqMem
8 /rax :subqImm8Reg
/copy :loopLbl8
+ /r15 :pushqMem
+ 8 /r15 :addqImm8Reg
+ :retn
@empty
+ emptyArray /rax :movqImmReg
+ /rax /rcx :movqRegMem # store array pointer instead of begin marker
+
/r15 :pushqMem
8 /r15 :addqImm8Reg
:retn