Commit Graph

613 Commits (9f0a1ed73033cb86dcad805efed0ec0b49142f15)

Author SHA1 Message Date
John Benediktsson 80e1c8e3f2 Eliminate duplicate syntax for stack effects "(" no longer drops and is identical to the old "((", which is now removed. 2011-10-18 13:19:39 -07:00
John Benediktsson 9f4eeb55f9 Revert "Optimize byte-reverse macro in alien.endian -- it was shifting each byte to the 0th bit place, bitand-ing it with HEX: ff, then shifting it to its final destination -- now we immediately shift to the proper location and bitand with the proper bitmask."
This reverts commit c701a39e89.
2011-10-17 21:39:57 -07:00
Joe Groff 09f55f82fa clean up forwarding stream-read-partial-unsafe
Now that "io" provides a method on object for stream-read-partial-unsafe that forwards to stream-read-unsafe, individual stream class that don't implement partial reads don't need to provide such a method themselves.
2011-10-17 21:23:06 -07:00
Joe Groff 6f12322bda kill noncopying-reader mixin, stream-read generic
Now that all streams have been updated to implement the stream-read-unsafe protocol, take out the noncopying-reader shim. Turn stream-read and stream-read-partial into plain functions over the -unsafe generics.
2011-10-17 21:23:05 -07:00
Joe Groff b79d7158be io.streams.memory: implement stream-read-unsafe
(The actual method is in alien.data due to bootstrap load order issues.)
2011-10-17 21:22:59 -07:00
John Benediktsson d61de12011 Cleanup more lint warnings. 2011-10-14 12:31:46 -07:00
John Benediktsson 378786599d Cleanup lint warnings. 2011-10-14 11:47:24 -07:00
Doug Coleman 757889167a Optimize byte-reverse macro in alien.endian -- it was shifting each byte to the 0th bit place, bitand-ing it with HEX: ff, then shifting it to its final destination -- now we immediately shift to the proper location and bitand with the proper bitmask. 2011-10-11 19:36:22 -07:00
Slava Pestov 84fda0bb05 alien.complex: fix docs 2011-10-10 22:12:50 -07:00
Doug Coleman acbe85f0f4 Rename the STRUCT: point word to something else because it conflicts with other unit tests which define a point word in scratchpad. The struct point is redefined to a tuple point and causes the macro-expansion to error out now that structs are properly reset, so instead we just give it a unique name so it doesnt get redefined. Perhaps examples should define their own vocabularies instead of using scratchpad. 2011-10-03 17:13:20 -07:00
Doug Coleman 671f19d70f Remove all non-core uses of (scan-token)
Add scan-datum
Add scan-number
Document more words
Fixes #225.
2011-10-02 12:00:08 -07:00
Doug Coleman 76580da5d5 Refactor the lexer/parser to expose friendlier words for scanning tokens. The preferred top-level words now throw an exception on EOF.
CREATE -> scan-new
CREATE-CLASS -> scan-new-class
CREATE-WORD -> scan-new-word
CREATE-GENERIC -> scan-new-generic
scan -> (scan-token)
scan-token now throws on eof
(scan-word) returns word/number/f
scan-word now throws on eof
scan-word-name expects a non-number
Fixes #183.
Fixes #209.
2011-09-29 11:28:28 -07:00
John Benediktsson f9986bb446 alien.data: need to mark ">c-array" inline. 2011-09-26 13:34:42 -07:00
John Benediktsson 4f42c72012 specialized-arrays: performed some cleanup.
Specifically,
    •   Created >c-array to be replacement for >T-array.
    •   Created cast-array to be generic replacement for all T-array-cast words.
    •   Created c-array@ to be generic replacement for T-array@ words.
    •   Replaced usages of <T-array> with T <c-array>
    •   Replaced usages of <direct-T-array> with T <c-direct-array>
    •   Replaced usages of >T-array with T >c-array
    •   Replaced usages of T-array-cast with T cast-array
    •   Replaced usages of malloc-T-array with T malloc-array.
    •   Removed malloc-T-array.
    •   Removed T-array-cast.
    •   Removed T-array@.
    •   Removed >T-array.

