[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://>?

   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))

(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.)

reply via email to

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