     [ heap-size malloc ] keep memory>struct ; inline
 
 : malloc-struct ( class -- struct )
-    [ >c-ptr malloc-byte-array ] [ 1 swap heap-size calloc ] (init-struct) ;
+    [ >c-ptr malloc-byte-array ] [ 1 swap heap-size calloc ] (init-struct) ; inline
 
 : (struct) ( class -- struct )
     [ heap-size (byte-array) ] keep memory>struct ; inline
 
 : <struct> ( class -- struct )
-    [ >c-ptr clone ] [ heap-size <byte-array> ] (init-struct) ;
+    [ >c-ptr clone ] [ heap-size <byte-array> ] (init-struct) ; inline
 
 MACRO: <struct-boa> ( class -- quot: ( ... -- struct ) )
     [

    \ cleave [ ] 2sequence
    \ output>array [ ] 2sequence ;

: (define-struct-slot-values-method) ( class -- )
    [ \ struct-slot-values create-method-in ]
    [ struct-slot-values-quot ] bi define ;

: (define-byte-length-method) ( class -- )
    [ \ byte-length create-method-in ]
    [ heap-size \ drop swap [ ] 2sequence ] bi define ;

: slot>field ( slot -- field )
    field-spec new swap {

    dup struct-class? [ '[ _ boa ] ] [ drop f ] if
] 1 define-partial-eval

<PRIVATE
: (init-struct) ( class with-prototype: ( prototype -- alien ) sans-prototype: ( class -- alien ) -- alien )
    '[ dup struct-prototype _ _ ?if ] keep memory>struct ; inline
