937895ef59
added a new method modifier #lenient that applies to a primitive method. when set, it turns soft failure to error return
hyunghwan.chung2017-05-07 16:45:27 +00:00
b93bfc9ec6
added header file checks for io multiplexer and dynamic linker in configure.ac
hyunghwan.chung2017-05-07 08:58:34 +00:00
63519c1ca3
introduced a new class modifier #immutable to indicate that an instantiated object cannot be modified using basicAt:put:
hyunghwan.chung2017-05-07 05:18:21 +00:00
1dff630fdd
changed how to calculate the mid point in a binary search loop
hyunghwan.chung2017-05-04 05:22:45 +00:00
68a7118fb2
finished handling of #limited and #final class modifiers
hyunghwan.chung2017-05-01 12:54:41 +00:00
c4d0b804ef
fixed strneq to STREQ in libltdl/loaders/dyld.c
hyunghwan.chung2017-04-30 05:18:09 +00:00
275f5810cc
changed memxxx() macros to use HAVE___BUILTIN_MEMXXX autoconf variables. started adding the #final modifier for class definition
hyunghwan.chung2017-04-30 05:07:08 +00:00
2a6206cc80
changed to use AC_LINK_IFELSE() when checking for some __builtin_memxxx functions. started adding the #limited modifier for class definition
hyunghwan.chung2017-04-30 04:50:33 +00:00
f69c54c339
added /dev/poll interfacing code for solaris change rbt.c to align the value pointer on a word boundary to avoid bus error on sparc64
hyunghwan.chung2017-04-28 14:45:13 +00:00
bce77eda6c
added --enable-mod-x11 and --enable-mod-ffi to configure
hyunghwan.chung2017-04-28 04:03:52 +00:00
04864659a8
added the #dual modifier to method definition. a method defined with #dual is registered in both the instance side and the class side.
hyunghwan.chung2017-04-26 03:09:55 +00:00
8298bad3e0
added moo_process_t.perr and Processor>>primError to capture the last error set by a primitive function
hyunghwan.chung2017-04-25 15:20:58 +00:00
d3c9a33c30
enhanced the compiler to set RDONLY on the array member elements in the RDONLY context
hyunghwan.chung2017-04-24 16:37:57 +00:00
08e54cb524
enhanced the compiler to handle default initial values for class instance variables
hyunghwan.chung2017-04-24 14:32:21 +00:00
8a0d476d18
fixed a lexer bug of eating up one more character when reading a single-letter identifier C, S, M followed by a non-identifier letter in get_ident(). changed various test programs according to syntax changes
hyunghwan.chung2017-04-24 09:20:27 +00:00
5bf8d20a93
enhanced the compiler to handle default initial values for instance variables and class variables
hyunghwan.chung2017-04-24 04:26:03 +00:00
4656bf128e
added a new class variable declarator 'var' or 'variable' supported | .. | style declartion at the class level. added the RDONLY flag to the object header wrote some code to support default values for class-level variables such as instance variables
hyunghwan.chung2017-04-19 16:46:44 +00:00
4f9767422b
added raw memory access primitive functions to SmallPointer
hyunghwan.chung2017-04-02 17:08:03 +00:00
e2d73eccdb
extended the tag bits to support more than 3 special types. tag bit calculation got slower but it can use up to 4 bits to represent more types
hyunghwan.chung2017-04-02 13:13:33 +00:00
2ed62a5edb
added a new method directive #liberal to indicate a method that accept a fully variadic number of arguments. the directive #liberal allows the caller to omit the named arguments as well. the directive #variadic requires the caller to provide at least the named arguments
hyunghwan.chung2017-04-01 06:54:27 +00:00
447670aba8
implemented more prechecks including the existence of the primitive function handler and the number of supported arguments when compiling primitive method defintions
hyunghwan.chung2017-03-31 14:21:22 +00:00
0f84a115ae
added moo_pfbase_t and changed some functions to return moo_pfbase_t* instead of moo_pfimpl_t touched up some modules
hyunghwan.chung2017-03-30 14:59:55 +00:00
3fcfcff0ad
added a new modifier #variadic to make variadic method definition more obvious. allowed the #primitive modifier in a method definition not associated with an external module. fixed a bug in handling soft failure from numbered primitive functions
hyunghwan.chung2017-03-23 16:14:22 +00:00
65722cf89b
changed System to be a class instead of an instance of a system dictionary
hyunghwan.chung2017-03-22 16:55:41 +00:00
46ba3bb3f5
added respondsTo: and perform:with: fixed a bug in Dictionary>>__remove_at: added gc callback to external modules
hyunghwan.chung2017-03-19 14:18:37 +00:00
52d6867944
wrote experimental code to handle events efficiently and asynchronously
hyunghwan.chung2017-02-21 19:20:27 +00:00
b45d896d9f
renamed the #native method modifier to #primitive for consistency improved the method modifier processing logic in the compiler
hyunghwan.chung2017-02-20 04:45:23 +00:00
6a7cbc8dcb
finished the native method handling code in the compiler
hyunghwan.chung2017-02-19 17:33:53 +00:00
8442968f9c
fixed a tokenization bug in getting a empty string literal. allowed a zero-length symbol to be created
hyunghwan.chung2017-02-19 15:45:51 +00:00
93e776a9d8
wrote some incomplete code to support native method definition - method(#native) ...
hyunghwan.chung2017-02-18 15:00:45 +00:00
f89d809cdc
added moo_genpfmethods() and moo_findpfimpl() for convenience of writing primitive modules
hyunghwan.chung2017-02-14 10:25:26 +00:00
71aa1110ed
added more preamable codes. enhanced the system to be able to attach trailing spaces to an object upon instantiation, especially for external modules to be able to secure GC-safe free workspace inside an instantiated object added moo_setclasstrsize(), moo_getobjtrailer() for the trailer feature
hyunghwan.chung2017-02-14 08:29:30 +00:00
73231a29d7
enhanced the primitive module loader such that it can load multiple primitmive groups from a single module file. fixed a bug of setting errnum wrongly in character conversion functions
hyunghwan.chung2017-02-13 13:25:42 +00:00
ff122bdcc8
removed the accidentally added -lxcb from lib/Makefile.am
hyunghwan.chung2017-02-12 19:03:08 +00:00
4c13989947
enabled the compiler to support a class name as a namespace. started adding code for event-driven IO handling
hyunghwan.chung2017-02-12 18:59:03 +00:00
2c8eb87408
refactored moo_execute() by taking process switcher out to a separate inline function
hyunghwan.chung2017-02-11 05:48:30 +00:00
b1c28d03d7
changed VM to emulate 'Dictionary new: ..' for MAKE_DICTIONARY changed VM to emulate 'dic put_assoc: assoc' for POP_INTO_DICTIONARY
hyunghwan.chung2017-02-10 07:38:29 +00:00
c613b6955d
fixed a segfault bug when the source file cannot be opened
hyunghwan.chung2017-02-09 15:56:51 +00:00
2a40be7742
updated the compiler to fix the jump instruction positions for break and continue upon instruction eliminations
hyunghwan.chung2017-02-09 10:22:44 +00:00
c6cf64a586
fixed some issues in logfmt routines. changed the dl_getsym callback to use the dynamic memory allocation if the static buffer isn't large enough
hyunghwan.chung2017-02-09 08:05:14 +00:00
a05793a66d
rewrote a few methods to use if/while instead of ifTrue:/whileTrue: in Collect.moo
hyunghwan.chung2017-02-07 18:09:07 +00:00
5c07a48c5a
wrote code to handle dictionary expression and association expression notation
hyunghwan.chung2017-02-07 17:40:34 +00:00
62eb6db83d
in progress of fixing a bug in instruction elimination
hyunghwan.chung2017-02-06 17:53:33 +00:00
60c38a1ecb
added make_association, pop_into_association_key, pop_into_association_value byte codes to support assocation expressions
hyunghwan.chung2017-02-05 15:05:25 +00:00
eb83c8d83a
started the first step to implement array expression support enclosed in #{ }. added 2 new byte codes - MAKE_ARRAY, POP_INTO_ARRAY for implementation
hyunghwan.chung2017-02-05 13:54:52 +00:00
54a2128713
fixed -L directory order in lib/Makefile.am to avoid linking to libmoo-xxx shared objects when MOO_ENABLE_STATIC_MODULE is on and $(libdir) contains libmoo-xxx files - place the module build directory in front of other library directories. fixed problems when MOO_OOCH_IS_BCH
hyunghwan.chung2017-02-03 06:28:12 +00:00
ea6d48eb0e
improved the #include handling to remember the file loaded and use it when loading an includee file
hyunghwan.chung2017-02-02 12:45:15 +00:00
5c755d68f5
rewrote whileTrue:, whileFalse:, and similar methods for BlockContext in an imperative style
hyunghwan.chung2017-02-02 04:46:29 +00:00
07d8d0ea83
implemented simple optimization in compiling an if expression
hyunghwan.chung2017-01-31 16:14:11 +00:00
22013650bb
added the jump_backward_if_true instruction. added more do-while handling code
hyunghwan.chung2017-01-30 16:48:42 +00:00
341966e373
added a little code for elimination of unneeded code generated
hyunghwan.chung2017-01-29 07:29:58 +00:00
10ca940d72
added small amount of code to handle break & continue
hyunghwan.chung2017-01-27 15:25:46 +00:00
b7a19a3b14
implemented the while expression handling. break and continue yet to be implemented
hyunghwan.chung2017-01-25 13:57:14 +00:00
6209b13410
added the local return byte code - BCODE_LOCAL_RETURN -> it returns to the origin of the active context
hyunghwan.chung2017-01-22 18:01:26 +00:00