Sha256: 663bc054dfe4815e0e6143dcfa24218f463047edb25803e8c714f56d9278ada8

Contents?: true

Size: 1.18 KB

Versions: 20

Compression:

Stored size: 1.18 KB

Contents

#include "rr.h"
#include "v8_locker.h"

using namespace v8;

namespace {
  VALUE Lock(VALUE self) {
    Locker locker;
    return rb_yield(Qnil);
  }
  VALUE Unlock(VALUE self) {
    Unlocker unlocker;
    return rb_yield(Qnil);
  }
  VALUE StartPreemption(VALUE self, VALUE thread_id) {
    Locker::StartPreemption(NUM2INT(rb_to_int(thread_id)));
    return Qnil;
  }
  VALUE StopPreemption(VALUE self) {
    Locker::StopPreemption();
    return Qnil;
  }
  VALUE IsLocked(VALUE self) {
    return rr_v82rb(Locker::IsLocked());
  }
  VALUE IsActive(VALUE self) {
    return rr_v82rb(Locker::IsActive());
  }
}

void rr_init_v8_locker() {
  VALUE V8 = rb_define_module("V8");
  VALUE V8_C = rb_define_module_under(V8, "C");
  VALUE LockerModule = rb_define_module_under(V8_C, "Locker");
  rr_define_singleton_method(V8_C, "Locker", Lock, 0);
  rr_define_singleton_method(V8_C, "Unlocker", Unlock, 0);
  rr_define_singleton_method(LockerModule, "StartPreemption", StartPreemption, 1);
  rr_define_singleton_method(LockerModule, "StopPreemption", StopPreemption, 0);
  rr_define_singleton_method(LockerModule, "IsLocked", IsLocked, 0);
  rr_define_singleton_method(LockerModule, "IsActive", IsActive, 0);
}

Version data entries

20 entries across 20 versions & 2 rubygems

Version Path
therubyracer-0.9.0 ext/v8/v8_locker.cpp
therubyracer-0.9.0beta7 ext/v8/v8_locker.cpp
therubyracer-0.9.0beta6 ext/v8/v8_locker.cpp
therubyracer-0.9.0beta5 ext/v8/v8_locker.cpp
therubyracer-0.8.2 ext/v8/v8_locker.cpp
therubyracer-0.9.0beta4 ext/v8/v8_locker.cpp
therubyracer-0.9.0beta3 ext/v8/v8_locker.cpp
therubyracer-0.9.0beta2 ext/v8/v8_locker.cpp
therubyracer-0.9.0beta1 ext/v8/v8_locker.cpp
therubyracer-0.8.2.pre2 ext/v8/v8_locker.cpp
therubyracer-0.8.2.pre ext/v8/v8_locker.cpp
therubyracer-0.8.1 ext/v8/v8_locker.cpp
therubyracer-0.8.1.pre2 ext/v8/v8_locker.cpp
therubyracer-heroku-0.8.1.pre3 ext/v8/v8_locker.cpp
therubyracer-heroku-0.8.1.pre2 ext/v8/v8_locker.cpp
therubyracer-0.8.1.pre1 ext/v8/v8_locker.cpp
therubyracer-0.8.0 ext/v8/v8_locker.cpp
therubyracer-0.8.0.pre3 ext/v8/v8_locker.cpp
therubyracer-0.8.0.pre2 ext/v8/v8_locker.cpp
therubyracer-0.8.0.pre ext/v8/v8_locker.cpp