Commit ae2bf1bc authored by Erick Gallesio's avatar Erick Gallesio

.

parent 1f404705
......@@ -63,7 +63,7 @@
2006-08-04 Erick Gallesio <eg@essi.fr>
* src/lib.c: Deletedthe managemement of the STk_library_path
* src/lib.c: Deleted the managemement of the STk_library_path
variable which was not used anymore
2006-06-20 Erick Gallesio <eg@essi.fr>
......@@ -235,7 +235,7 @@ n
2006-03-22 Erick Gallesio <eg@essi.fr>
* lib/srfi-27.stk (%random-source-current-time): Change
current-time to current-source
current-time to current-second
* lib/STklos.init: some modifications for SLIB
......
......@@ -4,6 +4,27 @@
| NEWS |
+======+
* version 0.80 (2006 10 27)
This is a version with important changes for supporting multi-threading.
* Thread support
* Better error messages
* Added the possibility to compile byte-codes to a C file.
* New optimizations
* More customizable REPL
* New primitives
o read-byte
o write-byte
o printf
o fprintf
o base64-{en|de}code
o current-second
* New implemented SRFIs
o SRFI-18 (Multithreading support)
* Bug fixes
* version 0.72 (2006 01 04)
This is a minor release.
......@@ -35,7 +56,7 @@
o SRFI-70 (Numbers)
* Bug fixes
* version 0.70 (2005 05 27)
* version 0.70 (2005 05 27)
The main changes in this release are: a new back-trace system, a
conform call/cc/dynamic-wind implementation and some performance
......
-*- outline -*-
S T k l o s ( v e r s i o n 0 . 7 2 )
S T k l o s ( v e r s i o n 0 . 8 0 )
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
Erick Gallesio
......
/*
This file was automatically generated on Wed Oct 25 19:42:36 2006 by make-C-boot
This file was automatically generated on Thu Oct 26 15:33:44 2006 by make-C-boot
This is a dump of the image in file /mnt/users/eg/Projects/STklos/lib/boot.img3
***DO NOT EDIT BY HAND***
*/
......
......@@ -21,7 +21,7 @@
*
* Author: Erick Gallesio [eg@kaolin.unice.fr]
* Creation date: 12-May-1993 10:34
* Last file update: 21-Oct-2006 11:00 (eg)
* Last file update: 26-Oct-2006 15:27 (eg)
*/
......
......@@ -21,7 +21,7 @@
*
* Author: Erick Gallesio [eg@unice.fr]
* Creation date: 1-Mar-2000 19:51 (eg)
* Last file update: 25-Oct-2006 19:57 (eg)
* Last file update: 26-Oct-2006 13:20 (eg)
*/
// INLINER values
......@@ -82,7 +82,6 @@ static int debug_level = 0; /* 0 is quiet, 1, 2, ... are more verbose */
# define MY_LONGJMP(jb, val) (longjmp((jb).j, val))
#endif
static Inline sigset_t get_signal_mask(void)
{
sigset_t new, old;
......@@ -265,6 +264,8 @@ vm_thread_t *STk_allocate_vm(int stack_size)
static SCM** checked_globals;
static int checked_globals_len = CHECK_GLOBAL_INIT_SIZE;
static int checked_globals_used = 0;
MUT_DECL(global_lock); /* the lock to access checked_globals */
#define FIRST_BYTE(n) ((n) >> 8)
......@@ -822,8 +823,10 @@ CASE(GLOBAL_REF) {
vm->val = STk_lookup(fetch_const(), vm->env, &ref, TRUE);
/* patch the code for optimize next accesses */
MUT_LOCK(global_lock);
vm->pc[-2] = (vm->pc[-2] == GLOBAL_REF) ? UGLOBAL_REF: PUSH_UGLOBAL_REF;
vm->pc[-1] = add_global(&CDR(ref));
MUT_UNLOCK(global_lock);
NEXT1;
}
......@@ -840,8 +843,10 @@ CASE(GLOBAL_REF_PUSH) {
push(STk_lookup(fetch_const(), vm->env, &ref, TRUE));
/* patch the code for optimize next accesses */
MUT_LOCK(global_lock);
vm->pc[-2] = UGLOBAL_REF_PUSH;
vm->pc[-1] = add_global(&CDR(ref));
MUT_UNLOCK(global_lock);
NEXT1;
}
CASE(UGLOBAL_REF_PUSH) {
......@@ -856,11 +861,14 @@ CASE(PUSH_GREF_INVOKE)
CASE(GREF_INVOKE) {
SCM ref;
vm->val = STk_lookup(fetch_const(), vm->env, &ref, TRUE);
nargs = fetch_next();
/* patch the code for optimize next accesses (pc[-1] is already equal to nargs)*/
MUT_LOCK(global_lock);
vm->pc[-3] = (vm->pc[-3] == GREF_INVOKE)? UGREF_INVOKE : PUSH_UGREF_INVOKE;
vm->pc[-2] = add_global(&CDR(ref));
MUT_UNLOCK(global_lock);
/*and now invoke */
tailp=FALSE; goto FUNCALL;
......@@ -884,9 +892,11 @@ CASE(GREF_TAIL_INVOKE) {
vm->val = STk_lookup(fetch_const(), vm->env, &ref, TRUE);
nargs = fetch_next();
/* patch the code for optimize next accesses (pc[-1] is already equal to nargs)*/
MUT_LOCK(global_lock);
vm->pc[-3] = (vm->pc[-3] == GREF_TAIL_INVOKE) ?
UGREF_TAIL_INVOKE: PUSH_UGREF_TAIL_INV;
vm->pc[-2] = add_global(&CDR(ref));
MUT_UNLOCK(global_lock);
/* and now invoke */
tailp=TRUE; goto FUNCALL;
......@@ -934,8 +944,10 @@ CASE(GLOBAL_SET) {
STk_lookup(fetch_const(), vm->env, &ref, TRUE);
CDR(ref) = vm->val;
/* patch the code for optimize next accesses */
MUT_LOCK(global_lock);
vm->pc[-2] = UGLOBAL_SET;
vm->pc[-1] = add_global(&CDR(ref));
MUT_UNLOCK(global_lock);
NEXT0;
}
CASE(UGLOBAL_SET) { /* Never produced by compiler */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment