[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [MIT-Scheme-devel] x86-64 assembler problem
From: |
Taylor R Campbell |
Subject: |
Re: [MIT-Scheme-devel] x86-64 assembler problem |
Date: |
Thu, 28 Apr 2011 15:05:39 +0000 |
User-agent: |
IMAIL/1.21; Edwin/3.116; MIT-Scheme/9.1 |
Date: Wed, 27 Apr 2011 15:15:22 -0700
From: address@hidden (Matt Birkholz)
> From: Taylor R Campbell <address@hidden>
> Date: Wed, 27 Apr 2011 20:01:33 +0000
>
> [...] you can probably work around it by breaking your code into
> smaller parts.
I'll try that.
> How did you trigger this? Just by building the current state of
> <git://birkholz.chandler.az.us/~matt/mit-scheme.git>?
No, you will want to remove the "#| Kludge:" comment to break it.
Yes, try splitting that definition up like this:
(define gtk-key-translation-list '())
(define (define-gtk-key symbol enumerand)
(set! gtk-key-translation-list
(cons (cons enumerand symbol) gtk-key-translation-list))
unspecific)
(define-gtk-key 'BRACELEFT (C-enum "GDK_braceleft"))
(define-gtk-key 'BAR (C-enum "GDK_bar"))
;; &c.
(define gtk-key-translation-table
(sort! (list->vector gtk-key-translation-list)
(lambda (a b) (< (car a) (car b)))))
As is, CONS and presumably C-ENUM will be open-coded and involve no
procedure calls, so there will be a giant contiguous chunk of code,
which LIAR won't handle well. (This will also exhibit another danger
of LIAR -- it only heuristically checks for heap overflows, so if you
use enough open-coded allocation primitives, you will lose.)