# New Ticket Created by JÃrgen BÃmmels # Please include the string: [perl #27983] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org:80/rt3/Ticket/Display.html?id=27983 >
Hi, over a year ago the cache element was removed from the PMC-struct. For compatibility a macro was introduced: #define cache obj.u It allowed old code to compile in a clean way, but it prevents the use of a local variable named cache in any file that includes pobj.h This patch removes this #define cache hack and uses the accessor-macros PMC_*_val instead. Ok to commit? bÃ
Index: include/parrot/pobj.h =================================================================== RCS file: /cvs/public/parrot/include/parrot/pobj.h,v retrieving revision 1.38 diff -u -r1.38 pobj.h --- include/parrot/pobj.h 19 Mar 2004 04:08:22 -0000 1.38 +++ include/parrot/pobj.h 26 Mar 2004 17:23:54 -0000 @@ -110,10 +110,6 @@ INTVAL language; }; - /* cache.* is intended to just be *shortcuts* to*/ - /* commonly-accessed data, *not* pointers to */ - /* completely different data. That's why it's */ - /* referred to as a "cache". */ /* put data into the PMC_EXT structure */ #define PMC_DATA_IN_EXT 1 @@ -172,7 +168,6 @@ #define PMC_union(pmc) (pmc)->obj.u /* macro for accessing union data */ -#define cache obj.u #define next_for_GC pmc_ext->_next_for_GC #define metadata pmc_ext->_metadata #define synchronize pmc_ext->_synchronize Index: io/io.c =================================================================== RCS file: /cvs/public/parrot/io/io.c,v retrieving revision 1.83 diff -u -r1.83 io.c --- io/io.c 4 Mar 2004 11:15:02 -0000 1.83 +++ io/io.c 26 Mar 2004 17:23:55 -0000 @@ -659,7 +659,7 @@ INTVAL PIO_peek(theINTERP, PMC *pmc, void *buffer) { - ParrotIOLayer *l = pmc->cache.struct_val; + ParrotIOLayer *l = PMC_struct_val(pmc); ParrotIO *io = PMC_data(pmc); if(!io) return -1; Index: jit/i386/jit_emit.h =================================================================== RCS file: /cvs/public/parrot/jit/i386/jit_emit.h,v retrieving revision 1.102 diff -u -r1.102 jit_emit.h --- jit/i386/jit_emit.h 3 Mar 2004 10:12:56 -0000 1.102 +++ jit/i386/jit_emit.h 26 Mar 2004 17:24:01 -0000 @@ -3007,7 +3007,7 @@ emitm_movl_m_r(pc, emit_EAX, emit_EBP, 0, 1, 12); /* call the thing in struct_val, i.e. offset 12 - call *(12)%eax */ emitm_callm(pc, emit_EAX, emit_None, emit_None, - offsetof(struct PMC, cache.struct_val)); + offsetof(struct PMC, obj.u._ptrs._struct_val)); /* * TODO * if we have strings in the signature, then we are leaking memory Index: src/debug.c =================================================================== RCS file: /cvs/public/parrot/src/debug.c,v retrieving revision 1.125 diff -u -r1.125 debug.c --- src/debug.c 24 Mar 2004 17:41:31 -0000 1.125 +++ src/debug.c 26 Mar 2004 17:24:02 -0000 @@ -1534,13 +1534,13 @@ break; case KEY_integer_FLAG: Parrot_snprintf(interpreter, buf, sizeof(buf), - INTVAL_FMT, k->cache.int_val); + INTVAL_FMT, PMC_int_val(k)); strcpy(&dest[size], buf); size += strlen(buf); break; case KEY_number_FLAG: Parrot_snprintf(interpreter, buf, sizeof(buf), - FLOATVAL_FMT, k->cache.num_val); + FLOATVAL_FMT, PMC_num_val(k)); strcpy(&dest[size], buf); size += strlen(buf); break; @@ -1548,34 +1548,34 @@ dest[size++] = '"'; { char *temp = string_to_cstring(interpreter, - k->cache.string_val); + PMC_str_val(k)); strcpy(&dest[size], temp); string_cstring_free(temp); } - size += string_length(k->cache.string_val); + size += string_length(PMC_str_val(k)); dest[size++] = '"'; break; case KEY_integer_FLAG|KEY_register_FLAG: Parrot_snprintf(interpreter, buf, sizeof(buf), - "I" INTVAL_FMT, k->cache.int_val); + "I" INTVAL_FMT, PMC_int_val(k)); strcpy(&dest[size], buf); size += strlen(buf); break; case KEY_number_FLAG|KEY_register_FLAG: Parrot_snprintf(interpreter, buf, sizeof(buf), - "N" INTVAL_FMT, k->cache.int_val); + "N" INTVAL_FMT, PMC_int_val(k)); strcpy(&dest[size], buf); size += strlen(buf); break; case KEY_string_FLAG|KEY_register_FLAG: Parrot_snprintf(interpreter, buf, sizeof(buf), - "S" INTVAL_FMT, k->cache.int_val); + "S" INTVAL_FMT, PMC_int_val(k)); strcpy(&dest[size], buf); size += strlen(buf); break; case KEY_pmc_FLAG|KEY_register_FLAG: Parrot_snprintf(interpreter, buf, sizeof(buf), - "P" INTVAL_FMT, k->cache.int_val); + "P" INTVAL_FMT, PMC_int_val(k)); strcpy(&dest[size], buf); size += strlen(buf); break; @@ -2049,7 +2049,7 @@ buf = Parrot_sprintf_c(interpreter, "%s%s", command, end); code = VTABLE_invoke(interpreter, compiler, buf); - return code->cache.struct_val; + return PMC_struct_val(code); } /* Index: src/dynext.c =================================================================== RCS file: /cvs/public/parrot/src/dynext.c,v retrieving revision 1.19 diff -u -r1.19 dynext.c --- src/dynext.c 7 Feb 2004 16:44:30 -0000 1.19 +++ src/dynext.c 26 Mar 2004 17:24:02 -0000 @@ -259,7 +259,7 @@ * but currently only ops files have struct_val set */ type = const_string(interpreter, - lib_pmc->cache.struct_val ? "Ops" : "PMC"); + PMC_struct_val(lib_pmc) ? "Ops" : "PMC"); } /* * call init, if it exists Index: src/exceptions.c =================================================================== RCS file: /cvs/public/parrot/src/exceptions.c,v retrieving revision 1.51 diff -u -r1.51 exceptions.c --- src/exceptions.c 21 Feb 2004 11:23:12 -0000 1.51 +++ src/exceptions.c 26 Mar 2004 17:24:02 -0000 @@ -268,7 +268,7 @@ { PMC *handler = pmc_new(interpreter, enum_class_Exception_Handler); PObj_get_FLAGS(handler) |= PObj_private0_FLAG; - handler->cache.struct_val = jb; + PMC_struct_val(handler) = jb; return handler; } @@ -328,11 +328,11 @@ REG_PMC(5) = exception; if (PObj_get_FLAGS(handler) & PObj_private0_FLAG) { /* its a C exception handler */ - Parrot_exception *jb = (Parrot_exception *) handler->cache.struct_val; + Parrot_exception *jb = (Parrot_exception *) PMC_struct_val(handler); longjmp(jb->destination, 1); } /* return the address of the handler */ - return handler->cache.struct_val; + return PMC_struct_val(handler); } /* @@ -360,7 +360,7 @@ /* put exception object in P5 */ REG_PMC(5) = exception; /* return the address of the handler */ - return handler->cache.struct_val; + return PMC_struct_val(handler); } /* @@ -390,7 +390,7 @@ /* * if there was no user handler, interpreter is already shutdown */ - the_exception->resume = handler->cache.struct_val; + the_exception->resume = PMC_struct_val(handler); the_exception->error = VTABLE_get_integer_keyed_int(interpreter, exception, 1); the_exception->severity = VTABLE_get_integer_keyed_int(interpreter, Index: src/hash.c =================================================================== RCS file: /cvs/public/parrot/src/hash.c,v retrieving revision 1.74 diff -u -r1.74 hash.c --- src/hash.c 7 Mar 2004 19:07:31 -0000 1.74 +++ src/hash.c 26 Mar 2004 17:24:02 -0000 @@ -781,7 +781,7 @@ STRING * hash_get_idx(Interp *interpreter, Hash *hash, PMC * key) { - HashIndex i = key->cache.int_val; + HashIndex i = PMC_int_val(key); BucketIndex bi = (BucketIndex)PMC_data(key); HashBucket *b; /* locate initial */ @@ -805,7 +805,7 @@ } bi = lookupBucketIndex(hash, i); } - key->cache.int_val = i; + PMC_int_val(key) = i; PMC_data(key) = (void *)bi; return b->key; } Index: src/interpreter.c =================================================================== RCS file: /cvs/public/parrot/src/interpreter.c,v retrieving revision 1.286 diff -u -r1.286 interpreter.c --- src/interpreter.c 21 Mar 2004 11:07:32 -0000 1.286 +++ src/interpreter.c 26 Mar 2004 17:24:02 -0000 @@ -328,7 +328,7 @@ internal_exception(1, "Couldn't find init_func for core %d", which); return init_func; } - return (oplib_init_f) D2FPTR(lib->cache.struct_val); + return (oplib_init_f) D2FPTR(PMC_struct_val(lib)); } /* Index: src/jit.c =================================================================== RCS file: /cvs/public/parrot/src/jit.c,v retrieving revision 1.84 diff -u -r1.84 jit.c --- src/jit.c 26 Mar 2004 09:16:19 -0000 1.84 +++ src/jit.c 26 Mar 2004 17:24:02 -0000 @@ -327,7 +327,7 @@ while (key) { UINTVAL flags = PObj_get_FLAGS(key); if (flags & KEY_register_FLAG) { - INTVAL n = key->cache.int_val; + INTVAL n = PMC_int_val(key); if (flags & KEY_integer_FLAG) { typ = 0; if (n < 0) Index: src/key.c =================================================================== RCS file: /cvs/public/parrot/src/key.c,v retrieving revision 1.45 diff -u -r1.45 key.c --- src/key.c 26 Jan 2004 23:16:05 -0000 1.45 +++ src/key.c 26 Mar 2004 17:24:02 -0000 @@ -56,7 +56,7 @@ PMC *key = pmc_new(interpreter, enum_class_Key); PObj_get_FLAGS(key) |= KEY_integer_FLAG; - key->cache.int_val = value; + PMC_int_val(key) = value; return key; } @@ -78,7 +78,7 @@ PMC *key = pmc_new(interpreter, enum_class_Key); PObj_get_FLAGS(key) |= KEY_number_FLAG; - key->cache.num_val = value; + PMC_num_val(key) = value; return key; } @@ -100,7 +100,7 @@ PMC *key = pmc_new(interpreter, enum_class_Key); PObj_get_FLAGS(key) |= KEY_string_FLAG; - key->cache.string_val = value; + PMC_str_val(key) = value; return key; } @@ -141,7 +141,7 @@ PMC *key = pmc_new(interpreter, enum_class_Key); PObj_get_FLAGS(key) |= KEY_pmc_FLAG; - key->cache.pmc_val = value; + PMC_pmc_val(key) = value; return key; } @@ -162,7 +162,7 @@ { PObj_get_FLAGS(key) &= ~KEY_type_FLAGS; PObj_get_FLAGS(key) |= KEY_integer_FLAG; - key->cache.int_val = value; + PMC_int_val(key) = value; return; } @@ -185,7 +185,7 @@ { PObj_get_FLAGS(key) &= ~KEY_type_FLAGS; PObj_get_FLAGS(key) |= KEY_register_FLAG | flag; - key->cache.int_val = value; + PMC_int_val(key) = value; return; } @@ -206,7 +206,7 @@ { PObj_get_FLAGS(key) &= ~KEY_type_FLAGS; PObj_get_FLAGS(key) |= KEY_number_FLAG; - key->cache.num_val = value; + PMC_num_val(key) = value; return; } @@ -227,7 +227,7 @@ { PObj_get_FLAGS(key) &= ~KEY_type_FLAGS; PObj_get_FLAGS(key) |= KEY_string_FLAG; - key->cache.string_val = value; + PMC_str_val(key) = value; return; } @@ -248,7 +248,7 @@ { PObj_get_FLAGS(key) &= ~KEY_type_FLAGS; PObj_get_FLAGS(key) |= KEY_pmc_FLAG; - key->cache.pmc_val = value; + PMC_pmc_val(key) = value; return; } @@ -286,14 +286,13 @@ switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) { case KEY_integer_FLAG: - return key->cache.int_val; + return PMC_int_val(key); case KEY_integer_FLAG | KEY_register_FLAG: - return interpreter->int_reg.registers[key->cache.int_val]; + return interpreter->int_reg.registers[PMC_int_val(key)]; case KEY_pmc_FLAG: - return VTABLE_get_integer(interpreter, - key->cache.pmc_val); + return VTABLE_get_integer(interpreter, PMC_pmc_val(key)); case KEY_pmc_FLAG | KEY_register_FLAG: - reg = interpreter->pmc_reg.registers[key->cache.int_val]; + reg = interpreter->pmc_reg.registers[PMC_int_val(key)]; return VTABLE_get_integer(interpreter, reg); default: internal_exception(INVALID_OPERATION, "Key not an integer!\n"); @@ -317,14 +316,13 @@ switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) { case KEY_number_FLAG: - return key->cache.num_val; + return PMC_num_val(key); case KEY_number_FLAG | KEY_register_FLAG: - return interpreter->num_reg.registers[key->cache.int_val]; + return interpreter->num_reg.registers[PMC_int_val(key)]; case KEY_pmc_FLAG: - return VTABLE_get_number(interpreter, - key->cache.pmc_val); + return VTABLE_get_number(interpreter,PMC_pmc_val(key)); case KEY_pmc_FLAG | KEY_register_FLAG: - reg = interpreter->pmc_reg.registers[key->cache.int_val]; + reg = interpreter->pmc_reg.registers[PMC_int_val(key)]; return VTABLE_get_number(interpreter, reg); default: internal_exception(INVALID_OPERATION, "Key not a number!\n"); @@ -348,14 +346,13 @@ switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) { case KEY_string_FLAG: - return key->cache.string_val; + return PMC_str_val(key); case KEY_string_FLAG | KEY_register_FLAG: - return interpreter->string_reg.registers[key->cache.int_val]; + return interpreter->string_reg.registers[PMC_int_val(key)]; case KEY_pmc_FLAG: - return VTABLE_get_string(interpreter, - key->cache.pmc_val); + return VTABLE_get_string(interpreter, PMC_pmc_val(key)); case KEY_pmc_FLAG | KEY_register_FLAG: - reg = interpreter->pmc_reg.registers[key->cache.int_val]; + reg = interpreter->pmc_reg.registers[PMC_int_val(key)]; return VTABLE_get_string(interpreter, reg); default: internal_exception(INVALID_OPERATION, "Key not a string!\n"); @@ -380,9 +377,9 @@ { switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) { case KEY_pmc_FLAG: - return key->cache.pmc_val; + return PMC_pmc_val(key); case KEY_pmc_FLAG | KEY_register_FLAG: - return interpreter->pmc_reg.registers[key->cache.int_val]; + return interpreter->pmc_reg.registers[PMC_int_val(key)]; default: internal_exception(INVALID_OPERATION, "Key not a PMC!\n"); return 0; @@ -453,7 +450,7 @@ pobject_lives(interpreter, (PObj *) key); if ( ((PObj_get_FLAGS(key) & KEY_type_FLAGS) == KEY_string_FLAG) || ((PObj_get_FLAGS(key) & KEY_type_FLAGS) == KEY_pmc_FLAG) ) - pobject_lives(interpreter, (PObj *)key->cache.string_val); + pobject_lives(interpreter, (PObj *) PMC_str_val(key)); if ((PObj_get_FLAGS(key) & KEY_type_FLAGS) == KEY_integer_FLAG) return; Index: src/method_util.c =================================================================== RCS file: /cvs/public/parrot/src/method_util.c,v retrieving revision 1.21 diff -u -r1.21 method_util.c --- src/method_util.c 21 Feb 2004 16:33:48 -0000 1.21 +++ src/method_util.c 26 Mar 2004 17:24:02 -0000 @@ -39,7 +39,7 @@ Parrot_new_csub(struct Parrot_Interp *interp, Parrot_csub_t func) { PMC *ret = pmc_new(interp, enum_class_CSub); - ret->cache.struct_val = (DPOINTER *)F2DPTR(func); + PMC_struct_val(ret) = (DPOINTER *)F2DPTR(func); return ret; } Index: src/objects.c =================================================================== RCS file: /cvs/public/parrot/src/objects.c,v retrieving revision 1.67 diff -u -r1.67 objects.c --- src/objects.c 26 Mar 2004 12:10:50 -0000 1.67 +++ src/objects.c 26 Mar 2004 17:24:03 -0000 @@ -210,7 +210,7 @@ set_attrib_num(class_slots, PCD_ATTRIBUTES, attr_offset_hash); set_attrib_num(class_slots, PCD_ATTRIB_OFFS, class_offset_hash); /* And note the totals */ - class->cache.int_val = cur_offset - POD_FIRST_ATTRIB; + PMC_int_val(class) = cur_offset - POD_FIRST_ATTRIB; return; } @@ -253,7 +253,7 @@ set_attrib_array_size(child_class_array, PCD_MAX); /* We have the same number of attributes as our parent */ - child_class->cache.int_val = base_class->cache.int_val; + PMC_int_val(child_class) = PMC_int_val(base_class); /* Our parent class array has a single member in it */ parents = pmc_new(interpreter, enum_class_Array); @@ -503,7 +503,7 @@ object->vtable = PMC_struct_val(vtable_pmc); /* Grab the attribute count from the parent */ - attrib_count = class->cache.int_val; + attrib_count = PMC_int_val(class); class_array = PMC_data(class); class_name = get_attrib_num(class_array, PCD_CLASS_NAME); @@ -1034,11 +1034,11 @@ * while there are already child class attrs */ idx = VTABLE_elements(interpreter, attr_hash); - assert(class->cache.int_val == idx); + assert(PMC_int_val(class) == idx); VTABLE_set_integer_keyed_str(interpreter, attr_hash, full_attr_name, idx); assert(idx + 1 == VTABLE_elements(interpreter, attr_hash)); - class->cache.int_val = idx + 1; + PMC_int_val(class) = idx + 1; return idx; } Index: src/packfile.c =================================================================== RCS file: /cvs/public/parrot/src/packfile.c,v retrieving revision 1.157 diff -u -r1.157 packfile.c --- src/packfile.c 21 Mar 2004 12:35:37 -0000 1.157 +++ src/packfile.c 26 Mar 2004 17:24:04 -0000 @@ -445,10 +445,10 @@ case enum_class_Coroutine: if (PObj_get_FLAGS(sub_pmc) & PObj_private1_FLAG) continue; - rel = (INTVAL) sub_pmc->cache.struct_val * + rel = (INTVAL) PMC_struct_val(sub_pmc) * sizeof(opcode_t); rel += (INTVAL) self->cur_cs->base.data; - sub_pmc->cache.struct_val = (void*) rel; + PMC_struct_val(sub_pmc) = (void*) rel; sub = (struct Parrot_Sub*) PMC_sub(sub_pmc); rel = (INTVAL) sub->end * sizeof(opcode_t); rel += (INTVAL) self->cur_cs->base.data; @@ -2909,7 +2909,7 @@ /* both start and end are relative, so are small - * cast for 64-bit compilers where sizeof(int)=4, sizeof(long)=8 */ - sub_pmc->cache.struct_val = (void *)(long) start; + PMC_struct_val(sub_pmc) = (void *)(long) start; sub = PMC_sub(sub_pmc); sub->end = (opcode_t*)(long)end; sub->packed = pmcs; @@ -3090,7 +3090,7 @@ fprintf(stderr, "packfile.c: VTABLE: compiler->invoke '%s'\n", filename); #endif code = VTABLE_invoke(interpreter, compiler, file); - pf = code->cache.struct_val; + pf = PMC_struct_val(code); if (pf) { PackFile_add_segment(&interpreter->code->directory, &pf->directory.base); Index: src/packout.c =================================================================== RCS file: /cvs/public/parrot/src/packout.c,v retrieving revision 1.34 diff -u -r1.34 packout.c --- src/packout.c 25 Jan 2004 19:33:27 -0000 1.34 +++ src/packout.c 26 Mar 2004 17:24:04 -0000 @@ -187,11 +187,11 @@ { int i; for (i = 0; i < ct->const_count; i++) - if (type == PFC_STRING && ct->constants[i]->u.string == - key->cache.string_val) + if (type == PFC_STRING + && ct->constants[i]->u.string == PMC_str_val(key)) return i; - else if (type == PFC_NUMBER && ct->constants[i]->u.number == - key->cache.num_val) + else if (type == PFC_NUMBER + && ct->constants[i]->u.number == PMC_num_val(key)) return i; PIO_eprintf(NULL, "find_in_const: couldn't find const for key\n"); Parrot_exit(1); @@ -267,7 +267,7 @@ switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) { case KEY_integer_FLAG: *cursor++ = PARROT_ARG_IC; - *cursor++ = key->cache.int_val; + *cursor++ = PMC_int_val(key); break; case KEY_number_FLAG: *cursor++ = PARROT_ARG_NC; @@ -280,19 +280,19 @@ case KEY_integer_FLAG | KEY_register_FLAG: *cursor++ = PARROT_ARG_I; - *cursor++ = key->cache.int_val; + *cursor++ = PMC_int_val(key); break; case KEY_number_FLAG | KEY_register_FLAG: *cursor++ = PARROT_ARG_N; - *cursor++ = key->cache.int_val; + *cursor++ = PMC_int_val(key); break; case KEY_string_FLAG | KEY_register_FLAG: *cursor++ = PARROT_ARG_S; - *cursor++ = key->cache.int_val; + *cursor++ = PMC_int_val(key); break; case KEY_pmc_FLAG | KEY_register_FLAG: *cursor++ = PARROT_ARG_P; - *cursor++ = key->cache.int_val; + *cursor++ = PMC_int_val(key); break; default: PIO_eprintf(NULL, "PackFile_Constant_pack: " Index: src/sub.c =================================================================== RCS file: /cvs/public/parrot/src/sub.c,v retrieving revision 1.53 diff -u -r1.53 sub.c --- src/sub.c 25 Mar 2004 09:23:01 -0000 1.53 +++ src/sub.c 26 Mar 2004 17:24:05 -0000 @@ -434,7 +434,7 @@ PObj_get_FLAGS(continuation) |= ( PObj_private1_FLAG|PObj_private2_FLAG); } - continuation->cache.struct_val = address; + PMC_struct_val(continuation) = address; return continuation; } @@ -462,9 +462,9 @@ { /* if scope_index is negative we count out from current pad */ scope_index = scope_index < 0 ? - pad->cache.int_val + scope_index : scope_index; + PMC_int_val(pad) + scope_index : scope_index; - if (scope_index >= pad->cache.int_val || scope_index < 0) { + if (scope_index >= PMC_int_val(pad) || scope_index < 0) { internal_exception(-1, "Pad index out of range"); return NULL; } @@ -540,7 +540,7 @@ INTVAL i, pos = 0; struct Parrot_Lexicals * lex = NULL; - for (i = pad->cache.int_val - 1; i >= 0; i--) { + for (i = PMC_int_val(pad) - 1; i >= 0; i--) { lex = &(((struct Parrot_Lexicals *)PMC_data(pad))[i]); pos = lexicals_get_position(interp, lex, name); if (pos == list_length(interp, lex->names)) @@ -572,11 +572,11 @@ Parrot_block_DOD(interp); pad_pmc = pmc_new(interp, enum_class_Scratchpad); if (base && depth < 0) { - depth = base->cache.int_val + depth + 1; + depth = PMC_int_val(base) + depth + 1; } if ((depth < 0) - || (base && depth > base->cache.int_val) + || (base && depth > PMC_int_val(base)) || (!base && depth != 0)) { Parrot_unblock_DOD(interp); internal_exception(-1, "-scratch_pad: too deep\n"); @@ -594,7 +594,7 @@ sizeof(struct Parrot_Lexicals)); } - pad_pmc->cache.int_val = depth + 1; + PMC_int_val(pad_pmc) = depth + 1; /* in case call to list_new triggers gc */ ((struct Parrot_Lexicals *)PMC_data(pad_pmc))[depth].values = NULL; Index: src/thread.c =================================================================== RCS file: /cvs/public/parrot/src/thread.c,v retrieving revision 1.22 diff -u -r1.22 thread.c --- src/thread.c 17 Mar 2004 22:25:12 -0000 1.22 +++ src/thread.c 26 Mar 2004 17:24:05 -0000 @@ -44,7 +44,7 @@ PMC *ret_val = NULL; Parrot_Interp interpreter = PMC_data(self); - runops(interpreter, (opcode_t *)self->cache.struct_val - + runops(interpreter, (opcode_t *)PMC_struct_val(self) - (opcode_t *)interpreter->code->byte_code); /* * thread is finito @@ -156,7 +156,7 @@ * TODO thread pools */ - dest_interp->cache.struct_val = sub->cache.struct_val; + PMC_struct_val(dest_interp) = PMC_struct_val(sub); pt_thread_prepare_for_run(interpreter, interp); /* * set regs according to pdd03 Index: src/trace.c =================================================================== RCS file: /cvs/public/parrot/src/trace.c,v retrieving revision 1.51 diff -u -r1.51 trace.c --- src/trace.c 10 Mar 2004 09:31:16 -0000 1.51 +++ src/trace.c 26 Mar 2004 17:24:05 -0000 @@ -100,13 +100,13 @@ case 0: break; case KEY_integer_FLAG: - PIO_eprintf(interpreter, "%vi", key->cache.int_val); + PIO_eprintf(interpreter, "%vi", PMC_int_val(key)); break; case KEY_number_FLAG: - PIO_eprintf(interpreter, "%vg", key->cache.num_val); + PIO_eprintf(interpreter, "%vg", PMC_num_val(key)); break; case KEY_string_FLAG: - s = key->cache.string_val; + s = PMC_str_val(key); /* XXX do it w/o degrading to C string */ escaped = PDB_escape(s->bufstart, s->strlen); PIO_eprintf(interpreter, "\"%s\"", escaped?escaped:"(null)"); @@ -114,24 +114,24 @@ mem_sys_free(escaped); break; case KEY_integer_FLAG|KEY_register_FLAG: - PIO_eprintf(interpreter, "I%vd=%vd", key->cache.int_val, - interpreter->int_reg.registers[key->cache.int_val]); + PIO_eprintf(interpreter, "I%vd=%vd", PMC_int_val(key), + interpreter->int_reg.registers[PMC_int_val(key)]); break; case KEY_number_FLAG|KEY_register_FLAG: - PIO_eprintf(interpreter, "I%vd=%vd", key->cache.int_val, - interpreter->num_reg.registers[key->cache.int_val]); + PIO_eprintf(interpreter, "I%vd=%vd", PMC_int_val(key), + interpreter->num_reg.registers[PMC_int_val(key)]); break; case KEY_string_FLAG|KEY_register_FLAG: - s = interpreter->string_reg.registers[key->cache.int_val]; + s = interpreter->string_reg.registers[PMC_int_val(key)]; escaped = PDB_escape(s->bufstart, s->strlen); - PIO_eprintf(interpreter, "S%vd=\"%s\"", key->cache.int_val, + PIO_eprintf(interpreter, "S%vd=\"%s\"", PMC_int_val(key), escaped ? escaped : "(null"); if (escaped) mem_sys_free(escaped); break; case KEY_pmc_FLAG|KEY_register_FLAG: - PIO_eprintf(interpreter, "P%vd=", key->cache.int_val); - trace_pmc_dump(interpreter, interpreter->pmc_reg.registers[key->cache.int_val]); + PIO_eprintf(interpreter, "P%vd=", PMC_int_val(key)); + trace_pmc_dump(interpreter, interpreter->pmc_reg.registers[PMC_int_val(key)]); break; default: PIO_eprintf(interpreter, "??");