From 7eb7089c792cdc0810a806155410a6c9ca239d16 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 7 Dec 2018 12:32:17 -0700 Subject: [PATCH] inline `record-type-descriptor` and `record-type-uid` original commit: cc7ebd105c0447870eeefe5214fcc0a6d0ead64d --- s/cp0.ss | 20 ++++++++++++-------- s/cpnanopass.ss | 1 + 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/s/cp0.ss b/s/cp0.ss index 872ca270b2..5084519ee6 100644 --- a/s/cp0.ss +++ b/s/cp0.ss @@ -3307,14 +3307,18 @@ (define-inline 2 record-type-descriptor? [(?x) - (cond - [(nanopass-case (Lsrc Expr) (result-exp (value-visit-operand! ?x)) - [(record-type ,rtd ,e) #t] - [(quote ,d) (record-type-descriptor? d)] - [else #f]) - (residualize-seq '() (list ?x) ctxt) - true-rec] - [else #f])]) + (let ([?x-val (value-visit-operand! ?x)]) + (cond + [(nanopass-case (Lsrc Expr) (result-exp ?x-val) + [(record-type ,rtd ,e) #t] + [(quote ,d) (record-type-descriptor? d)] + [else #f]) + (residualize-seq '() (list ?x) ctxt) + true-rec] + [else + (residualize-seq (list ?x) '() ctxt) + (build-primcall (app-preinfo ctxt) 3 'record? + (list ?x-val `(quote ,#!base-rtd)))]))]) (define-inline 2 record-constructor-descriptor? [(?x) diff --git a/s/cpnanopass.ss b/s/cpnanopass.ss index e3d2e082b1..23ea6269e0 100644 --- a/s/cpnanopass.ss +++ b/s/cpnanopass.ss @@ -5167,6 +5167,7 @@ (inline-accessor csv7:record-type-descriptor record-type-disp) (inline-accessor $record-type-descriptor record-type-disp) (inline-accessor record-rtd record-type-disp) + (inline-accessor record-type-uid record-type-uid-disp) (inline-accessor $port-handler port-handler-disp) (inline-accessor $port-info port-info-disp) (inline-accessor port-name port-name-disp)