From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from omta33.uswest2.a.cloudfilter.net (omta33.uswest2.a.cloudfilter.net [35.89.44.32]) by sourceware.org (Postfix) with ESMTPS id 2C9E13858412 for ; Sat, 19 Aug 2023 20:20:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2C9E13858412 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey.com Received: from eig-obgw-6002a.ext.cloudfilter.net ([10.0.30.222]) by cmsmtp with ESMTP id XNO2q9aSnfaVXXSQkq7Uhs; Sat, 19 Aug 2023 20:20:18 +0000 Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTPS id XSQjq2F8iiq5RXSQjqkt7x; Sat, 19 Aug 2023 20:20:17 +0000 X-Authority-Analysis: v=2.4 cv=KdjBDCUD c=1 sm=1 tr=0 ts=64e12401 a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=OWjo9vPv0XrRhIrVQ50Ab3nP57M=:19 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=UttIx32zK-AA:10 a=Qbun_eYptAEA:10 a=eRkiJqj7JRsMH8IOb3MA:9 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=Fyak9O/qP0/5At3ZCTbcVUfXZjC/tDOxpLINucS1ppQ=; b=XDiQqqDp/gHC+w+VVGaK4nUlXk f52MP36wCQ5JvKP55whfz7bgXXsWNqhd+yQgvc8E5fp28r93woBvhlFXhyu66d0US4E55oXHA2BxE 11rpTCb6haGCAYvvJE6v+8mfm; Received: from 75-166-142-177.hlrn.qwest.net ([75.166.142.177]:36668 helo=localhost.localdomain) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1qXQ4X-003yKO-1L; Sat, 19 Aug 2023 11:49:13 -0600 From: Tom Tromey To: cgen@sourceware.org Cc: Tom Tromey Subject: [RFC 10/14] Hack cos.scm to work with new Guile Date: Sat, 19 Aug 2023 11:42:09 -0600 Message-ID: <20230819174900.866436-11-tom@tromey.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230819174900.866436-1-tom@tromey.com> References: <20230819174900.866436-1-tom@tromey.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box5379.bluehost.com X-AntiAbuse: Original Domain - sourceware.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 75.166.142.177 X-Source-L: No X-Exim-ID: 1qXQ4X-003yKO-1L X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 75-166-142-177.hlrn.qwest.net (localhost.localdomain) [75.166.142.177]:36668 X-Source-Auth: tom+tromey.com X-Email-Count: 0 X-Org: HG=bhshared;ORG=bluehost; X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfJk2sp8a38QGSf6/LxBEOgFYyg4gUUkf8vz0EAyxYMACnVM2+iHr6ePtXDBz2o6du4htfrFmwOkAj0MYxGFAxVMa89GPVdcHsfH3UD6/hALhioQ3BOxN QGp7yr0O8evip3Yb6HFFwEokJR5TBiVXPT18gh8q1mrEqEO8Arfd+8rS6u1a6Et0sT2mN46tKv5CCw== X-Spam-Status: No, score=-3025.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,JMQ_SPF_NEUTRAL,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_BL,RCVD_IN_MSPIKE_L3,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: cos.scm calls procedure->memoizing-macro, which no longer exists in Guile. This patch hacks around this by having the member accessors always use the "slow" path. In practice, with Guile 3.0, this is still fast enough on my machine. Longer term this code should all be removed in favor of GOOPS. --- cos.scm | 56 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/cos.scm b/cos.scm index 1ba4c54..34f1848 100644 --- a/cos.scm +++ b/cos.scm @@ -905,16 +905,16 @@ ;; Subroutine of elm-get. -(define (/elm-make-method-getter self elm-name) - (/object-check self "elm-get") - (let ((index (/class-lookup-element (/object-class-desc self) elm-name))) - (if index - (procedure->memoizing-macro - (lambda (exp env) - `(lambda (obj) - (/object-elm-get obj ,index)))) - (/object-error "elm-get" self "element not present: " elm-name))) -) +;; (define (/elm-make-method-getter self elm-name) +;; (/object-check self "elm-get") +;; (let ((index (/class-lookup-element (/object-class-desc self) elm-name))) +;; (if index +;; (procedure->memoizing-macro +;; (lambda (exp env) +;; `(lambda (obj) +;; (/object-elm-get obj ,index)))) +;; (/object-error "elm-get" self "element not present: " elm-name))) +;; ) ;; Get an element from an object. ;; If OBJ is `self' then the caller is required to be a method and we emit @@ -929,33 +929,33 @@ ;; operation with O(1). Cute, but I'm hoping there's an easier/better way. (defmacro elm-get (self elm-name) - (if (eq? self 'self) - `(((/elm-make-method-getter ,self ,elm-name)) ,self) - `(elm-xget ,self ,elm-name)) -) + ;; (if (eq? self 'self) + ;; `(((/elm-make-method-getter ,self ,elm-name)) ,self) + `(elm-xget ,self ,elm-name) + ) ;; Subroutine of elm-set!. -(define (/elm-make-method-setter self elm-name) - (/object-check self "elm-set!") - (let ((index (/class-lookup-element (/object-class-desc self) elm-name))) - (if index - (procedure->memoizing-macro - (lambda (exp env) - `(lambda (obj new-val) - (/object-elm-set! obj ,index new-val)))) - (/object-error "elm-set!" self "element not present: " elm-name))) -) +;; (define (/elm-make-method-setter self elm-name) +;; (/object-check self "elm-set!") +;; (let ((index (/class-lookup-element (/object-class-desc self) elm-name))) +;; (if index +;; (procedure->memoizing-macro +;; (lambda (exp env) +;; `(lambda (obj new-val) +;; (/object-elm-set! obj ,index new-val)))) +;; (/object-error "elm-set!" self "element not present: " elm-name))) +;; ) ;; Set an element in an object. ;; This can only be used by methods. ;; See the comments for `elm-get'! (defmacro elm-set! (self elm-name new-val) - (if (eq? self 'self) - `(((/elm-make-method-setter ,self ,elm-name)) ,self ,new-val) - `(elm-xset! ,self ,elm-name ,new-val)) -) + ;; (if (eq? self 'self) + ;; `(((/elm-make-method-setter ,self ,elm-name)) ,self ,new-val) + `(elm-xset! ,self ,elm-name ,new-val) + ) ;; Get an element from an object. ;; This is for invoking from outside a method, and without having to -- 2.41.0