Keep old alloca() code around.
This commit is contained in:
@@ -98,6 +98,8 @@ section LZMA_ELF00
|
|||||||
mov ebx, -LZMA_LIT_SIZE
|
mov ebx, -LZMA_LIT_SIZE
|
||||||
shl ebx,cl
|
shl ebx,cl
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
// alloca() via lea
|
||||||
// CLzmaDecoderState:{*_bits, CProb[LZMA_BASE_SIZE + (LZMA_LIT_SIZE<<%cl)]}
|
// CLzmaDecoderState:{*_bits, CProb[LZMA_BASE_SIZE + (LZMA_LIT_SIZE<<%cl)]}
|
||||||
lea esp,[0 -4 - 2*LZMA_BASE_SIZE + 2*ebx + esp]
|
lea esp,[0 -4 - 2*LZMA_BASE_SIZE + 2*ebx + esp]
|
||||||
and esp, (~0<<5) // 32-byte align
|
and esp, (~0<<5) // 32-byte align
|
||||||
@@ -105,6 +107,16 @@ section LZMA_ELF00
|
|||||||
push 0 // inSizeProcessed
|
push 0 // inSizeProcessed
|
||||||
push 0 // outSizeProcessed
|
push 0 // outSizeProcessed
|
||||||
mov ebx,esp
|
mov ebx,esp
|
||||||
|
#else
|
||||||
|
// alloca() via push 0
|
||||||
|
// inSizeProcessed, outSizeProcessed, *_bits, CLzmaDecoderState
|
||||||
|
lea ebx,[0 -(2*4 +4) - 2*LZMA_BASE_SIZE + 2*ebx + esp]
|
||||||
|
and ebx, (~0<<5) // 32-byte align
|
||||||
|
.elf_clearstack1:
|
||||||
|
push 0
|
||||||
|
cmp esp,ebx
|
||||||
|
jne .elf_clearstack1
|
||||||
|
#endif
|
||||||
|
|
||||||
push ebx // &outSizeProcessed
|
push ebx // &outSizeProcessed
|
||||||
add ebx, 4
|
add ebx, 4
|
||||||
|
|||||||
Reference in New Issue
Block a user