Commit graph

304 commits

Author SHA1 Message Date
Joshua Suskalo
036d4112fb
Fix nullpointer serialization in simpler inline cases 2022-10-31 13:59:03 -05:00
Joshua Suskalo
fa40902ce9
Fix bug with inlined serdes causing complex pointer serdes to fail 2022-10-31 13:59:03 -05:00
Joshua Suskalo
75bbe11971
Add todo about potential bug with nil as a primitive argument 2022-10-31 11:40:27 -05:00
Joshua Suskalo
319bb3a33b
Fix incorrect padding in C-layout structs 2022-10-31 11:39:00 -05:00
Joshua Suskalo
990e76c624
Fix incorrect pointer alignment 2022-10-31 11:39:00 -05:00
Joshua Suskalo
c0244a8b33
Add todo about raw types 2022-07-16 19:46:45 -05:00
Joshua Suskalo
e1e64d8362
Add very inefficient raw types 2022-07-16 19:37:46 -05:00
Joshua Suskalo
e9a5b640ac
Add support for flagset composite types 2022-07-07 16:08:41 -05:00
Joshua Suskalo
c0dee46fe9
Fix bug with incorrect enum serdes 2022-07-07 15:23:52 -05:00
Joshua Suskalo
2646e6fc9e
Add enum serdes 2022-07-07 14:15:33 -05:00
Joshua Suskalo
d7e0ced38b
Add macros to ease creating static variable references 2022-07-07 13:31:22 -05:00
Joshua Suskalo
20956f2549
Add function to get the segment from a static variable 2022-07-07 13:05:39 -05:00
Joshua Suskalo
3794ab7d5f
Use coerce-addressable where possible 2022-07-07 11:11:21 -05:00
Joshua Suskalo
b8383a467b
Correct docstring of downcall-handle 2022-07-07 11:11:13 -05:00
Joshua Suskalo
01515ad568
Correct the docstring of static-variable 2022-07-07 11:04:03 -05:00
Joshua Suskalo
98c59ea936
Correct the docstring of ensure-sybmol 2022-07-07 11:03:51 -05:00
Joshua Suskalo
db242e1445
Finish removing references to long-long 2022-07-07 11:03:26 -05:00
Joshua Suskalo
b10c459bf7
Update ffi namespace for jdk 18 2022-04-15 14:07:02 -05:00
Joshua Suskalo
4037040c4b
Update mem namespace to jdk18 2022-04-15 14:07:02 -05:00
Joshua Suskalo
90c125fb62 Fix bug where pointer types were not deserialized in wrapper 2022-01-19 11:34:57 -06:00
Joshua Suskalo
f7e50630cc Fix bug where non-native endian values were needlessly serialized 2022-01-19 11:19:12 -06:00
Joshua Suskalo
3e63230c1f type hint size and alignment constants 2022-01-19 11:00:57 -06:00
Joshua Suskalo
7ec2cd1575 Add size and alignment constants for primitives 2022-01-19 10:56:46 -06:00
Joshua Suskalo
5c560e684d Add convenience functions for reading and writing addresses 2022-01-18 15:39:49 -06:00
Joshua Suskalo
7c62207613 Allow non-native byte orders on primitives 2022-01-18 14:25:57 -06:00
Joshua Suskalo
104db6b8fd Add type hints to layout constants 2022-01-18 14:25:57 -06:00
Joshua Suskalo
6ba905e6bf Update primitive? to be a function 2022-01-18 14:25:57 -06:00
Joshua Suskalo
634f371144 Throw an exception on testing invalid type objects 2022-01-18 14:25:57 -06:00
Joshua Suskalo
ded50d7a29 Update (de)serialization multimethods to use new prim functions 2022-01-18 14:25:57 -06:00
Joshua Suskalo
cf529bbd3d Add functions for reading and writing primitives 2022-01-18 14:25:57 -06:00
Joshua Suskalo
2cfa0ed623 Add docstrings to layout defs 2022-01-18 13:38:48 -06:00
Joshua Suskalo
e8b3c8e2b2 Add type hints to most utility functions 2022-01-18 13:38:32 -06:00
Joshua Suskalo
b029a41f6a Update type hinting for alloc-instance based on size-of 2022-01-18 13:28:43 -06:00
Joshua Suskalo
b960c01bb3 Add support for layouts being passed to size-of and align-of 2022-01-18 13:28:00 -06:00
Joshua Suskalo
7350a5df1c Use layout primitives in c-layout multimethod 2022-01-18 13:27:22 -06:00
Joshua Suskalo
55d770cc34 Add layout constants for c-style primitive layouts 2022-01-18 13:26:35 -06:00
Joshua Suskalo
faca63b50c Add constants for byte orders 2022-01-18 13:25:56 -06:00
Joshua Suskalo
3709aab143 Merge branch 'feature/c-layout' into develop 2022-01-10 14:55:59 -06:00
Joshua Suskalo
900112b6e4 Fix bug where characters were read as java characters 2022-01-10 14:38:23 -06:00
Joshua Suskalo
da12b26e3c Fix bug with incorrect padding size 2022-01-10 14:06:34 -06:00
Joshua Suskalo
49f9e60b11 Allow expressions that evaluate to types in defalias 2022-01-10 13:34:58 -06:00
Joshua Suskalo
95856cb4f3 Add with-c-layout function 2022-01-10 13:31:27 -06:00
Joshua Suskalo
579393f830 Add align-of 2022-01-10 13:30:01 -06:00
blak3mill3r
b21a5db27e fix: default to an aload instruction for upcall
this allows non-primitive types

