private boolean versionMatches(ThreadContext context, StaticScope currScope, DynamicScope currDynScope, IRubyObject self, Object[] temp) { IRubyObject receiver = (IRubyObject) getCandidateObject().retrieve(context, self, currScope, currDynScope, temp); // if (module.getGeneration() != expectedVersion) ... replace this instr with a direct jump // // SSS FIXME: This is not always correct. Implementation class is not always receiver.getMetaClass() // as we know from how we add instance-methods. We add it to rubyClass value on the stack. So, how // do we handle this sticky situation? return (receiver.getMetaClass().getGeneration() == getExpectedVersion()); }
private boolean versionMatches(ThreadContext context, StaticScope currScope, DynamicScope currDynScope, IRubyObject self, Object[] temp) { IRubyObject receiver = (IRubyObject) getCandidateObject().retrieve(context, self, currScope, currDynScope, temp); // if (module.getGeneration() != expectedVersion) ... replace this instr with a direct jump // // SSS FIXME: This is not always correct. Implementation class is not always receiver.getMetaClass() // as we know from how we add instance-methods. We add it to rubyClass value on the stack. So, how // do we handle this sticky situation? return (receiver.getMetaClass().getGeneration() == getExpectedVersion()); }