Commit Graph

830 Commits

Author SHA1 Message Date
hyunghwan.chung
1bdaba968d added nsup field to the class object to chain back to the upper namespace in the hierarchy.
changed bootstrapping code and compiler code to weave top-level namespace hierarchy more consistantly, mostly related to the System class and its intrinsic namespace dictionary linked via the nsdic field
2017-05-20 02:27:48 +00:00
hyunghwan.chung
8324f64dea refactored array and byte array processing code in the compiler 2017-05-16 15:01:31 +00:00
hyunghwan.chung
a639fe9f93 fixed an error in moo_seterrbfmt() and moo_seterrufmt() 2017-05-16 02:04:18 +00:00
hyunghwan.chung
5e7771b799 added MOO_LOG_MAXCAPA 2017-05-12 16:38:16 +00:00
hyunghwan.chung
f5d311e825 enhanced logging functions to be more error-resistent 2017-05-12 04:15:09 +00:00
hyunghwan.chung
9208d078b2 added moo_seterrbfmt() and moo_seterrufmt() 2017-05-11 14:59:20 +00:00
hyunghwan.chung
ce69989a86 touched up primitive failure handling a bit 2017-05-09 15:48:44 +00:00
hyunghwan.chung
a1782753a9 touched up primitive failure handling in exec.c 2017-05-08 16:00:55 +00:00
hyunghwan.chung
95f3df6424 moved .gitattributes up a directory 2017-05-08 03:43:07 +00:00
hyunghwan.chung
942b43a97b added the .gitattributes file 2017-05-08 03:31:34 +00:00
hyunghwan.chung
937895ef59 added a new method modifier #lenient that applies to a primitive method. when set, it turns soft failure to error return 2017-05-07 16:45:27 +00:00
hyunghwan.chung
f45cde7ba7 redefined Integer<<timesRepeat: 2017-05-07 14:45:27 +00:00
hyunghwan.chung
8f00605804 fixed minor issues in dealing with poll() 2017-05-07 14:32:38 +00:00
hyunghwan.chung
f4a9a9abd8 added more code to support poll() 2017-05-07 12:43:52 +00:00
hyunghwan.chung
0a804402cd added partial code to support poll() 2017-05-07 10:23:21 +00:00
hyunghwan.chung
b93bfc9ec6 added header file checks for io multiplexer and dynamic linker in configure.ac 2017-05-07 08:58:34 +00:00
hyunghwan.chung
63519c1ca3 introduced a new class modifier #immutable to indicate that an instantiated object cannot be modified using basicAt:put: 2017-05-07 05:18:21 +00:00
hyunghwan.chung
1dff630fdd changed how to calculate the mid point in a binary search loop 2017-05-04 05:22:45 +00:00
hyunghwan.chung
68a7118fb2 finished handling of #limited and #final class modifiers 2017-05-01 12:54:41 +00:00
hyunghwan.chung
c4d0b804ef fixed strneq to STREQ in libltdl/loaders/dyld.c 2017-04-30 05:18:09 +00:00
hyunghwan.chung
275f5810cc changed memxxx() macros to use HAVE___BUILTIN_MEMXXX autoconf variables.
started adding the #final modifier for class definition
2017-04-30 05:07:08 +00:00
hyunghwan.chung
2a6206cc80 changed to use AC_LINK_IFELSE() when checking for some __builtin_memxxx functions.
started adding the #limited modifier for class definition
2017-04-30 04:50:33 +00:00
hyunghwan.chung
e2a7646b75 added strftime %z check into configure.ac 2017-04-28 23:25:21 +00:00
hyunghwan.chung
3a072e9d7c changed to use %Z with strftime on solaris 2017-04-28 14:57:00 +00:00
hyunghwan.chung
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
2017-04-28 14:45:13 +00:00
hyunghwan.chung
bce77eda6c added --enable-mod-x11 and --enable-mod-ffi to configure 2017-04-28 04:03:52 +00:00
hyunghwan.chung
9ee7d9e110 touched up raw memory access primitives 2017-04-27 15:40:04 +00:00
hyunghwan.chung
b0a3b4aef7 fixed CompiledMethod>>preambleCode 2017-04-26 16:01:56 +00:00
hyunghwan.chung
be57cffbe6 added MOO_METHOD_PREAMBLE_FLAG_DUAL and set it on in a method preamble for a dual method 2017-04-26 15:44:57 +00:00
hyunghwan.chung
6fe65f66fc implemented until and do..until loop 2017-04-26 15:31:07 +00:00
hyunghwan.chung
04864659a8 added the #dual modifier to method definition. a method defined with #dual is registered in both the instance side and the class side. 2017-04-26 03:09:55 +00:00
hyunghwan.chung
8298bad3e0 added moo_process_t.perr and Processor>>primError to capture the last error set by a primitive function 2017-04-25 15:20:58 +00:00
hyunghwan.chung
d3c9a33c30 enhanced the compiler to set RDONLY on the array member elements in the RDONLY context 2017-04-24 16:37:57 +00:00
hyunghwan.chung
08e54cb524 enhanced the compiler to handle default initial values for class instance variables 2017-04-24 14:32:21 +00:00
hyunghwan.chung
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
2017-04-24 09:20:27 +00:00
hyunghwan.chung
5bf8d20a93 enhanced the compiler to handle default initial values for instance variables and class variables 2017-04-24 04:26:03 +00:00
hyunghwan.chung
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
2017-04-19 16:46:44 +00:00
hyunghwan.chung
a768bd8803 added experimental code to handle xcb window resizing 2017-04-08 14:11:01 +00:00
hyunghwan.chung
536a66fbbf enhanced the check on the nullified io semaphore slot 2017-04-08 07:33:06 +00:00
hyunghwan.chung
89c0a406f3 fixed a bug of not updating the system multiplexer when moving an IO semphoare object 2017-04-08 07:23:31 +00:00
hyunghwan.chung
88b2a0787f more xcb implementation code 2017-04-07 15:50:05 +00:00
hyunghwan.chung
db3cdd057d added X11.moo 2017-04-05 16:48:20 +00:00
hyunghwan.chung
b93b17c42b wrote more xcb code 2017-04-05 16:48:03 +00:00
hyunghwan.chung
8bdab5520a fixed a macro definition for os2 2017-04-03 14:53:16 +00:00
hyunghwan.chung
46e29918f3 added error mappings for os2 2017-04-03 14:51:07 +00:00
hyunghwan.chung
08f01329ab added MOO_EMSGRCV.
added System putUintX()/putIntX() and SmallPoitner putUintX()/putIntX()
2017-04-03 13:24:18 +00:00
hyunghwan.chung
b7a8348de3 added System _malloc/_calloc/_free and SmallPointer free 2017-04-03 05:43:50 +00:00
hyunghwan.chung
cee4a01be0 refactored exec.c a bit 2017-04-02 17:13:04 +00:00
hyunghwan.chung
4f9767422b added raw memory access primitive functions to SmallPointer 2017-04-02 17:08:03 +00:00
hyunghwan.chung
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
2017-04-02 13:13:33 +00:00
hyunghwan.chung
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
2017-04-01 06:54:27 +00:00
hyunghwan.chung
aeb02213b4 changed moo_getpfnum().
added argument count checks when processing primitive method pragmas
2017-04-01 04:58:02 +00:00
hyunghwan.chung
447670aba8 implemented more prechecks including the existence of the primitive function handler and the number of supported arguments when compiling primitive method defintions 2017-03-31 14:21:22 +00:00
hyunghwan.chung
0f84a115ae added moo_pfbase_t and changed some functions to return moo_pfbase_t* instead of moo_pfimpl_t
touched up some modules
2017-03-30 14:59:55 +00:00
hyunghwan.chung
9748410354 Added more xcb code 2017-03-26 17:15:25 +00:00
hyunghwan.chung
da04686176 fixed a bug in handling io semaphores when no process is runnable 2017-03-25 05:16:18 +00:00
hyunghwan.chung
df1619bf7d added more experimental xcb code 2017-03-24 18:09:34 +00:00
hyunghwan.chung
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
2017-03-23 16:14:22 +00:00
hyunghwan.chung
65722cf89b changed System to be a class instead of an instance of a system dictionary 2017-03-22 16:55:41 +00:00
hyunghwan.chung
46ba3bb3f5 added respondsTo: and perform:with:
fixed a bug in Dictionary>>__remove_at:
added gc callback to external modules
2017-03-19 14:18:37 +00:00
hyunghwan.chung
6a2add620b fixed two minor bugs in main.c 2017-03-09 13:39:59 +00:00
hyunghwan.chung
3bfffe09d9 removed the association literal notation 2017-03-09 07:26:43 +00:00
hyunghwan.chung
8bf134e8e3 refactored compiler code abit 2017-03-08 14:48:12 +00:00
hyunghwan.chung
308318b615 changed to accept identifer instead of symbols in pooldic definition 2017-03-08 13:53:41 +00:00
hyunghwan.chung
1ebfe8d5e9 added a simple LinkedList 2017-03-04 05:48:23 +00:00
hyunghwan.chung
90f46cc1fe simplified the event handling thread implementation by letting only 1 thread waiting for events 2017-02-22 09:48:58 +00:00
hyunghwan.chung
513ed296a0 enhanced the event handling code further 2017-02-21 19:51:10 +00:00
hyunghwan.chung
52d6867944 wrote experimental code to handle events efficiently and asynchronously 2017-02-21 19:20:27 +00:00
hyunghwan.chung
b45d896d9f renamed the #native method modifier to #primitive for consistency
improved the method modifier processing logic in the compiler
2017-02-20 04:45:23 +00:00
hyunghwan.chung
6a7cbc8dcb finished the native method handling code in the compiler 2017-02-19 17:33:53 +00:00
hyunghwan.chung
8442968f9c fixed a tokenization bug in getting a empty string literal.
allowed a zero-length symbol to be created
2017-02-19 15:45:51 +00:00
hyunghwan.chung
93e776a9d8 wrote some incomplete code to support native method definition - method(#native) ... 2017-02-18 15:00:45 +00:00
hyunghwan.chung
607e6c8502 experimenting with event driven mechanism 2017-02-18 13:31:47 +00:00
hyunghwan.chung
be677dd53a added partial experimental code for io event handling 2017-02-15 11:57:24 +00:00
hyunghwan.chung
bc5ab97ccf added the main program to handle SIGINT 2017-02-14 14:00:14 +00:00
hyunghwan.chung
f89d809cdc added moo_genpfmethods() and moo_findpfimpl() for convenience of writing primitive modules 2017-02-14 10:25:26 +00:00
hyunghwan.chung
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
2017-02-14 08:29:30 +00:00
hyunghwan.chung
d7cb283e44 added a few useful macros 2017-02-13 13:40:35 +00:00
hyunghwan.chung
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
2017-02-13 13:25:42 +00:00
hyunghwan.chung
ff122bdcc8 removed the accidentally added -lxcb from lib/Makefile.am 2017-02-12 19:03:08 +00:00
hyunghwan.chung
4c13989947 enabled the compiler to support a class name as a namespace.
started adding code for event-driven IO handling
2017-02-12 18:59:03 +00:00
hyunghwan.chung
2c8eb87408 refactored moo_execute() by taking process switcher out to a separate inline function 2017-02-11 05:48:30 +00:00
hyunghwan.chung
7384777b59 introduced vm_getttime, vm_sleep, vm_startup, vm_cleanup callbacks 2017-02-10 09:06:53 +00:00
hyunghwan.chung
b1c28d03d7 changed VM to emulate 'Dictionary new: ..' for MAKE_DICTIONARY
changed VM to emulate 'dic put_assoc: assoc' for POP_INTO_DICTIONARY
2017-02-10 07:38:29 +00:00
hyunghwan.chung
46f3e8635e updated lib/Makefile.am to use ENABLE_LIBLTDL 2017-02-09 16:30:28 +00:00
hyunghwan.chung
0178693f77 added --enable-libltdl to configure 2017-02-09 16:26:44 +00:00
hyunghwan.chung
c613b6955d fixed a segfault bug when the source file cannot be opened 2017-02-09 15:56:51 +00:00
hyunghwan.chung
2a40be7742 updated the compiler to fix the jump instruction positions for break and continue upon instruction eliminations 2017-02-09 10:22:44 +00:00
hyunghwan.chung
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
2017-02-09 08:05:14 +00:00
hyunghwan.chung
2101bb38b4 renamed __assocPut: to __put_assoc: 2017-02-08 13:14:29 +00:00
hyunghwan.chung
a05793a66d rewrote a few methods to use if/while instead of ifTrue:/whileTrue: in Collect.moo 2017-02-07 18:09:07 +00:00
hyunghwan.chung
5c07a48c5a wrote code to handle dictionary expression and association expression notation 2017-02-07 17:40:34 +00:00
hyunghwan.chung
62eb6db83d in progress of fixing a bug in instruction elimination 2017-02-06 17:53:33 +00:00
hyunghwan.chung
60c38a1ecb added make_association, pop_into_association_key, pop_into_association_value byte codes to support assocation expressions 2017-02-05 15:05:25 +00:00
hyunghwan.chung
eb83c8d83a started the first step to implement array expression support enclosed in #{ }.
added 2 new byte codes - MAKE_ARRAY, POP_INTO_ARRAY for implementation
2017-02-05 13:54:52 +00:00
hyunghwan.chung
98b6dd1118 enhanced the dynamic library loader a bit 2017-02-04 05:30:15 +00:00
hyunghwan.chung
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
2017-02-03 06:28:12 +00:00
hyunghwan.chung
ea6d48eb0e improved the #include handling to remember the file loaded and use it when loading an includee file 2017-02-02 12:45:15 +00:00
hyunghwan.chung
5c755d68f5 rewrote whileTrue:, whileFalse:, and similar methods for BlockContext in an imperative style 2017-02-02 04:46:29 +00:00
hyunghwan.chung
07d8d0ea83 implemented simple optimization in compiling an if expression 2017-01-31 16:14:11 +00:00
hyunghwan.chung
22013650bb added the jump_backward_if_true instruction.
added more do-while handling code
2017-01-30 16:48:42 +00:00
hyunghwan.chung
341966e373 added a little code for elimination of unneeded code generated 2017-01-29 07:29:58 +00:00
hyunghwan.chung
03ddf6b68d added some code to compile the break statement 2017-01-29 07:14:36 +00:00
hyunghwan.chung
10ca940d72 added small amount of code to handle break & continue 2017-01-27 15:25:46 +00:00
hyunghwan.chung
b7a19a3b14 implemented the while expression handling. break and continue yet to be implemented 2017-01-25 13:57:14 +00:00
hyunghwan.chung
6209b13410 added the local return byte code - BCODE_LOCAL_RETURN -> it returns to the origin of the active context 2017-01-22 18:01:26 +00:00
hyunghwan.chung
e80b2bc572 enhanced the compiler to store some jump positions in a dynamical data structure when parsing the if expresson 2017-01-20 19:19:28 +00:00
hyunghwan.chung
5c6a5f4baf deleted unneeded files 2017-01-19 17:33:27 +00:00
hyunghwan.chung
4a0cefacc3 added a new libltdl m4 file 2017-01-19 17:29:03 +00:00
hyunghwan.chung
c19674ce13 added/deleted new/unneeded files 2017-01-19 17:18:30 +00:00
hyunghwan.chung
002aa9a3f1 changed the compiler to emit PUSH_NIL when the braced block is empty for if 2017-01-19 17:12:16 +00:00
hyunghwan.chung
40ba50fc53 added primitive code to compile the 'if' expression 2017-01-18 17:17:05 +00:00
hyunghwan.chung
4a4d40dea1 enclosed a dyncall related line inside USE_DYNCALL 2017-01-16 14:46:07 +00:00
hyunghwan.chung
bc83b95acb added some argument checks into ffi
added more string manipulation functiions
2017-01-16 14:42:39 +00:00
hyunghwan.chung
70f9976af3 added moo_duputobcharswithheadroom(), moo_dupbtoucharswithheadroom()
added moo_inttoooi() and made public moo_inttooow()
enhanced the ffi module a bit more
2017-01-15 17:53:37 +00:00
hyunghwan.chung
79198df35b added MOO_OBJ_GET_XXX_SLOT() macros 2017-01-12 17:48:04 +00:00
hyunghwan.chung
750f529201 added more string duplication and conversion functions 2017-01-12 16:33:26 +00:00
hyunghwan.chung
ec3285da57 added more character conversion functions 2017-01-12 10:06:43 +00:00
hyunghwan.chung
d130ec02ec added more code to ffi 2017-01-11 15:33:03 +00:00
hyunghwan.chung
f23486468d removed unnecesary code from the ffi module 2017-01-10 14:34:54 +00:00
hyunghwan.chung
808586ca00 added the dyncall library detection into configure.ac 2017-01-10 14:27:31 +00:00
hyunghwan.chung
1612143499 added MOO_IN_SMPTR_RANGE(), MOO_SMPTR_TO_OOP(), MOO_OOP_TO_SMPTR().
refactored ffi a bit more
2017-01-10 13:56:19 +00:00
hyunghwan.chung
faf6ca28e5 added MOO_VMPRIM_OPENDL_PFMOD.
started refactoring ffi handling code
2017-01-10 10:50:26 +00:00
hyunghwan.chung
95885e4dec fixed some wrong code 2017-01-09 14:52:15 +00:00
hyunghwan.chung
cd79383202 simple error handling in write handler 2017-01-09 13:48:33 +00:00
hyunghwan.chung
65f2f862f8 started taking ffi out of the main vm, putting it to a separate module 2017-01-09 13:41:11 +00:00
hyunghwan.chung
2528dcdbe5 changed the compiler to allow assignment to an argument in a method 2017-01-09 13:20:46 +00:00
hyunghwan.chung
7460ce819c renamed *.st files to *.moo 2017-01-09 12:52:37 +00:00
hyunghwan.chung
68a455e128 fixed some build file issues 2017-01-09 12:16:51 +00:00
hyunghwan.chung
b2fb361df4 renamed stix to moo 2017-01-09 10:25:22 +00:00