I also added (but didn't change any code to use):
    •   T c-array-type, returns T-array
    •   T c-array?, returns T-array?
    •   c-array{ T ... }, returns T-array{ ... }

Bootstraps just find on Mac OS X.  Also `load-all test-all` works for me.
2011-09-26 11:37:51 -07:00
Joe Groff 81b12adcad math.blas, alien.fortran: move to unmaintained cuz I'm getting too old for this shit. closes #171 2011-09-24 20:59:21 -07:00
John Benediktsson f6b6e17b00 alien.data: removing unused (and broken?) "require-c-array". 2011-09-23 13:15:09 -07:00
Doug Coleman fa52349f9c Add STRUCT: syntax to alien.endian. Test and document the changes. 2011-09-22 11:27:53 -05:00
John Benediktsson 216f2332be alien: fix docs (add space between sentences). 2011-09-21 19:33:23 -07:00
Doug Coleman 4220f9dc0c Add c-types in alien.endian for making endian-aware STRUCTs. 2011-09-21 16:04:17 -05:00
Slava Pestov acde29b7c7 alien.libraries: add platforms.txt 2011-09-13 20:18:02 -07:00
Joe Groff 218cdcbe0b alien.libraries.unix: break circular dependency on alien.syntax 2011-09-13 09:49:53 -07:00
Joe Groff 5703e8d7a1 alien.libraries, compiler.cfg.builder.alien: if `dlopen` fails during `<library>`, call `dlerror` and store the error message in the library object; put the dlerror message in the linkage-error when a word from the library is compiled 2011-09-12 23:25:59 -07:00
Joe Groff b6e0f0180b alien.libraries, compiler.cfg.builder.alien: include the result of dlerror/GetLastError in the linkage-error for missing symbols 2011-09-12 23:25:59 -07:00
Joe Groff d510723d8e alien.c-types: fill out the higher-order stack effect of if-void 2011-09-03 11:10:08 -07:00
Joe Groff a820c1091d alien: merge enum improvements from Blei/gtk-image-loader 2011-08-27 13:48:30 -07:00
Erik Charlebois e28e48beea Create a setter for C-GLOBAL words 2011-05-23 23:36:14 -04:00
Erik Charlebois 64252dbdbc 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
Slava Pestov 59a708638c alien.c-types: add summary and docs for no-c-type error 2011-04-03 22:33:51 -07:00
Slava Pestov b0732bcb22 Fix unit test failures caused by alien.data change 2010-12-25 22:34:12 -08:00
Slava Pestov 75560699ea Move <ref>, deref and little-endian? from alien.c-types to alien.data, remove <c-object> 2010-12-25 16:55:36 -08:00
Slava Pestov dd0d9fbc10 alien.fortran: cleanup 2010-12-01 03:00:00 -08:00
Joe Groff 2dbfc7df33 alien.fortran: fix stack effect of SUBROUTINE: and FUNCTION: words to include out parameters 2010-12-01 07:05:32 +05:30
Slava Pestov 8be8c7f213 Merge branch 'master' of git://factorcode.org/git/factor 2010-10-31 20:26:29 -05:00
Slava Pestov b03a16ef4d alien.libraries: add-library won't close and re-open the library if nothing changed. This fixes a crash on Windows when reloading the windows vocab 2010-10-25 23:39:15 -05:00
Slava Pestov e139a7a02d Clean up alien.c-types changes a little 2010-10-25 21:09:08 -07:00
Doug Coleman 67c37591ca Remove <uint> *uint and friends. Hopefully remove the last usages of these words 2010-10-25 15:54:42 -05:00
Doug Coleman 4ca9bd0bba Remove usages of <void*> and *void* 2010-10-25 13:22:50 -05:00
Doug Coleman 1f57dc326e Remove many uses of <int> and *int etc 2010-10-25 12:49:12 -05:00
Slava Pestov a400b39fa1 alien.enums: enum>number didn't work in deployed images, add a test which deploys and runs benchmark.ui-panes to catch this in the future 2010-10-17 21:02:42 -04:00
Slava Pestov 559b1ae876 alien.c-types: make behavior of int/uint/long/ulong/longlong/ulonglong struct field setters consistent across 32-bit and 64-bit when supplied with floats (reported by Anton Gorenko) 2010-10-14 22:29:48 -07:00
Slava Pestov fbbaef70c4 Remove stream-peek and stream-peek1, re-implement dns vocab to not need this abstraction 2010-10-08 18:55:13 -07:00
Doug Coleman d462355035 Implement and document stream-peek 2010-10-08 06:34:19 -07:00
Doug Coleman 046efe7798 Update alien.enums docs 2010-10-01 01:41:24 -05:00
Doug Coleman 3ac8847a15 Fix typo ohno 2010-09-29 17:29:28 -05:00
Doug Coleman 3cdc9ba650 Use create-class-in to get redefinition errors with enums 2010-09-29 16:24:25 -05:00
Doug Coleman 56c8d47d58 Make alien.enums create singletons so I can dispatch on them. Clean up the code a bit. 2010-09-28 15:15:55 -05:00
Slava Pestov f9c9814e57 alien.data: remove deprecated malloc-object word 2010-09-20 21:36:20 -07:00
Slava Pestov d450d12b2b classes.struct: fields with a type that's an array of pointers (eg int*[3]) now work 2010-08-15 02:44:21 -07:00
Slava Pestov 25ea734a8e alien.parser: make int[3]* parse, make int[3][4 not parse 2010-08-15 02:37:17 -07:00
Slava Pestov e8152e9098 alien.parser: array types where the base type was a pointer didn't parse (reported by Dmitry Shubin) 2010-08-15 02:32:12 -07:00
Slava Pestov cc71799833 alien.prettyprint: fix unit test snafu 2010-08-11 21:52:37 -07:00
Joe Groff 04075be646 alien.c-types: classify typedefs of array/string types as typedef-words so they prettyprint correctly 2010-08-11 10:03:19 -07:00
Slava Pestov a5f59e9cd6 alien.prettyprint: fix test failure 2010-07-29 21:09:05 -04:00
Slava Pestov 6142bd7335 alien.syntax: FUNCTION: and FUNCTION-ALIAS: now define inline words 2010-07-28 03:05:14 -04:00
Slava Pestov b23aac1beb compiler.cfg: open-code parameter boxing and unboxing for certain C types 2010-07-19 10:25:13 -04:00
Slava Pestov 446ee6896d alien.data: remove second quotation parameter from with-out-parameters, now all values are copied properly and calling 'clone' on structs in this quotation is not necessary 2010-07-16 17:32:05 -04:00
Slava Pestov 5b31cbcb3c alien.data: document with-scoped-allocation and with-out-parameters, and add initial: syntax 2010-07-16 17:13:38 -04:00
Slava Pestov 8a0525e5ce Add a scan-token word which is like scan, except throws an error on EOF; document scan-object word; mention that scan-token/scan-object are preferred over scan/scan-word 2010-07-06 16:20:08 -04:00
Slava Pestov 4c4a86ee72 alien.data: fix unit test failure 2010-06-11 15:38:57 -04:00
Joe Groff c8ea7ed0c7 alien.data: make binary-zero? public and move it from classes.struct.private 2010-06-10 17:05:43 -07:00
Slava Pestov be1b5e6627 alien.prettyprint: fix wrapping when prettyprinting pointer: 2010-06-02 03:11:46 -04:00
Slava Pestov adecd623d0 alien.prettyprint: fix prettyprinting of array types and CALLBACK: (reported by Anton Gorenko) 2010-05-30 16:21:43 -04:00
Slava Pestov ba7cb61133 Stack allocation improvements
- New with-out-parameters combinator
- Inhibit tail call optimization in frames with local allocation, to ensure that passing a stack allocated value to the last word in the quotation works
- local allocations are now aligned properly
- spill slots are now aligned properly aligned in frames which have parameter and local allocation areas
2010-05-22 02:37:00 -04:00
Slava Pestov 86358b1dc3 alien.data: add with-scoped-allocation combinator for stack-allocating C data 2010-05-19 00:33:36 -04:00
Slava Pestov 4d66f52777 alien.c-types: make a couple of words private 2010-05-18 22:34:42 -04:00
Slava Pestov 1834241e5a alien.libraries, stack-checker.alien: check user inputs more carefully to ensure that invalid ABI descriptors don't slip through and break random stuff (reported by prunedtree) 2010-05-18 18:46:31 -04:00
Slava Pestov ea726f5680 Move remaining sequence operations from generalizations to sequences.generalizations where they belong 2010-05-18 18:36:47 -04:00
Slava Pestov 5b48cd2a63 FFI rewrite part 5: return value boxing and callback parameter boxing now uses vregs; simplify return value unboxing 2010-05-16 03:43:23 -04:00
Slava Pestov 0cde5c8fb5 Eliminate compiler.alien 2010-05-11 23:24:47 -04:00
Slava Pestov ee0640f176 Move flatten-c-type to death row so that it can be executed in part 5 2010-05-11 22:26:31 -04:00
Slava Pestov c211c3e84e FFI rewrite part 1: split up ##alien-invoke and friends into smaller instructions 2010-05-09 21:36:52 -04:00
Slava Pestov 627295f094 Language change: tuple slot setter words with stack effect ( value object -- ) are now named FOO<< instead of (>>FOO) 2010-05-06 17:21:02 -04:00
Slava Pestov e763c74096 More FFI cleanups 2010-05-05 01:13:45 -04:00
Slava Pestov de8e0ccd5c alien.c-types: cleanup 2010-05-04 19:33:55 -04:00
Joe Groff e5c65b2204 use word-props instead of singletons for enum>number conversion so there's not a big fat generic making the image buy another plane ticket 2010-04-21 22:22:06 -07:00
Joe Groff 4c7ab0e9a3 doll up ENUM: docs 2010-04-21 21:33:04 -07:00
Doug Coleman 339952697f Fix alien.enum docs 2010-04-21 21:32:33 -05:00
Joe Groff f9668be814 alien.enums: make enum>number foldable so it optimizes constant enums to constant ints, make number>enum a macro so it doesn't use c-type metadata at runtime 2010-04-20 17:05:14 -07:00
Erik Charlebois fdeb305a3c Use generic word for enum>number. Tests and documentations. 2010-04-19 20:08:40 -07:00
Erik Charlebois baab8c060d Remove ENUM: f and replace uses with CONSTANTs.
Fix bootstrap and load-all errors from enum classes.
2010-04-19 20:08:40 -07:00
Joe Groff 52903ee597 prettyprint ENUM: definitions 2010-04-19 20:07:18 -07:00
Joe Groff d3f770d545 add alien.enums vocab with enum-c-types that convert between symbols and integer values in the FFI. update ENUM: to define symbolic enums, and take an optional base type 2010-04-19 20:07:18 -07:00
Joe Groff e730d3b6d5 alien.c-types: use CONSULT: to define c-type-protocol methods on c-type-name 2010-04-19 20:07:17 -07:00
Joe Groff 6e55a3b8f5 alien.parser, alien.syntax: send ENUM: body to parse-enum 2010-04-19 20:07:17 -07:00
Joe Groff f394cb4fdc alien.parser: have define-enum handle the case when the enum name is f 2010-04-19 20:07:17 -07:00
Joe Groff 8c915e05f7 alien.parser, alien.syntax: refactor ENUM: to separate parsing from definition 2010-04-19 20:07:17 -07:00
Joe Groff 4bc915d526 C-ENUM: -> ENUM: 2010-04-19 20:07:16 -07:00
Slava Pestov 2eda6fc6aa io.encodings: add a fast-path for ascii, utf8 and 8-bit encodings when string only contains ASCII characters 2010-04-19 01:14:00 -05:00
Joe Groff 37784cd356 rearrange stuff in alien.arrays and alien.data to eliminate libc dependency from alien.arrays, and by extension, alien.syntax 2010-04-14 21:40:29 -07:00
Joe Groff 54015782f3 document FUNCTION-ALIAS: 2010-04-14 16:14:33 -07:00
Joe Groff d20bff5615 prettyprint FUNCTION-ALIAS: definitions 2010-04-14 12:40:10 -07:00
Joe Groff e5c1a82643 alien.syntax: FUNCTION-ALIAS: syntax to define a C function binding with a different Factor name 2010-04-14 12:06:45 -07:00
Slava Pestov becb7c78b7 Move non-parsing words out of alien.syntax, and use a symbol instead of a string variable to store the current library in alien.parser 2010-04-12 18:09:26 -05:00
Slava Pestov 2b4a55b53a Merge branch 'master' of git://github.com/erikcharlebois/factor 2010-04-10 18:01:19 -07:00
Erik Charlebois edc489f4c1 Change C-ENUM: to always take a type. Use f for anonymous enums. Update all uses. 2010-04-09 23:48:22 -07:00
Erik Charlebois 4b78fe690b Extend C-ENUM: to allow specifying the constant vvalues like in C. Add C-TYPED-ENUM: to automatically typedef a type. 2010-04-06 02:46:23 -07:00
Joe Groff 2240520e2d update some more doc examples using old abi strings 2010-04-02 23:16:53 -07:00
Joe Groff ef884ef7f2 Merge branch 'master' into abi-symbols 2010-04-01 15:28:36 -07:00
Joe Groff 98d1e7d006 update alien.libraries docs to link cdecl/stdcall symbols 2010-03-31 19:57:04 -07:00
Joe Groff f3dd625de6 "stdcall" -> stdcall 2010-03-31 19:29:04 -07:00
Joe Groff 65c3259761 "cdecl" -> cdecl 2010-03-31 19:20:35 -07:00
Slava Pestov 2b68f56c89 Document (free), move it out of libc.private and mention it in the "c-strings" help article (reported by Blei) 2010-03-30 17:32:51 -04:00
Slava Pestov 75d0f51b30 alien.debugger: fix USING: form 2010-03-17 19:35:12 +13:00
Slava Pestov 6ff0393e2f debugger: Untangle some dodgy dependencies that were loading locals before prettyprint, resulting in locals.prettyprint not being loaded 2010-03-17 19:19:43 +13:00
Joe Groff cd17a934ac cut commas off of FUNCTION: parameter names in stack effects again 2010-02-28 19:29:53 -08:00
Joe Groff 078ca0fa58 alien.parser: refactor FUNCTION: parsing to read from the source incrementally. parse errors in FUNCTION: should now correspond to their location within the definition 2010-02-28 16:20:45 -08:00
Slava Pestov 17b095a524 Slices over specialized arrays can now be passed to C functions, written to binary output streams, and given to malloc-byte-array 2010-02-25 04:50:31 +13:00
Slava Pestov af0ddd5985 Specialized arrays, structs and other objects responding to the >c-ptr / byte-length protocol can now be written to binary streams 2010-02-24 20:18:41 +13:00
Joe Groff b45ec6397b typo in alien.data docs 2010-02-23 12:20:47 -08:00
Joe Groff 1916b9269e "pointer-c-type" word-prop hack is now unnecessary since all pointer types behave uniformly now 2010-02-23 12:07:55 -08:00
Joe Groff db8b6baa2f typo in alien.parser test 2010-02-23 11:59:53 -08:00
Joe Groff 71d169e420 fix typos in alien docs 2010-02-23 11:56:10 -08:00
Joe Groff 4cfa1a6c77 rename current string-mangling "char*" to "c-string". char* is now just a boring old pointer to char 2010-02-23 11:42:02 -08:00
Joe Groff 818bbb4984 update docs about pointer types 2010-02-23 11:03:48 -08:00
Joe Groff 00a7559d55 have TYPEDEF:, STRUCT: etc. throw an error if you try to define a c type name ending with asterisk 2010-02-23 10:16:18 -08:00
Joe Groff 75e2a5098e if any typedef in the chain has a pointer-c-type, use it 2010-02-23 08:09:33 -08:00
Slava Pestov 7decccf8bb Merge branch 'master' of git://factorcode.org/git/factor 2010-02-23 20:26:41 +13:00
Joe Groff aef979b552 alien.fortran: update tests to reflect new pointer c-type objects 2010-02-22 21:58:18 -08:00
Erik Charlebois aead6e7dd8 Revert change to make-callback-type cause Slava already fixed it in parse-arglist 2010-02-22 19:34:34 -08:00
Joe Groff 829351f2f2 don't box struct pointer values when they're null 2010-02-22 19:08:43 -08:00
Joe Groff 1bf37f01e5 alien.arrays/classes.struct: ensure specialized array types for struct array slots get instantiated at parse time 2010-02-22 12:21:29 -08:00
Joe Groff 4d2ded634b alien.parser: properly generate return type name for FUNCTION: stack effects 2010-02-22 11:25:01 -08:00
Erik Charlebois 833372cd08 Merge alien/parser/parser.factor 2010-02-22 10:53:19 -08:00
Erik Charlebois 124982ce23 Fix CALLBACK: effect return type also not a string. Added accompanying unit test. 2010-02-22 10:48:21 -08:00
Joe Groff 31a0d98e02 Merge branch 'master' into new-alien-pointers
Conflicts:
	basis/alien/c-types/c-types.factor
	basis/stack-checker/dependencies/dependencies.factor
2010-02-22 10:32:59 -08:00
Slava Pestov 23a1f0ed8c alien: some code cleanups and fixes 2010-02-23 01:28:56 +13:00
Slava Pestov 7578429692 alien.c-types: remove void? word 2010-02-22 21:31:41 +13:00
Joe Groff 338edac16c Merge branch 'master' of git://factorcode.org/git/factor into new-alien-pointers 2010-02-21 23:14:08 -08:00
Joe Groff 0bc8e8f408 alien.arrays: typedef special char* symbol so it still works as expected 2010-02-21 23:11:59 -08:00
Slava Pestov 1986dc49e4 Merge branch 'master' of git://github.com/erikcharlebois/factor 2010-02-22 20:09:20 +13:00
Joe Groff 04cc3052b6 alien.prettyprint: pprint pointer objects as "type*" in c-type contexts 2010-02-21 21:32:34 -08:00
Joe Groff 5faa97e42c alien.parser: favor parsing "foo*" as pointer-to-foo now 2010-02-21 21:06:00 -08:00
Joe Groff d5bf6e55cd more implementation of pointer c-types. make it so that { char* binary } acts like a real pointer to char instead of stringifying, and add byte* typedef for { char* binary } 2010-02-21 20:58:21 -08:00
Joe Groff 5955ba06df use a "pointer" wrapper tuple to indicate pointer types instead of the current slipshod approach 2010-02-21 16:27:36 -08:00
Joe Groff 62e97c138a ditch string c-types 2010-02-21 10:58:21 -08:00
Erik Charlebois 536ae3c648 Unit test checking the stack effects from FUNCTION:. 2010-02-20 21:15:47 -08:00
Erik Charlebois b25e945c74 The return values in the stack effects of FUNCTION: words were c-types rather than strings. This was causing scaffold-help to fail on vocabularies with FUNCTION:. 2010-02-20 03:02:56 -08:00
Joe Groff 42089b6586 alien.libraries: add a "deploy-library" word that marks a library to have its dll deployed with applications that use it. add support to tools.deploy to find and copy deployed libraries into target bundle 2010-02-16 13:32:58 -08:00
Slava Pestov a3b74d88c9 cpu.architecture: rep-length now works in deployed images 2010-02-11 18:11:47 +13:00
Slava Pestov 59193af701 alien.syntax: save source location for TYPEDEF:, raise error on redefinition 2010-02-05 20:52:20 +13:00
Joe Groff 1ee05e38fb missed an alien.fortran test 2010-02-02 00:13:13 -08:00
Joe Groff f1bbeec198 wrap alien.fortran c-type conversion tests in with-manifest 2010-02-01 22:03:51 -08:00
Joe Groff 9adfda095f alien.fortran: convert fortran types to word c-types 2010-02-01 12:06:10 -08:00
Slava Pestov 892522f8bd alien.c-types: ensure that long and ulong types are defined with define-primitive-type and not typedef 2010-01-23 00:15:08 +13:00
Slava Pestov 638fbb13b0 alien.c-types: clean up and fix for win64 2010-01-22 23:14:20 +13:00
Slava Pestov 1c10196c43 Rename kernel.private:getenv/setenv to special-object/set-special-object to mirror recent renaming on the VM side 2010-01-13 18:08:18 +13:00
Slava Pestov e96404327e Get optimizing compiler working without global register variables in VM 2009-12-22 15:42:49 +13:00
Slava Pestov 7c8d755c45 Fix bootstrap 2009-12-02 19:24:46 -05:00
Joe Groff 67cc1c01be Merge branch 'master' into simd-cleanup 2009-11-26 16:14:46 -08:00
Joe Groff 66d0cafa94 fix buggy simd intrinsics 2009-11-26 13:28:40 -08:00