And here's the dummy classes/perlhash.pmc patch. Once again, this need not be applied if my upcoming hashtable patch is accepted instead.
Index: classes/perlhash.pmc =================================================================== RCS file: /home/perlcvs/parrot/classes/perlhash.pmc,v retrieving revision 1.16 diff -u -r1.16 perlhash.pmc --- classes/perlhash.pmc 2 Apr 2002 20:32:42 -0000 1.16 +++ classes/perlhash.pmc 14 May 2002 22:38:46 -0000 @@ -23,8 +23,6 @@ } void init (INTVAL size) { - SELF->data = key_new(INTERP); - key_set_size(INTERP,SELF->data,0); } void clone (PMC* dest) { @@ -42,7 +40,6 @@ } void destroy () { - key_destroy(INTERP,SELF->data); } INTVAL get_integer () { @@ -50,7 +47,6 @@ } INTVAL get_integer_keyed (KEY * key) { - KEY_PAIR* kp; INTVAL ix; PMC* value; internal_exception(OUT_OF_BOUNDS, "Hash not implemented yet!\n"); @@ -59,12 +55,9 @@ return 0; } - kp = &key->keys[0]; - ix = kp->cache.int_val; + ix = key->atom.val.int_val; if (ix > SELF->cache.int_val) { - /* XXX I don't think this will work quite yet */ - /* key_set_size(kp,ix); */ internal_exception(OUT_OF_BOUNDS, "Array element out of bounds!\n"); } if (ix < 0) { @@ -80,7 +73,6 @@ } FLOATVAL get_number_keyed (KEY * key) { - KEY_PAIR* kp; INTVAL ix; PMC* value; internal_exception(OUT_OF_BOUNDS, "Hash not implemented yet!\n"); @@ -89,8 +81,7 @@ return 0; } - kp = &key->keys[0]; - ix = kp->cache.int_val; + ix = key->atom.val.int_val; if (ix > SELF->cache.int_val) { /* XXX I don't think this will work quite yet */ @@ -110,7 +101,6 @@ } STRING* get_string_keyed (KEY * key) { - KEY_PAIR* kp; INTVAL ix; PMC* value; internal_exception(OUT_OF_BOUNDS, "Hash not implemented yet!\n"); @@ -119,8 +109,7 @@ return 0; } - kp = &key->keys[0]; - ix = kp->cache.int_val; + ix = key->atom.val.int_val; if (ix > SELF->cache.int_val) { /* XXX I don't think this will work quite yet */ @@ -153,11 +142,9 @@ void set_integer (PMC* value) { INTVAL size = value->vtable->get_integer(INTERP,value); - key_set_size(INTERP,SELF->data,size); } void set_integer_native (INTVAL size) { - key_set_size(INTERP,SELF->data,size); } void set_integer_bigint (BIGINT value) { @@ -165,11 +152,9 @@ void set_integer_same (PMC * value) { INTVAL size = value->cache.int_val; - key_set_size(INTERP,SELF->data,size); } void set_integer_keyed (KEY * key, INTVAL value) { - KEY_PAIR* kp; INTVAL ix; PMC* pmc2; @@ -177,8 +162,7 @@ return; } - kp = &key->keys[0]; - ix = kp->cache.int_val; + ix = key->atom.val.int_val; if (ix > SELF->cache.int_val) { /* XXX I don't think this will work quite yet */ @@ -195,11 +179,9 @@ void set_number (PMC * value) { INTVAL size = (INTVAL)value->cache.num_val; - key_set_size(INTERP,SELF->data,size); } void set_number_native (FLOATVAL size) { - key_set_size(INTERP,SELF->data,(INTVAL)size); } void set_number_bigfloat (BIGFLOAT value) { @@ -207,11 +189,9 @@ void set_number_same (PMC * value) { INTVAL size = value->cache.int_val; - key_set_size(INTERP,SELF->data,size); } void set_number_keyed (KEY * key, FLOATVAL value) { - KEY_PAIR* kp; INTVAL ix; PMC* pmc2; @@ -219,8 +199,7 @@ return; } - kp = &key->keys[0]; - ix = kp->cache.int_val; + ix = key->atom.val.int_val; if (ix > SELF->cache.int_val) { /* XXX I don't think this will work quite yet */ @@ -251,7 +230,6 @@ } void set_string_keyed (KEY * key, STRING * value) { - KEY_PAIR* kp; INTVAL ix; PMC* pmc2; @@ -259,8 +237,7 @@ return; } - kp = &key->keys[0]; - ix = kp->cache.int_val; + ix = key->atom.val.int_val; if (ix > SELF->cache.int_val) { /* XXX I don't think this will work quite yet */