[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freesci-develop] r1592 - in freesci/branches/glutton: . src/engine
From: |
freesci |
Subject: |
[freesci-develop] r1592 - in freesci/branches/glutton: . src/engine |
Date: |
Sun, 11 Mar 2007 00:18:52 +0100 |
Author: skovmanden
Date: 2007-03-11 00:18:45 +0100 (Sun, 11 Mar 2007)
New Revision: 1592
Modified:
freesci/branches/glutton/ChangeLog
freesci/branches/glutton/src/engine/seg_manager.c
Log:
Refactoring work to make the segment manager less
format-dependent. Not finished yet.
Modified: freesci/branches/glutton/ChangeLog
===================================================================
--- freesci/branches/glutton/ChangeLog 2007-01-14 22:21:58 UTC (rev 1591)
+++ freesci/branches/glutton/ChangeLog 2007-03-10 23:18:45 UTC (rev 1592)
@@ -1,3 +1,7 @@
+2007-03-11 Lars Skovlund <address@hidden>
+
+ * src/engine/seg_manager.c: A bit of refactoring work.
+
2006-12-13 Lars Skovlund <address@hidden>
* src/engine/kstring.c (kStrAt): Make the SQ4 detection heuristics
Modified: freesci/branches/glutton/src/engine/seg_manager.c
===================================================================
--- freesci/branches/glutton/src/engine/seg_manager.c 2007-01-14 22:21:58 UTC
(rev 1591)
+++ freesci/branches/glutton/src/engine/seg_manager.c 2007-03-10 23:18:45 UTC
(rev 1592)
@@ -234,10 +234,8 @@
return mem;
}
-int sm_initialise_script(mem_obj_t *mem, struct _state *s, int script_nr)
+static int sm_set_locals_size(mem_obj_t *mem, struct _state *s, int script_nr)
{
- /* allocate the script.buf */
- script_t *scr;
resource_t *script = scir_find_resource(s->resmgr, sci_script,
script_nr, 0);
if (s->version < SCI_VERSION_FTU_NEW_SCRIPT_HEADER) {
mem->data.script.buf_size = script->size +
getUInt16(script->data)*2;
@@ -246,6 +244,14 @@
else {
mem->data.script.buf_size = script->size;
}
+}
+
+int sm_initialise_script(mem_obj_t *mem, struct _state *s, int script_nr)
+{
+ /* allocate the script.buf */
+ script_t *scr;
+
+ sm_set_locals_size(mem, s, script_nr);
mem->data.script.buf = (char*) sci_malloc (mem->data.script.buf_size);
dbg_print( "mem->data.script.buf ", (int) mem->data.script.buf );
if (!mem->data.script.buf) {
@@ -645,6 +651,23 @@
}
};
+int
+sm_hash_segment_data(struct _seg_manager_t* self, int id)
+{
+ int i, len, hash_code = 0x55555555;
+ char *buf;
+
+ if (self->heap[id]->type == MEM_OBJ_LISTS) return 0;
+ if (self->heap[id]->type == MEM_OBJ_NODES) return 0;
+ if (self->heap[id]->type == MEM_OBJ_CLONES) return 0;
+ buf = sm_dereference(self, make_reg(id, 0), &len);
+
+ for (i = 0; i < len; i++)
+ hash_code = (hash_code * 19) + *(buf + i);
+
+ return hash_code;
+}
+
void
sm_set_export_width(struct _seg_manager_t* self, int flag)
{
@@ -837,8 +860,8 @@
}
}
-object_t *
-sm_script_obj_init(seg_manager_t *self, reg_t obj_pos)
+static object_t *
+sm_script_obj_init0(seg_manager_t *self, reg_t obj_pos)
{
mem_obj_t *mobj = self->heap[obj_pos.segment];
script_t *scr;
@@ -912,6 +935,12 @@
return obj;
}
+object_t *
+sm_script_obj_init(seg_manager_t *self, reg_t obj_pos)
+{
+ return sm_script_obj_init0(self, obj_pos);
+}
+
static local_variables_t *
_sm_alloc_locals_segment(seg_manager_t *self, script_t *scr, int count)
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freesci-develop] r1592 - in freesci/branches/glutton: . src/engine,
freesci <=