From e4f7f0032e8670eec7d1441d876d65a79f46222b Mon Sep 17 00:00:00 2001 From: Stevie Strickland Date: Tue, 23 Feb 2010 04:13:09 +0000 Subject: [PATCH] Get rid of the loop that's no longer a loop, and also add in the necessary object unwrapping. svn: r18288 --- collects/scheme/private/class-internal.ss | 42 ++++++++++------------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/collects/scheme/private/class-internal.ss b/collects/scheme/private/class-internal.ss index 30d3f401c8..a63c4223d6 100644 --- a/collects/scheme/private/class-internal.ss +++ b/collects/scheme/private/class-internal.ss @@ -3836,18 +3836,15 @@ obj)) (trace-begin (trace (set-event obj id val)) - (let loop ([obj obj]) - (let* ([cls (object-ref obj)] - [field-ht (class-field-ht cls)] - [index (hash-ref field-ht id #f)]) - (cond - [index - ((vector-ref (class-ext-field-sets cls) index) obj val)] - [else - (raise-mismatch-error - 'get-field - (format "expected an object that has a field named ~s, got " id) - obj)]))))) + (let* ([cls (object-ref obj)] + [field-ht (class-field-ht cls)] + [index (hash-ref field-ht id #f)]) + (if index + ((vector-ref (class-ext-field-sets cls) index) (unwrap-object obj) val) + (raise-mismatch-error + 'get-field + (format "expected an object that has a field named ~s, got " id) + obj))))) (define-syntaxes (get-field get-field-traced) (let () @@ -3875,18 +3872,15 @@ obj)) (trace-begin (trace (get-event obj id)) - (let loop ([obj obj]) - (let* ([cls (object-ref obj)] - [field-ht (class-field-ht cls)] - [index (hash-ref field-ht id #f)]) - (cond - [index - ((vector-ref (class-ext-field-refs cls) index) obj)] - [else - (raise-mismatch-error - 'get-field - (format "expected an object that has a field named ~s, got " id) - obj)]))))) + (let* ([cls (object-ref obj)] + [field-ht (class-field-ht cls)] + [index (hash-ref field-ht id #f)]) + (if index + ((vector-ref (class-ext-field-refs cls) index) (unwrap-object obj)) + (raise-mismatch-error + 'get-field + (format "expected an object that has a field named ~s, got " id) + obj))))) (define-syntaxes (field-bound? field-bound?-traced) (let ()