;;-*-Lisp-*- (in-package goal) ;; definition for method 2 of type res-tag (defmethod print res-tag ((obj res-tag)) (if (zero? (-> obj inlined?)) (format #t "#" (-> obj name) (-> obj key-frame) (-> obj elt-type) (-> obj elt-count) ) (format #t "#" (-> obj name) (-> obj key-frame) (-> obj elt-type) (-> obj elt-count) ) ) obj ) ;; definition for method 4 of type res-tag ;; INFO: Return type mismatch uint vs int. (defmethod length res-tag ((obj res-tag)) (the-as int (if (zero? (-> obj inlined?)) (* (-> obj elt-count) 4) (* (-> obj elt-count) (-> obj elt-type size)) ) ) ) ;; definition for method 13 of type res-lump ;; Used lq/sq (defmethod get-tag-index-data res-lump ((obj res-lump) (arg0 int)) (&+ (-> obj data-base) (-> obj tag arg0 data-offset)) ) ;; definition for method 14 of type res-lump (defmethod get-tag-data res-lump ((obj res-lump) (arg0 res-tag)) (&+ (-> obj data-base) (-> arg0 data-offset)) ) ;; definition for method 0 of type res-lump (defmethod new res-lump ((allocation symbol) (type-to-make type) (data-count int) (data-size int)) (let ((obj (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* (+ data-count -1) 16) data-size)) ) ) ) (set! (-> obj allocated-length) data-count) (set! (-> obj data-size) data-size) (set! (-> obj length) 0) (set! (-> obj data-base) (&-> (-> obj tag) data-count)) (set! (-> obj data-top) (&-> (-> obj tag) data-count)) obj ) ) ;; definition for method 4 of type res-lump (defmethod length res-lump ((obj res-lump)) (-> obj length) ) ;; definition for method 5 of type res-lump ;; INFO: Return type mismatch uint vs int. (defmethod asize-of res-lump ((obj res-lump)) (the-as int (+ (-> obj type psize) (* (-> obj allocated-length) 16) (-> obj data-size)) ) ) ;; definition for method 3 of type res-lump ;; INFO: this function exists in multiple non-identical object files ;; Used lq/sq (defmethod inspect res-lump ((obj res-lump)) (format #t "[~8x] ~A~%" obj (-> obj type)) (format #t "~Textra: ~A~%" (-> obj extra)) (format #t "~Tallocated-length: ~D~%" (-> obj allocated-length)) (format #t "~Tlength: ~D~%" (-> obj length)) (format #t "~Tdata-base: #x~X~%" (-> obj data-base)) (format #t "~Tdata-top: #x~X~%" (-> obj data-top)) (format #t "~Tdata-size: #x~X~%" (-> obj data-size)) (format #t "~Ttag[~D]: @ #x~X~%" (-> obj allocated-length) (-> obj tag)) (dotimes (i (-> obj length)) (format #t "~T [~D] " i) (print (-> obj tag i)) (let ((t9-10 format) (a0-12 #t) (a1-9 " @ #x~X") (a3-2 obj) (a2-9 i) ) (t9-10 a0-12 a1-9 (&+ (-> a3-2 data-base) (-> a3-2 tag a2-9 data-offset))) ) (cond ((zero? (-> obj tag i inlined?)) (let ((t9-11 format) (a0-14 #t) (a1-10 " = ~A~%") (a3-4 obj) (a2-17 i) ) (t9-11 a0-14 a1-10 (-> (the-as (pointer uint32) (&+ (-> a3-4 data-base) (-> a3-4 tag a2-17 data-offset)) ) ) ) ) ) (else (format #t "~%") ) ) ) obj ) ;; definition for method 19 of type res-lump ;; INFO: Return type mismatch int vs res-tag-pair. ;; Used lq/sq (defmethod lookup-tag-idx res-lump ((obj res-lump) (name-sym symbol) (mode symbol) (time float)) (local-vars (tag-idx int)) (when (or (= name-sym 'id) (= name-sym 'aid) (= name-sym 'trans) (= name-sym 'rot) (= name-sym 'nav-mesh) (= name-sym 'process-type) (= name-sym 'task) ) (crash!) 0 ) (if (or (not obj) (zero? obj) (<= (-> obj length) 0)) (return (new 'static 'res-tag-pair :lo #xffffffff :hi #xffffffff)) ) (let ((hi-tag-idx-out -1) (lo-tag-idx-out -1) ) (let ((most-recent-invalid-time-idx -1) (type-chars (-> (the-as (pointer uint64) (-> (symbol->string name-sym) data)) 0) ) ) (let ((max-search (+ (-> obj length) -1)) (min-search 0) ) (while (>= max-search min-search) (let* ((check-idx (+ min-search (/ (- max-search min-search) 2))) (diff (- type-chars (-> (the-as (pointer uint64) (-> (symbol->string (-> obj tag check-idx name)) data) ) 0 ) ) ) ) (cond ((zero? diff) (set! tag-idx check-idx) (goto cfg-32) ) ((< (the-as int diff) 0) (set! max-search (+ check-idx -1)) ) (else (set! min-search (+ check-idx 1)) ) ) ) ) ) (set! tag-idx -1) (label cfg-32) (if (< tag-idx 0) (return (the-as res-tag-pair tag-idx)) ) (while (and (> tag-idx 0) (= type-chars (-> (the-as (pointer uint64) (-> (symbol->string (-> obj tag (+ tag-idx -1) name)) data) ) 0 ) ) ) (+! tag-idx -1) ) (when (= mode 'base) (set! lo-tag-idx-out tag-idx) (set! hi-tag-idx-out tag-idx) (goto cfg-73) ) (let ((interp-tag-idx tag-idx) (tag-ptr (&-> (-> obj tag) tag-idx)) ) (while (not (or (>= interp-tag-idx (-> obj length)) (< type-chars (-> (the-as (pointer uint64) (-> (symbol->string (-> tag-ptr 0 name)) data) ) 0 ) ) ) ) (cond ((!= name-sym (-> tag-ptr 0 name)) ) ((= (-> tag-ptr 0 key-frame) time) (set! lo-tag-idx-out interp-tag-idx) (set! hi-tag-idx-out interp-tag-idx) (goto cfg-73) ) ((and (>= time (-> tag-ptr 0 key-frame)) (!= mode 'exact)) (set! lo-tag-idx-out interp-tag-idx) (set! hi-tag-idx-out interp-tag-idx) (if (= (-> tag-ptr 0 key-frame) -1000000000.0) (set! most-recent-invalid-time-idx interp-tag-idx) ) ) ((< time (-> tag-ptr 0 key-frame)) (if (and (!= lo-tag-idx-out most-recent-invalid-time-idx) (= mode 'interp)) (set! hi-tag-idx-out interp-tag-idx) ) (goto cfg-73) ) ) (+! interp-tag-idx 1) (set! tag-ptr (&-> tag-ptr 1)) ) ) ) (label cfg-73) (the-as res-tag-pair (logior (logand (the-as uint #xffffffff) lo-tag-idx-out) (shl hi-tag-idx-out 32) ) ) ) ) ;; definition for method 20 of type res-lump ;; Used lq/sq (defmethod make-property-data res-lump ((obj res-lump) (time float) (result res-tag-pair) (buf pointer)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) ) (let* ((tag-lo (-> obj tag (-> result lo))) (tag-hi (-> obj tag (-> result hi))) (elt-count (-> tag-lo elt-count)) ) (cond ((zero? (-> tag-lo inlined?)) (&+ (-> obj data-base) (-> tag-lo data-offset)) ) ((or (not buf) (= (-> result lo) (-> result hi)) (!= elt-count (-> tag-hi elt-count)) (!= (-> tag-lo elt-type) (-> tag-hi elt-type)) ) (let ((a0-4 tag-lo)) (&+ (-> obj data-base) (-> a0-4 data-offset)) ) ) (else (let* ((interp (/ (- time (-> tag-lo key-frame)) (- (-> tag-hi key-frame) (-> tag-lo key-frame)) ) ) (a1-4 obj) (a2-7 tag-lo) (src-lo (&+ (-> a1-4 data-base) (-> a2-7 data-offset))) (src-hi (&+ (-> obj data-base) (-> tag-hi data-offset))) ) (case (-> tag-lo elt-type symbol) (('float) (dotimes (a0-8 (the-as int elt-count)) (set! (-> (the-as (pointer float) (&+ buf (* a0-8 4)))) (+ (* (-> (the-as (pointer float) (&+ src-lo (* a0-8 4)))) (- 1.0 interp) ) (* (-> (the-as (pointer float) (&+ src-hi (* a0-8 4)))) interp) ) ) ) buf ) (('integer 'sinteger 'uinteger 'int64 'uint64) (let ((a0-9 (the int (* 4096.0 interp)))) (dotimes (t0-9 (the-as int elt-count)) (set! (-> (the-as (pointer int64) (&+ buf (* t0-9 8)))) (sar (+ (* (the-as int (-> (the-as (pointer uint64) (&+ src-lo (* t0-9 8)))) ) (- 4096 a0-9) ) (* (the-as int (-> (the-as (pointer uint64) (&+ src-hi (* t0-9 8)))) ) a0-9 ) ) 12 ) ) ) ) buf ) (('int8) (let ((a0-10 (the int (* 4096.0 interp)))) (dotimes (t0-10 (the-as int elt-count)) (set! (-> (the-as (pointer int8) (&+ buf t0-10))) (sar (+ (* (-> (the-as (pointer int8) (&+ src-lo t0-10))) (- 4096 a0-10)) (* (-> (the-as (pointer int8) (&+ src-hi t0-10))) a0-10) ) 12 ) ) ) ) buf ) (('uint8) (let ((a0-11 (the int (* 4096.0 interp)))) (dotimes (t0-11 (the-as int elt-count)) (set! (-> (the-as (pointer uint8) (&+ buf t0-11))) (shr (+ (* (-> (the-as (pointer uint8) (&+ src-lo t0-11))) (the-as uint (- 4096 a0-11)) ) (* (-> (the-as (pointer uint8) (&+ src-hi t0-11))) (the-as uint a0-11) ) ) 12 ) ) ) ) buf ) (('int16) (let ((a0-12 (the int (* 4096.0 interp)))) (dotimes (t0-12 (the-as int elt-count)) (set! (-> (the-as (pointer int16) (&+ buf (* t0-12 2)))) (sar (+ (* (-> (the-as (pointer int16) (&+ src-lo (* t0-12 2)))) (- 4096 a0-12) ) (* (-> (the-as (pointer int16) (&+ src-hi (* t0-12 2)))) a0-12) ) 12 ) ) ) ) buf ) (('uint16) (let ((a0-13 (the int (* 4096.0 interp)))) (dotimes (t0-13 (the-as int elt-count)) (set! (-> (the-as (pointer uint16) (&+ buf (* t0-13 2)))) (shr (+ (* (-> (the-as (pointer uint16) (&+ src-lo (* t0-13 2)))) (the-as uint (- 4096 a0-13)) ) (* (-> (the-as (pointer uint16) (&+ src-hi (* t0-13 2)))) (the-as uint a0-13) ) ) 12 ) ) ) ) buf ) (('int32) (let ((a0-14 (the int (* 4096.0 interp)))) (dotimes (t0-14 (the-as int elt-count)) (set! (-> (the-as (pointer int32) (&+ buf (* t0-14 4)))) (sar (+ (* (-> (the-as (pointer int32) (&+ src-lo (* t0-14 4)))) (- 4096 a0-14) ) (* (-> (the-as (pointer int32) (&+ src-hi (* t0-14 4)))) a0-14) ) 12 ) ) ) ) buf ) (('uint32) (let ((a0-15 (the int (* 4096.0 interp)))) (dotimes (t0-15 (the-as int elt-count)) (set! (-> (the-as (pointer uint32) (&+ buf (* t0-15 4)))) (shr (+ (* (-> (the-as (pointer uint32) (&+ src-lo (* t0-15 4)))) (the-as uint (- 4096 a0-15)) ) (* (-> (the-as (pointer uint32) (&+ src-hi (* t0-15 4)))) (the-as uint a0-15) ) ) 12 ) ) ) ) buf ) (('vector) (let ((a0-16 interp)) (.mov vf3 a0-16) ) (let ((a0-17 (- 1.0 interp))) (.mov vf4 a0-17) ) (dotimes (a0-18 (the-as int elt-count)) (let ((t0-17 (+ (* a0-18 16) (the-as int src-lo)))) (.lvf vf1 (&-> (the-as (pointer int128) t0-17))) ) (let ((t0-19 (+ (* a0-18 16) (the-as int src-hi)))) (.lvf vf2 (&-> (the-as (pointer int128) t0-19))) ) (.mul.x.vf vf1 vf1 vf4) (.mul.x.vf vf2 vf2 vf3) (.add.vf vf1 vf1 vf2) (.svf (&-> (-> (the-as (inline-array vector) buf) a0-18) quad) vf1) ) buf ) (else (let ((a0-19 tag-lo)) (&+ (-> obj data-base) (-> a0-19 data-offset)) ) ) ) ) ) ) ) ) ) ;; definition for method 9 of type res-lump ;; Used lq/sq (defmethod get-property-data res-lump ((obj res-lump) (name symbol) (mode symbol) (time float) (default pointer) (tag-addr (pointer res-tag)) (buf-addr pointer) ) (let ((tag-pair (lookup-tag-idx obj name mode time))) (cond ((< (the-as int tag-pair) 0) (empty) ) (else (set! default (make-property-data obj time tag-pair buf-addr)) (if tag-addr (set! (-> tag-addr 0) (-> obj tag (-> tag-pair lo))) ) ) ) ) default ) ;; definition for method 10 of type res-lump ;; INFO: Return type mismatch object vs structure. ;; Used lq/sq (defmethod get-property-struct res-lump ((obj res-lump) (name symbol) (mode symbol) (time float) (default structure) (tag-addr (pointer res-tag)) (buf-addr pointer) ) (let ((tag-pair (lookup-tag-idx obj name mode time))) (cond ((< (the-as int tag-pair) 0) (empty) ) (else (set! default (the-as structure (make-property-data obj time tag-pair buf-addr)) ) (let ((tag (-> obj tag (-> tag-pair lo)))) (if tag-addr (set! (-> tag-addr 0) tag) ) (if (zero? (-> tag inlined?)) (set! default (the-as structure (-> (the-as (pointer uint32) default)))) (empty) ) ) ) ) ) (the-as structure default) ) ;; definition for method 11 of type res-lump ;; INFO: Return type mismatch int vs uint128. ;; Used lq/sq (defmethod get-property-value res-lump ((obj res-lump) (name symbol) (mode symbol) (time float) (default uint128) (tag-addr (pointer res-tag)) (buf-addr pointer) ) (let ((tag-pair (lookup-tag-idx obj name mode time))) (cond ((< (the-as int tag-pair) 0) (empty) ) (else (let* ((a0-2 (-> tag-pair lo)) (tag (-> obj tag a0-2)) (tag-type (-> tag elt-type)) (data (make-property-data obj time tag-pair buf-addr)) ) (if tag-addr (set! (-> tag-addr 0) tag) ) (cond ((type-type? (the-as type tag-type) uinteger) (case (-> tag elt-type size) ((1) (set! default (the-as uint128 (-> (the-as (pointer uint8) data)))) ) ((2) (set! default (the-as uint128 (-> (the-as (pointer uint16) data)))) ) ((4) (set! default (the-as uint128 (-> (the-as (pointer uint32) data)))) ) ((16) (set! default (-> (the-as (pointer uint128) data))) ) (else (set! default (the-as uint128 (-> (the-as (pointer uint64) data)))) ) ) ) ((type-type? (the-as type tag-type) integer) (case (-> tag elt-type size) ((1) (set! default (the-as uint128 (-> (the-as (pointer int8) data)))) ) ((2) (set! default (the-as uint128 (-> (the-as (pointer int16) data)))) ) ((4) (set! default (the-as uint128 (-> (the-as (pointer int32) data)))) ) ((16) (set! default (-> (the-as (pointer uint128) data))) ) (else (set! default (the-as uint128 (-> (the-as (pointer uint64) data)))) ) ) ) ((type-type? (the-as type tag-type) float) (set! default (the-as uint128 (the int (-> (the-as (pointer float) data)))) ) ) (else (empty) ) ) ) ) ) ) (the-as uint128 default) ) ;; definition for method 12 of type res-lump ;; Used lq/sq (defmethod get-property-value-float res-lump ((obj res-lump) (name symbol) (mode symbol) (time float) (default float) (tag-addr (pointer res-tag)) (buf-addr pointer) ) (local-vars (v1-8 uint) (v1-11 int)) (let ((tag-pair (lookup-tag-idx obj name mode time))) (cond ((< (the-as int tag-pair) 0) (empty) ) (else (let* ((a0-2 (-> tag-pair lo)) (tag (-> obj tag a0-2)) (tag-type (-> tag elt-type)) (data (make-property-data obj time tag-pair buf-addr)) ) (if tag-addr (set! (-> tag-addr 0) tag) ) (cond ((type-type? (the-as type tag-type) float) (set! default (-> (the-as (pointer float) data))) ) ((type-type? (the-as type tag-type) uinteger) (case (-> tag elt-type size) ((1) (set! v1-8 (-> (the-as (pointer uint8) data))) ) ((2) (set! v1-8 (-> (the-as (pointer uint16) data))) ) ((4) (set! v1-8 (-> (the-as (pointer uint32) data))) ) ((16) (set! v1-8 (the-as uint (-> (the-as (pointer uint128) data)))) ) (else (set! v1-8 (-> (the-as (pointer uint64) data))) ) ) (set! default (the float v1-8)) ) ((type-type? (the-as type tag-type) integer) (case (-> tag elt-type size) ((1) (set! v1-11 (-> (the-as (pointer int8) data))) ) ((2) (set! v1-11 (-> (the-as (pointer int16) data))) ) ((4) (set! v1-11 (-> (the-as (pointer int32) data))) ) ((16) (set! v1-11 (the-as int (-> (the-as (pointer uint128) data)))) ) (else (set! v1-11 (the-as int (-> (the-as (pointer uint64) data)))) ) ) (set! default (the float v1-11)) ) (else (empty) ) ) ) ) ) ) default ) ;; definition for method 16 of type res-lump ;; Used lq/sq (defmethod sort! res-lump ((obj res-lump)) (let ((tags-sorted -1)) (while (nonzero? tags-sorted) (set! tags-sorted 0) (let ((i 0) (tag-stop (+ (-> obj length) -2)) ) (while (>= tag-stop i) (let* ((tag1 (-> obj tag i)) (tag2 (-> obj tag (+ i 1))) (tag-name1 (-> (the-as (pointer uint64) (-> (symbol->string (-> tag1 name)) data) ) 0 ) ) (tag-name2 (-> (the-as (pointer uint64) (-> (symbol->string (-> tag2 name)) data) ) 0 ) ) ) (when (or (< tag-name2 tag-name1) (and (= tag-name1 tag-name2) (< (-> tag2 key-frame) (-> tag1 key-frame)) ) ) (+! tags-sorted 1) (set! (-> obj tag i) tag2) (set! (-> obj tag (+ i 1)) tag1) ) ) (+! i 1) ) ) ) ) obj ) ;; definition for method 15 of type res-lump ;; Used lq/sq (defmethod allocate-data-memory-for-tag! res-lump ((obj res-lump) (arg0 res-tag)) (local-vars (resource-mem pointer)) (let* ((tag-pair (lookup-tag-idx obj (-> arg0 name) 'exact (-> arg0 key-frame))) (existing-tag (-> obj tag (-> tag-pair lo))) ) 0 (if (and (>= (the-as int tag-pair) 0) (!= (-> arg0 key-frame) (-> arg0 key-frame)) ) (set! tag-pair (new 'static 'res-tag-pair :lo #xffffffff :hi #xffffffff)) ) (if (zero? (-> arg0 elt-count)) (set! arg0 (copy-and-set-field arg0 elt-count 1)) ) (let ((data-size (length arg0))) (cond ((and (>= (the-as int tag-pair) 0) (>= (the-as uint (length existing-tag)) (the-as uint data-size)) ) (set! resource-mem (&+ (-> obj data-base) (-> existing-tag data-offset))) (when (logtest? (the-as int resource-mem) 7) (set! resource-mem (logand -16 (&+ (-> obj data-top) 15))) (set! (-> obj data-top) (&+ resource-mem data-size)) ) ) (else (set! resource-mem (logand -16 (&+ (-> obj data-top) 15))) (set! (-> obj data-top) (&+ resource-mem data-size)) ) ) (let* ((a0-22 arg0) (s4-1 (copy-and-set-field a0-22 data-offset (&- resource-mem (the-as uint (-> obj data-base))) ) ) ) (when (>= (the-as int (&+ resource-mem data-size)) (the-as int (&+ (-> obj data-base) (-> obj data-size))) ) (format 0 "ERROR: attempting to a new tag ~`res-tag`P data of #x~X bytes to ~A, but data memory is full.~%" s4-1 data-size obj ) (return (the-as res-tag #f)) ) (cond ((< (the-as int tag-pair) 0) (cond ((>= (-> obj length) (-> obj allocated-length)) (format 0 "ERROR: attempting to a new tag ~`res-tag`P to ~A, but tag memory is full.~%" s4-1 obj ) (return (the-as res-tag #f)) ) (else (set! (-> obj tag (-> obj length)) s4-1) (+! (-> obj length) 1) (sort! obj) ) ) ) (else (set! (-> obj tag (-> tag-pair lo)) s4-1) ) ) s4-1 ) ) ) ) ;; definition for method 17 of type res-lump (defmethod add-data! res-lump ((obj res-lump) (arg0 res-tag) (arg1 pointer)) (let ((new-tag (allocate-data-memory-for-tag! obj arg0))) (when new-tag (let* ((v1-2 obj) (a1-1 new-tag) (tag-mem (&+ (-> v1-2 data-base) (-> a1-1 data-offset))) ) (cond ((zero? (-> new-tag inlined?)) (length new-tag) (set! (-> (the-as (pointer pointer) tag-mem) 0) arg1) ) (else (let ((a2-1 (length new-tag))) (mem-copy! tag-mem arg1 a2-1) ) ) ) ) ) ) obj ) ;; definition for method 18 of type res-lump (defmethod add-32bit-data! res-lump ((obj res-lump) (arg0 res-tag) (arg1 object)) (local-vars (sv-16 object)) (set! sv-16 arg1) (let* ((v1-0 arg0) (a1-4 (copy-and-set-field v1-0 inlined? 1)) ) (add-data! obj a1-4 (& sv-16)) ) ) ;; definition for method 21 of type res-lump ;; Used lq/sq (defmethod get-curve-data! res-lump ((obj res-lump) (arg0 curve) (arg1 symbol) (arg2 symbol) (arg3 float)) (local-vars (sv-16 res-tag) (sv-32 res-tag)) (let ((s5-0 #f)) (set! sv-16 (new 'static 'res-tag)) (let ((a0-2 ((method-of-object obj get-property-data) obj arg1 'exact arg3 (the-as pointer #f) (& sv-16) *res-static-buf* ) ) ) (when a0-2 (set! (-> arg0 cverts) a0-2) (set! (-> arg0 num-cverts) (the-as int (-> sv-16 elt-count))) (when (< 256 (-> arg0 num-cverts)) (format 0 "ERROR: curve has ~D control points--only ~D are allowed. Increase MAX-CURVE-CONTROL-POINTS or shorten the curve.~%" (-> arg0 num-cverts) 256 ) (set! (-> arg0 num-cverts) 256) ) (set! sv-32 (new 'static 'res-tag)) (let ((a0-6 ((method-of-object obj get-property-data) obj arg2 'exact arg3 (the-as pointer #f) (& sv-32) *res-static-buf* ) ) ) (when a0-6 (set! (-> arg0 knots) (the-as (inline-array vector) a0-6)) (set! (-> arg0 num-knots) (the-as int (-> sv-32 elt-count))) (set! s5-0 #t) ) ) ) ) s5-0 ) ) ;; definition for method 8 of type res-lump ;; INFO: Return type mismatch int vs res-lump. ;; Used lq/sq (defmethod mem-usage res-lump ((obj res-lump) (block memory-usage-block) (flags int)) (local-vars (sv-16 int)) (let ((mem-use-id 48) (mem-use-name "res") ) (cond ((logtest? flags 256) (set! mem-use-id 44) (set! mem-use-name "camera") ) ((logtest? flags 64) (set! mem-use-id 43) (set! mem-use-name "entity") ) ((logtest? flags 128) (set! mem-use-id 49) (set! mem-use-name "ambient") ) ((logtest? flags 512) (set! mem-use-id 73) (set! mem-use-name "art-joint-geo") ) ) (set! (-> block length) (max (-> block length) (+ mem-use-id 1))) (set! (-> block data mem-use-id name) mem-use-name) (+! (-> block data mem-use-id count) 1) (let ((obj-size (asize-of obj))) (+! (-> block data mem-use-id used) obj-size) (+! (-> block data mem-use-id total) (logand -16 (+ obj-size 15))) ) (dotimes (tag-idx (-> obj length)) (when (zero? (-> obj tag tag-idx inlined?)) (let* ((a1-4 obj) (a0-15 tag-idx) (tag-data (the-as basic (-> (the-as (pointer uint32) (&+ (-> a1-4 data-base) (-> a1-4 tag a0-15 data-offset)) ) ) ) ) ) (when (not (part-group-pointer? (the-as pointer tag-data))) (case (-> tag-data type) ((symbol type) ) ((string) (set! (-> block length) (max (-> block length) (+ mem-use-id 1))) (set! (-> block data mem-use-id name) mem-use-name) (+! (-> block data mem-use-id count) 1) (let ((v1-47 (asize-of tag-data))) (+! (-> block data mem-use-id used) v1-47) (+! (-> block data mem-use-id total) (logand -16 (+ v1-47 15))) ) ) ((nav-mesh collide-mesh) (mem-usage (the-as collide-mesh tag-data) block flags) ) ((array) (set! (-> block length) (max (-> block length) (+ mem-use-id 1))) (set! (-> block data mem-use-id name) mem-use-name) (+! (-> block data mem-use-id count) 1) (let ((v1-63 (asize-of (the-as (array object) tag-data)))) (+! (-> block data mem-use-id used) v1-63) (+! (-> block data mem-use-id total) (logand -16 (+ v1-63 15))) ) (set! sv-16 0) (while (< sv-16 (-> (the-as array tag-data) length)) (let ((a0-58 (-> (the-as (array object) tag-data) sv-16))) ((method-of-type (rtype-of a0-58) mem-usage) a0-58 block flags) ) (set! sv-16 (+ sv-16 1)) ) ) (else (set! (-> block length) (max (-> block length) (+ mem-use-id 1))) (set! (-> block data mem-use-id name) mem-use-name) (+! (-> block data mem-use-id count) 1) (let ((v1-88 (asize-of tag-data))) (+! (-> block data mem-use-id used) v1-88) (+! (-> block data mem-use-id total) (logand -16 (+ v1-88 15))) ) ) ) ) ) ) ) ) (the-as res-lump 0) ) ;; definition for symbol *res-static-buf*, type pointer (define *res-static-buf* (malloc 'global 128))