emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Difficulties byte-compiling very large .el file


From: Aemon Cannon
Subject: Re: Difficulties byte-compiling very large .el file
Date: Thu, 20 Aug 2009 09:07:01 -0400

Bingo!
../test/grammars/as3_elispParser.el:31515:33:Error: Bytecode overflow

I'm not super familiar with emacs byte-compiling, but my guess is that
increasing
the size of the operands is not an option. Should I look for a
conditional that spans
a lot of code, and try to fix it that way?

Thoughts?



On Thu, Aug 20, 2009 at 4:27 AM, Andreas Schwab<address@hidden> wrote:
> Aemon Cannon <address@hidden> writes:
>
>> The generated parser for ActionScript 3 is over 30k lines long and
>> fails to byte-compile with the message in Emacs 22:
>> as3_elispParser.el:31515:33:Error: Invalid character: 256, #o400,
>> #x100
>>
>> ..and this message in Emacs 23:
>> ../test/grammars/as3_elispParser.el:31515:33:Error: Args out of range:
>> 256, 0, 255
>
> Probably the bytecode string is becoming too large so that a byte-goto
> operand overflows.  Try this patch to verify:
>
> --- lisp/emacs-lisp/bytecomp.el.~2.248.~        2009-08-06 13:15:39.000000000 
> +0200
> +++ lisp/emacs-lisp/bytecomp.el 2009-08-20 10:26:05.000000000 +0200
> @@ -853,7 +853,8 @@ otherwise pop it")
>              (t                        ; Absolute jump
>               (setq pc (car (cdr (car bytes))))        ; Pick PC from tag
>               (setcar (cdr bytes) (logand pc 255))
> -              (setcar bytes (lsh pc -8))))
> +              (setcar bytes (lsh pc -8))
> +              (if (> (car bytes) 255) (error "Bytecode overflow"))))
>        (setq patchlist (cdr patchlist))))
>     (apply 'unibyte-string (nreverse bytes))))
>
>
> Andreas.
>
> --
> Andreas Schwab, address@hidden
> GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
> "And now for something completely different."
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]