prior to this commit the library would generate invalid bytecode with
a `nil` instruction
2021-10-25 03:05:14 +00:00
Joshua Suskalo
fa4e4ebb57 Fix docstring in coffi.ffi 2021-10-16 10:19:27 -05:00
Joshua Suskalo
a1ad988aad Fix incorrect argument loading in upcall stubs 2021-10-15 22:13:45 -05:00
Joshua Suskalo
14d38e3b8a Fix some indentation 2021-10-15 08:31:32 -05:00
Joshua Suskalo
4f0d151c7a Fix crash when returning void in an upcall 2021-10-14 19:22:30 -05:00
Joshua Suskalo
e760a320a7 Rewrite the inline expansion macro 2021-10-14 18:25:06 -05:00
Joshua Suskalo
9cc83e7d1a Fix bug with inline expansion with no arguments 2021-10-14 13:05:51 -05:00
Joshua Suskalo
5fa1f157d3 Fix broken defcfn with native-sym 2021-10-13 15:51:49 -05:00
Joshua Suskalo
a620752f2c Ensure that the downcalls in the inline expansion are evaluated correctly 2021-10-13 15:28:34 -05:00
Joshua Suskalo
7975adbd94 Add caveat in primitive-type about evaluated arguments 2021-10-13 13:51:13 -05:00
Joshua Suskalo
b1133811a0 Ensure there's no double-evaluation of the return types 2021-10-13 13:46:03 -05:00
Joshua Suskalo
6f28994526 Add inline function for make-serde-wrapper 2021-10-13 13:15:35 -05:00
Joshua Suskalo
868c843875 Add perdicate for primitive types 2021-10-13 09:57:23 -05:00
Joshua Suskalo
bcc6b29e9e Remove unused import 2021-10-11 11:21:02 -05:00
Joshua Suskalo
d3050c34ff Move arg and ret types into the cfn call in defcfn
This is in preparation for an optimization in cfn with constant arg and ret
types.
2021-10-11 11:19:13 -05:00
Joshua Suskalo
15c190572f Remove todo line 2021-10-10 13:32:15 -05:00
Joshua Suskalo
53f72bdb49 Move to multimethod implementations for deserialize* 2021-10-10 12:43:11 -05:00
Joshua Suskalo
c43ff5a848 remove performance comments on things already split out 2021-10-10 12:43:11 -05:00
Joshua Suskalo
80beace196 Move serialize* to multimethod impls 2021-10-10 12:43:11 -05:00
Joshua Suskalo
4f6e8d7bac Move c-layout to multimethod versions 2021-10-10 12:43:11 -05:00
Joshua Suskalo
8f5f4a2cc4 Add multimethod implementations for primitive-type
This should improve performance
2021-10-10 12:43:11 -05:00
Joshua Suskalo
c26c8a40c8 Add todos for optimization 2021-10-10 11:40:40 -05:00
Joshua Suskalo
aa93014f83 Fix bug where primitive arg optimizations weren't applied to cfn 2021-10-09 09:50:56 -05:00
Joshua Suskalo
275c6ec6ab Make arrays deserialize to vectors 2021-10-08 19:27:14 -05:00
Joshua Suskalo
ab82b6a5a1 Fix a bug where non-primitive argument types failed to link 2021-10-06 19:37:29 -05:00
Joshua Suskalo
014901233c Fix bug where compound types in arglist metadata failed 2021-10-06 08:53:02 -05:00
Joshua Suskalo
96f3153c5f Fix bug where compound types were not permitted as return values in defcfn 2021-10-04 19:21:23 -05:00
Joshua Suskalo
88b2a72f07 Add an address predicate 2021-10-04 19:20:47 -05:00
Joshua Suskalo
7d621f82db Consider nil as null? 2021-10-01 12:10:25 -05:00
Joshua Suskalo
8100295567 Ensure serializing nil as a pointer returns null 2021-10-01 12:03:25 -05:00
Joshua Suskalo
673a653200 Fix bug with primitive-serializing arguments to downcalls not compiling 2021-10-01 10:39:32 -05:00
Joshua Suskalo
b98fdc05ea Fix primitive arguments to upcalls not compiling 2021-10-01 10:38:42 -05:00
Joshua Suskalo
22343b8512 Fix a bug where void returns on upcalls crash the JVM 2021-10-01 10:37:38 -05:00
Joshua Suskalo
66eefc7a13 Fixed bug with serialize-into and primitives 2021-09-30 20:16:16 -05:00
Joshua Suskalo
9d65f47a96 Remove reference to method that isn't in panama anymore 2021-09-30 19:58:11 -05:00
Joshua Suskalo
daa1949f32 Add address metadata key to defcfn as well 2021-09-30 15:45:10 -05:00
Joshua Suskalo
5ab2bae1fa Add a function's address to the metadata of deserialized functions 2021-09-30 15:40:55 -05:00
Joshua Suskalo
ea53cfbdc2 Fix bug where deserializing nullpointers as functions failed instead of returning nil 2021-09-30 15:27:12 -05:00
Joshua Suskalo
50cc6f3bdc Fix upcall stubs not compiling with non-primitive argument types 2021-09-30 15:25:58 -05:00
Joshua Suskalo
3043bf7877 Fix upcall stubs having incorrect type descriptors 2021-09-30 15:25:21 -05:00
Joshua Suskalo
b01f4229e5 Fix invalid macroexpansion of defcfn without docstring 2021-09-29 10:20:10 -05:00
Joshua Suskalo
463d35809b Support type arguments to ::pointer in serialize-into 2021-09-27 12:10:04 -05:00
Joshua Suskalo
6bc907e720 Add with-acquired blocks to code that needs it 2021-09-27 12:09:23 -05:00
Joshua Suskalo
fb3b95977f Add a function to tie two scopes together 2021-09-27 12:08:42 -05:00
Joshua Suskalo
5f96439432 Separate memory ops into their own ns 2021-09-26 14:11:29 -05:00
Joshua Suskalo
14ee7a1ee8 Rename :downcall to :function in the symbolspec 2021-09-25 13:40:15 -05:00
Joshua Suskalo
8ac03cc961 Add a docstring to the main ns 2021-09-25 13:24:06 -05:00
Joshua Suskalo
7d970a177f Add function for copying the data from one segment to another 2021-09-25 13:12:21 -05:00
Joshua Suskalo
415c842af1 Move dispatch for unions into the kwargs 2021-09-25 12:27:40 -05:00
Joshua Suskalo
65848c72eb Add function for making a varargs cfn factory with serde wrapper 2021-09-25 08:45:45 -05:00
Joshua Suskalo
f7c9796134 Add style/indent meta to macros 2021-09-24 14:23:37 -05:00
Joshua Suskalo
b6fbd3eccb Replace defstruct style macros with a defalias 2021-09-24 12:29:56 -05:00
Joshua Suskalo
bb4c9d89f2 Add a macro for constructing union type aliases 2021-09-24 10:50:41 -05:00
Joshua Suskalo
3ae1d6840f Remove the docstring from defcstruct 2021-09-24 10:25:29 -05:00
Joshua Suskalo
8889da56b2 Rename defstruct to defcstruct 2021-09-24 10:00:10 -05:00
Joshua Suskalo
0cc650103c Make the default for function serdes be to serde the up/downcall 2021-09-23 16:23:13 -05:00
Joshua Suskalo
83bfe879c5 Remove a todo after reconsidering 2021-09-23 14:54:14 -05:00
Joshua Suskalo
8088633b5b Remove map which is no longer used in implementation 2021-09-23 14:31:09 -05:00
Joshua Suskalo
af3c1357d6 Add docstrings to private functions and data 2021-09-23 14:29:13 -05:00
Joshua Suskalo
704c8710c5 Fix docstring of freset! and fswap! 2021-09-23 14:25:24 -05:00
Joshua Suskalo
3ce919e5a1 Fix broken bytecode in upcalls 2021-09-23 13:29:00 -05:00
Joshua Suskalo
f76b2edae4 Add todo for nullptrs 2021-09-23 13:12:47 -05:00
Joshua Suskalo
ebe36e199c Update struct definition macro for conformed args 2021-09-23 12:28:29 -05:00
Joshua Suskalo
8ea6c27b38 Ensure ::type spec has its own sequence 2021-09-23 12:27:22 -05:00
Joshua Suskalo
3f6203b5d3 Fix incorrect serdes around upcalls 2021-09-23 12:26:57 -05:00
Joshua Suskalo
284b76255a Fix indentation of upcall-class 2021-09-23 12:26:40 -05:00
Joshua Suskalo
f7f8e44a80 Change long type hints to casts 2021-09-23 12:25:59 -05:00
Joshua Suskalo
fc3b0a96a5 Add support for returning non-primitive types via segment allocators 2021-09-23 12:24:38 -05:00
Joshua Suskalo
d67d539285 Add a function for constructing a fully wrapped c function 2021-09-23 09:36:43 -05:00
Joshua Suskalo
eeee025303 Add a very basic struct definition macro 2021-09-23 09:33:07 -05:00
Joshua Suskalo
7bd9e9b653 Remove extraneous bits 2021-09-23 08:51:59 -05:00
Joshua Suskalo
e00e62f996 Ensure that primitive values are cast to the correct types in serialization 2021-09-23 08:30:11 -05:00
Joshua Suskalo
1fe9d2cb02 Move library loading interop to a java class 2021-09-23 08:15:16 -05:00
Joshua Suskalo
08515095c5 Ensure that the library name is loaded correctly 2021-09-22 18:22:39 -05:00
Joshua Suskalo
86ff96c797 Start function serdes 2021-09-22 11:06:13 -05:00
Joshua Suskalo
9e7aab273e Move java layout to a simple function 2021-09-20 20:12:32 -05:00
Joshua Suskalo
30891c35ab Fix reflection warnings 2021-09-20 20:12:24 -05:00
Joshua Suskalo
4c108b7010 Fix bug where symbol lookup used the wrong kind of method 2021-09-20 20:11:49 -05:00
Joshua Suskalo
331e72079f Move section for static memory access 2021-09-20 20:01:37 -05:00
Joshua Suskalo
a61feaa739 Remove inconsistent spec 2021-09-20 19:53:13 -05:00
Joshua Suskalo
23602dfa18 Add array serdes 2021-09-20 19:41:44 -05:00
Joshua Suskalo
b9afb254fb Add padding serdes to support struct layouts 2021-09-20 19:41:32 -05:00
Joshua Suskalo
b2918936e7 Add struct serdes 2021-09-20 19:41:10 -05:00
Joshua Suskalo
aba236f01c Add functions for sequence views of segments 2021-09-20 19:16:46 -05:00
Joshua Suskalo
33320a6dc2 Add a method to clone a segment 2021-09-20 15:29:35 -05:00
Joshua Suskalo
25a11d4ba0 Deserialize unions by giving a slice of their segment 2021-09-20 15:23:05 -05:00
Joshua Suskalo
317a08abc6 Add support for serde wrappers to data model 2021-09-20 14:32:00 -05:00
Joshua Suskalo
d886213ded Add support for a serde-varargs-factory wrapper 2021-09-20 14:30:04 -05:00
Joshua Suskalo
87f48ec681 Add support for union types 2021-09-20 14:19:14 -05:00
Joshua Suskalo
382f342aa5 Add a function to make a serde wrapper fn 2021-09-20 14:19:14 -05:00
Joshua Suskalo
6014ace2a4 Ensure that the segment is returned in serialize 2021-09-20 12:47:02 -05:00
Joshua Suskalo
f4a4f8ec33 Support looking up symbols in non-system libraries 2021-09-18 17:30:26 -05:00
Joshua Suskalo
0c6b2616e8 Finish docstring for reify-libspec 2021-09-18 17:24:40 -05:00
Joshua Suskalo
1e7ec8ad80 Allow any kind of argument as a type argument 2021-09-18 17:24:40 -05:00
Joshua Suskalo
b584de3e8b
Add TODO for symbol lookup for non-libc symbols 2021-09-17 15:17:18 -05:00
Joshua Suskalo
6cc17f463e Update qsort example 2021-09-17 14:02:06 -05:00
Joshua Suskalo
8159fdebad Allow complex types in native arglists 2021-09-17 14:01:49 -05:00
Joshua Suskalo
b5dd785fe0 Add function to create a library from a spec 2021-09-17 14:01:13 -05:00
Joshua Suskalo
30e549b406 Don't call tostring on serializing c-string 2021-09-17 13:59:58 -05:00
Joshua Suskalo
eeba1711d6 Create data model concept 2021-09-17 13:02:26 -05:00
Joshua Suskalo
3030fc66cb Allow multiple function tails in defcfn 2021-09-17 12:55:38 -05:00
Joshua Suskalo
e8a3c555bb Ensure that the defcfn macro is validated 2021-09-17 12:55:38 -05:00
Joshua Suskalo
ada787a72b Change defcfn to use a fn-tail to allow multiple arity wrappers 2021-09-17 12:55:38 -05:00
Joshua Suskalo
fce3675a4b Add docstrings 2021-09-17 12:55:38 -05:00
Joshua Suskalo
e72d57c10f Create a public varargs factory builder 2021-09-17 12:55:38 -05:00
Joshua Suskalo
dc4013f7d4 Create a public make-downcall function 2021-09-17 12:55:38 -05:00
Joshua Suskalo
0cfe7edb36 Add functions for getting const and variable values from native vars 2021-09-17 12:55:38 -05:00