Rubinius.primitive做什么?

时间:2013-12-25 22:21:10

标签: rubinius

我正在阅读Rubinius source code,我不断遇到类似这样的方法:

def self.do_something
  Rubinius.primitive :vm_do_something
  raise SomeError, "primitive failed to do something"
end

例如,kernel/alpha.rbkernel/bootstrap/rubinius.rb都有很多这些。他们到处都是,我似乎无法找到定义Rubinius.primitive的地方。 因为我不知道它做了什么,所以我很难理解Rubinius如何完成任务。

1 个答案:

答案 0 :(得分:3)

我在freenode.net #rubinius进行了IRC,并了解到Rubinius.primitive的行为是通过调用C ++代码来替换它调用的方法。只有当原语以某种方式失败时才会执行引发通常跟随对原语的调用的调用。