Move platform-specific c-type initialization out of cpu.* vocabularies and into alien.c-types so that the vm vocabulary, which is loaded before cpu.*, will have correct struct offsets
parent
c6b0a91f34
commit
fba6ddbc22
|
@ -230,6 +230,10 @@ M: byte-array byte-length length ; inline
|
||||||
|
|
||||||
M: f byte-length drop 0 ; inline
|
M: f byte-length drop 0 ; inline
|
||||||
|
|
||||||
|
: >c-bool ( ? -- int ) 1 0 ? ; inline
|
||||||
|
|
||||||
|
: c-bool> ( int -- ? ) 0 = not ; inline
|
||||||
|
|
||||||
MIXIN: value-type
|
MIXIN: value-type
|
||||||
|
|
||||||
: c-getter ( name -- quot )
|
: c-getter ( name -- quot )
|
||||||
|
@ -256,6 +260,7 @@ PREDICATE: typedef-word < c-type-word
|
||||||
"c-type" word-prop c-type-name? ;
|
"c-type" word-prop c-type-name? ;
|
||||||
|
|
||||||
M: string typedef ( old new -- ) c-types get set-at ;
|
M: string typedef ( old new -- ) c-types get set-at ;
|
||||||
|
|
||||||
M: word typedef ( old new -- )
|
M: word typedef ( old new -- )
|
||||||
{
|
{
|
||||||
[ nip define-symbol ]
|
[ nip define-symbol ]
|
||||||
|
@ -338,7 +343,7 @@ SYMBOLS:
|
||||||
[ alien-signed-8 ] >>getter
|
[ alien-signed-8 ] >>getter
|
||||||
[ set-alien-signed-8 ] >>setter
|
[ set-alien-signed-8 ] >>setter
|
||||||
8 >>size
|
8 >>size
|
||||||
8 >>align
|
cpu x86.32? os windows? not and 4 8 ? >>align
|
||||||
"box_signed_8" >>boxer
|
"box_signed_8" >>boxer
|
||||||
"to_signed_8" >>unboxer
|
"to_signed_8" >>unboxer
|
||||||
\ longlong define-primitive-type
|
\ longlong define-primitive-type
|
||||||
|
@ -349,7 +354,7 @@ SYMBOLS:
|
||||||
[ alien-unsigned-8 ] >>getter
|
[ alien-unsigned-8 ] >>getter
|
||||||
[ set-alien-unsigned-8 ] >>setter
|
[ set-alien-unsigned-8 ] >>setter
|
||||||
8 >>size
|
8 >>size
|
||||||
8 >>align
|
cpu x86.32? os windows? not and 4 8 ? >>align
|
||||||
"box_unsigned_8" >>boxer
|
"box_unsigned_8" >>boxer
|
||||||
"to_unsigned_8" >>unboxer
|
"to_unsigned_8" >>unboxer
|
||||||
\ ulonglong define-primitive-type
|
\ ulonglong define-primitive-type
|
||||||
|
@ -442,14 +447,24 @@ SYMBOLS:
|
||||||
"to_cell" >>unboxer
|
"to_cell" >>unboxer
|
||||||
\ uchar define-primitive-type
|
\ uchar define-primitive-type
|
||||||
|
|
||||||
<c-type>
|
cpu ppc? [
|
||||||
[ alien-unsigned-1 0 = not ] >>getter
|
<c-type>
|
||||||
[ [ 1 0 ? ] 2dip set-alien-unsigned-1 ] >>setter
|
[ alien-unsigned-4 c-bool> ] >>getter
|
||||||
1 >>size
|
[ [ >c-bool ] 2dip set-alien-unsigned-4 ] >>setter
|
||||||
1 >>align
|
4 >>size
|
||||||
"box_boolean" >>boxer
|
4 >>align
|
||||||
"to_boolean" >>unboxer
|
"box_boolean" >>boxer
|
||||||
\ bool define-primitive-type
|
"to_boolean" >>unboxer
|
||||||
|
] [
|
||||||
|
<c-type>
|
||||||
|
[ alien-unsigned-1 c-bool> ] >>getter
|
||||||
|
[ [ >c-bool ] 2dip set-alien-unsigned-1 ] >>setter
|
||||||
|
1 >>size
|
||||||
|
1 >>align
|
||||||
|
"box_boolean" >>boxer
|
||||||
|
"to_boolean" >>unboxer
|
||||||
|
\ bool define-primitive-type
|
||||||
|
] if
|
||||||
|
|
||||||
<c-type>
|
<c-type>
|
||||||
math:float >>class
|
math:float >>class
|
||||||
|
@ -470,17 +485,24 @@ SYMBOLS:
|
||||||
[ alien-double ] >>getter
|
[ alien-double ] >>getter
|
||||||
[ [ >float ] 2dip set-alien-double ] >>setter
|
[ [ >float ] 2dip set-alien-double ] >>setter
|
||||||
8 >>size
|
8 >>size
|
||||||
8 >>align
|
cpu x86.32? os windows? not and 4 8 ? >>align
|
||||||
"box_double" >>boxer
|
"box_double" >>boxer
|
||||||
"to_double" >>unboxer
|
"to_double" >>unboxer
|
||||||
double-rep >>rep
|
double-rep >>rep
|
||||||
[ >float ] >>unboxer-quot
|
[ >float ] >>unboxer-quot
|
||||||
\ double define-primitive-type
|
\ double define-primitive-type
|
||||||
|
|
||||||
\ long c-type \ ptrdiff_t typedef
|
cpu x86.64? os windows? and [
|
||||||
\ long c-type \ intptr_t typedef
|
\ longlong c-type \ ptrdiff_t typedef
|
||||||
\ ulong c-type \ uintptr_t typedef
|
\ longlong c-type \ intptr_t typedef
|
||||||
\ ulong c-type \ size_t typedef
|
\ ulonglong c-type \ uintptr_t typedef
|
||||||
|
\ ulonglong c-type \ size_t typedef
|
||||||
|
] [
|
||||||
|
\ long c-type \ ptrdiff_t typedef
|
||||||
|
\ long c-type \ intptr_t typedef
|
||||||
|
\ ulong c-type \ uintptr_t typedef
|
||||||
|
\ ulong c-type \ size_t typedef
|
||||||
|
] if
|
||||||
] with-compilation-unit
|
] with-compilation-unit
|
||||||
|
|
||||||
M: char-16-rep rep-component-type drop char ;
|
M: char-16-rep rep-component-type drop char ;
|
||||||
|
|
|
@ -65,10 +65,6 @@ M: memory-stream stream-read
|
||||||
: byte-array>memory ( byte-array base -- )
|
: byte-array>memory ( byte-array base -- )
|
||||||
swap dup byte-length memcpy ; inline
|
swap dup byte-length memcpy ; inline
|
||||||
|
|
||||||
: >c-bool ( ? -- int ) 1 0 ? ; inline
|
|
||||||
|
|
||||||
: c-bool> ( int -- ? ) 0 = not ; inline
|
|
||||||
|
|
||||||
M: value-type c-type-rep drop int-rep ;
|
M: value-type c-type-rep drop int-rep ;
|
||||||
|
|
||||||
M: value-type c-type-getter
|
M: value-type c-type-getter
|
||||||
|
@ -77,5 +73,3 @@ M: value-type c-type-getter
|
||||||
M: value-type c-type-setter ( type -- quot )
|
M: value-type c-type-setter ( type -- quot )
|
||||||
[ c-type-getter ] [ c-type-unboxer-quot ] [ heap-size ] tri
|
[ c-type-getter ] [ c-type-unboxer-quot ] [ heap-size ] tri
|
||||||
'[ @ swap @ _ memcpy ] ;
|
'[ @ swap @ _ memcpy ] ;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -737,14 +737,3 @@ USE: vocabs.loader
|
||||||
} cond
|
} cond
|
||||||
|
|
||||||
"complex-double" c-type t >>return-in-registers? drop
|
"complex-double" c-type t >>return-in-registers? drop
|
||||||
|
|
||||||
[
|
|
||||||
<c-type>
|
|
||||||
[ alien-unsigned-4 c-bool> ] >>getter
|
|
||||||
[ [ >c-bool ] 2dip set-alien-unsigned-4 ] >>setter
|
|
||||||
4 >>size
|
|
||||||
4 >>align
|
|
||||||
"box_boolean" >>boxer
|
|
||||||
"to_boolean" >>unboxer
|
|
||||||
bool define-primitive-type
|
|
||||||
] with-compilation-unit
|
|
||||||
|
|
|
@ -324,10 +324,4 @@ M: x86.32 dummy-fp-params? f ;
|
||||||
! Dreadful
|
! Dreadful
|
||||||
M: object flatten-value-type (flatten-int-type) ;
|
M: object flatten-value-type (flatten-int-type) ;
|
||||||
|
|
||||||
os windows? [
|
|
||||||
cell longlong c-type (>>align)
|
|
||||||
cell ulonglong c-type (>>align)
|
|
||||||
4 double c-type (>>align)
|
|
||||||
] unless
|
|
||||||
|
|
||||||
check-sse
|
check-sse
|
||||||
|
|
|
@ -24,9 +24,3 @@ M: x86.64 dummy-fp-params? t ;
|
||||||
|
|
||||||
M: x86.64 temp-reg RAX ;
|
M: x86.64 temp-reg RAX ;
|
||||||
|
|
||||||
<<
|
|
||||||
longlong ptrdiff_t typedef
|
|
||||||
longlong intptr_t typedef
|
|
||||||
int c-type long define-primitive-type
|
|
||||||
uint c-type ulong define-primitive-type
|
|
||||||
>>
|
|
||||||
|
|
Loading…
Reference in New Issue