Skip to content

Commit 5f1c407

Browse files
committed
dfmc-conversion: Improve access to meta-object slots
* sources/dfmc/conversion/define-class-slot-mop.dylan (slot-guaranteed-initialized-in-class?): Force the compiler to consider slots in <class>, in particular class-implementation-class, as guaranteed initialized since both the compile-time and generic cases initialize these object slots as immediately as possible. This change reduces the overhead on the critical path for type checks.
1 parent 67d3896 commit 5f1c407

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

sources/dfmc/conversion/define-class-slot-mop.dylan

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -375,13 +375,14 @@ end;
375375

376376
define function slot-guaranteed-initialized-in-class?
377377
(sd :: <&slot-descriptor>, class :: <&class>)
378-
^init-supplied?(^effective-initial-value-descriptor(sd, class)) |
379-
begin
380-
let key-descriptor =
381-
^effective-initialization-argument-descriptor(sd, class);
382-
^init-keyword-required?(key-descriptor) |
383-
^init-supplied?(key-descriptor)
384-
end
378+
^init-supplied?(^effective-initial-value-descriptor(sd, class))
379+
| begin
380+
let key-descriptor
381+
= ^effective-initialization-argument-descriptor(sd, class);
382+
^init-keyword-required?(key-descriptor)
383+
| ^init-supplied?(key-descriptor)
384+
end
385+
| class == dylan-value(#"<class>") // for class-implementation-class
385386
end;
386387

387388
// default methods

0 commit comments

Comments
 (0)