rev 585 - in trunk: . include/prothon src
SVN User <[email protected]> Mon, 07 Jun 2004 23:37:32 -0400
| Newsgroups | gmane.comp.lang.prothon.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: mark
Date: 2004-06-07 23:37:28 -0400 (Mon, 07 Jun 2004)
New Revision: 585
Modified:
trunk/CHANGES.txt
trunk/include/prothon/prothon.h
trunk/src/interp.c
trunk/src/object.c
Log:
**** release ****
Modified: trunk/CHANGES.txt
===================================================================
--- trunk/CHANGES.txt 2004-06-07 13:10:17 UTC (rev 584)
+++ trunk/CHANGES.txt 2004-06-08 03:37:28 UTC (rev 585)
@@ -1,7 +1,7 @@
----- Prothon Release History ----
-Version 0.1.1 - Build 582 - 6/06/04
+Version 0.1.1 - Build 585 - 6/07/04
- Added super keyword
- Integers now have unlimited precision
- Added obj.protos_ list and obj.attrs_ dictionary
Modified: trunk/include/prothon/prothon.h
===================================================================
--- trunk/include/prothon/prothon.h 2004-06-07 13:10:17 UTC (rev 584)
+++ trunk/include/prothon/prothon.h 2004-06-08 03:37:28 UTC (rev 585)
@@ -57,12 +57,12 @@
//**************************** DEBUG DEFINITIONS ******************************
-//#define CMDLINE_FLAGS
-//#define TRACE_PARSER
-//#define DUMP_MODULE_CODE
-//#define TRACE_INTERPRETER
-//#define DUMP_OBJECTS_AT_END
-//#define DEBUG_THREADS
+#define CMDLINE_FLAGS
+#define TRACE_PARSER
+#define DUMP_MODULE_CODE
+#define TRACE_INTERPRETER
+#define DUMP_OBJECTS_AT_END
+#define DEBUG_THREADS
//#define DEBUG_MEM_MGR
//#define PROSIST_DEBUG
Modified: trunk/src/interp.c
===================================================================
--- trunk/src/interp.c 2004-06-07 13:10:17 UTC (rev 584)
+++ trunk/src/interp.c 2004-06-08 03:37:28 UTC (rev 585)
@@ -821,7 +821,9 @@
int i, param;
frame_p switch_frame = NULL, free_frame = NULL, frame = ist->frame;
int have_exstk, exc_try_loc = 0, exc_exc_loc = 0, return_flag = FALSE;
- int exc_final=0, exc_final_return=0, stack_lim = frame->code->max_stack_depth;
+ int exc_final=0, exc_final_return=0;
+ frame_p exc_free_frame = NULL, exc_switch_frame = NULL;
+ int stack_lim = frame->code->max_stack_depth;
obj_p exc_waiting=NULL, return_value = 0;
#ifdef DUMP_MODULE_CODE
@@ -1136,6 +1138,10 @@
case OP_RERAISE:
ist->exception_obj = exc_waiting;
exc_waiting = 0;
+ free_frame = exc_free_frame;
+ switch_frame = exc_switch_frame;
+ exc_free_frame = NULL;
+ exc_switch_frame = NULL;
if (exc_final_return) {
fr_pc = exc_final_return;
fr_sp = 0;
@@ -1610,6 +1616,20 @@
}
return OBJ(NONE);
}
+ if (free_frame && have_exstk) {
+ exc_free_frame = free_frame;
+ exc_switch_frame = switch_frame;
+ free_frame = NULL;
+ switch_frame = NULL;
+ fr_pc = exc_exc_loc;
+ pr_free(clist_pop(fr_exstk));
+ if (clist_len(fr_exstk)) {
+ exception_entry_t* p = (exception_entry_t*)(clist_tos(fr_exstk));
+ exc_final = p->final;
+ exc_try_loc = p->try_loc;
+ exc_exc_loc = p->exc_loc;
+ } else have_exstk = FALSE;
+ }
if (free_frame) {
// free_frame(tmp_frame); XXX
if (!free_frame->do_not_free)
Modified: trunk/src/object.c
===================================================================
--- trunk/src/object.c 2004-06-07 13:10:17 UTC (rev 584)
+++ trunk/src/object.c 2004-06-08 03:37:28 UTC (rev 585)
@@ -832,6 +832,9 @@
i32_t i, j, len;
obj_p proto;
clist_t *pao_list;
+
+ if (obj == obj_proto) return TRUE;
+
rdlock_rtrn(obj) 0;
if ( (!obj->has_attrs && obj->attr_proto.proto == obj_proto) ||