1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
static VALUE
rb_ary_hash(ary)
    VALUE ary;
{
    long i, h;
    VALUE n;

    h = RARRAY(ary)->len;
    for (i=0; i<RARRAY(ary)->len; i++) {
  h = (h << 1) | (h<0 ? 1 : 0);
  n = rb_hash(RARRAY(ary)->ptr[i]);
  h ^= NUM2LONG(n);
    }
    return LONG2FIX(h);
}