Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add class_id and serial_id
  • Loading branch information
ryoqun committed Oct 5, 2013
1 parent 220df6c commit 58ba37e
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
10 changes: 10 additions & 0 deletions kernel/bootstrap/class.rb
Expand Up @@ -10,5 +10,15 @@ def set_superclass(sup)
raise TypeError, "Class.set_superclass: argument must be a Class (#{kind} given)"
end

def class_id
Rubinius.primitive :class_class_id
raise PrimitiveFailure, "Class#class_id primitive failed"
end

def serial_id
Rubinius.primitive :class_serial_id
raise PrimitiveFailure, "Class#serial_id primitive failed"
end

private :set_superclass
end
10 changes: 10 additions & 0 deletions vm/builtin/class.hpp
Expand Up @@ -62,6 +62,16 @@ namespace rubinius {
return data_.f.serial_id;
}

// Rubinius.primitive :class_class_id
Fixnum* class_id_prim() const {
return Fixnum::from(class_id());
}

// Rubinius.primitive :class_serial_id
Fixnum* serial_id_prim() const {
return Fixnum::from(serial_id());
}

void increment_serial() {
atomic::fetch_and_add(&data_.f.serial_id, 1U);
}
Expand Down

0 comments on commit 58ba37e

Please sign in to comment.