--- a/String.st Wed Jun 17 06:22:00 2015 +0100
+++ b/String.st Wed Jun 17 06:33:49 2015 +0100
@@ -1835,26 +1835,28 @@
cp = __stringVal(self);
l = __stringSize(self);
- if (!__qIsStringLike(self)) {
+ if (__qClass(self) == String) {
+ cont:
+ h = 2166136261U;
+ while (l >= 4) {
+ l -= 4;
+ h = (h ^ cp[0]) * 16777619;
+ h = (h ^ cp[1]) * 16777619;
+ h = (h ^ cp[2]) * 16777619;
+ h = (h ^ cp[3]) * 16777619;
+ cp += 4;
+ }
+ while (l--) {
+ h = (h ^ *cp++) * 16777619;
+ }
+ // make it a smallInteger
+ h = (h ^ (h >> 30)) & 0x3FFFFFFF;
+ RETURN ( __mkSmallInteger(h));
+ } else {
int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-
cp += n;
- }
- h = 2166136261U;
- while (l >= 4) {
- l -= 4;
- h = (h ^ cp[0]) * 16777619;
- h = (h ^ cp[1]) * 16777619;
- h = (h ^ cp[2]) * 16777619;
- h = (h ^ cp[3]) * 16777619;
- cp += 4;
+ goto cont;
}
- while (l--) {
- h = (h ^ *cp++) * 16777619;
- }
- // make it a smallInteger
- h = (h ^ (h >> 30)) & 0x3FFFFFFF;
- RETURN ( __mkSmallInteger(h));
#endif /* not SCHTEAM */
%}.
^ self primitiveFailed
@@ -1944,28 +1946,28 @@
cp = __stringVal(self);
l = __stringSize(self);
- if (!__qIsStringLike(self)) {
+ if (__qClass(self) == String) {
+ cont:
+ h = 2166136261U;
+ while (l >= 4) {
+ l -= 4;
+ h = (h ^ cp[0]) * 16777619;
+ h = (h ^ cp[1]) * 16777619;
+ h = (h ^ cp[2]) * 16777619;
+ h = (h ^ cp[3]) * 16777619;
+ cp += 4;
+ }
+ while (l--) {
+ h = (h ^ *cp++) * 16777619;
+ }
+ // make it a smallInteger
+ h = (h ^ (h >> 30)) & 0x3FFFFFFF;
+ RETURN ( __mkSmallInteger(h));
+ } else {
int n = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(self))->c_ninstvars));
-
cp += n;
- l -= n;
+ goto cont;
}
-
- h = 2166136261U;
- while (l >= 4) {
- l -= 4;
- h = (h ^ cp[0]) * 16777619;
- h = (h ^ cp[1]) * 16777619;
- h = (h ^ cp[2]) * 16777619;
- h = (h ^ cp[3]) * 16777619;
- cp += 4;
- }
- while (l--) {
- h = (h ^ *cp++) * 16777619;
- }
- // make it a smallInteger
- h = (h ^ (h >> 30)) & 0x3FFFFFFF;
- RETURN ( __mkSmallInteger(h));
#endif /* not SCHTEAM */
%}.
^ self primitiveFailed