cvsuser 04/03/21 08:18:29
Modified: src objects.c
Log:
classoffset speed up
Revision Changes Path
1.64 +16 -1 parrot/src/objects.c
Index: objects.c
===================================================================
RCS file: /cvs/public/parrot/src/objects.c,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -w -r1.63 -r1.64
--- objects.c 21 Mar 2004 11:07:33 -0000 1.63
+++ objects.c 21 Mar 2004 16:18:29 -0000 1.64
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-$Id: objects.c,v 1.63 2004/03/21 11:07:33 leo Exp $
+$Id: objects.c,v 1.64 2004/03/21 16:18:29 leo Exp $
=head1 NAME
@@ -1085,17 +1085,32 @@
PMC *offset_hash;
PMC *class_pmc;
INTVAL offset;
+ HashBucket *b;
class_pmc = get_attrib_num((SLOTTYPE *)PMC_data(object),
POD_CLASS);
offset_hash = get_attrib_num((SLOTTYPE *)PMC_data(class_pmc),
PCD_ATTRIB_OFFS);
+#if 0
if (VTABLE_exists_keyed_str(interpreter, offset_hash, class)) {
offset = VTABLE_get_integer_keyed_str(interpreter, offset_hash, class);
}
else {
offset = -1;
}
+#else
+ /*
+ * cheat a bit--the offset_hash is an OrderedHash PMC
+ */
+ b = hash_get_bucket(interpreter,
+ (Hash*) PMC_struct_val(offset_hash), class);
+ if (!b)
+ offset = -1;
+ else {
+ offset = VTABLE_get_integer_keyed_int(interpreter, offset_hash,
+ PMC_int_val((PMC*)b->value));
+ }
+#endif
return offset;
}