Example #1
0
  Object* CompiledMethod::set_breakpoint(STATE, GCToken gct, Fixnum* ip, Object* bp) {
    CompiledMethod* self = this;
    OnStack<3> os(state, self, ip, bp);

    int i = ip->to_native();
    if(self->backend_method_ == NULL) {
      if(!self->internalize(state, gct)) return Primitives::failure();
    }

    if(!self->backend_method_->validate_ip(state, i)) return Primitives::failure();

    if(self->breakpoints_->nil_p()) {
      self->breakpoints(state, LookupTable::create(state));
    }

    self->breakpoints_->store(state, ip, bp);
    self->backend_method_->debugging = 1;
    self->backend_method_->run = VMMethod::debugger_interpreter;

    return ip;
  }