Sha256: 40869d2f627ef4173d2d290f1f65310d1ac0924481fd341cf7a55959c0d78f9c
Contents?: true
Size: 1.14 KB
Versions: 1
Compression:
Stored size: 1.14 KB
Contents
#ifndef _RR_V8_HANDLE_ #define _RR_V8_HANDLE_ #include <v8.h> #include "ruby.h" /** * Holds a reference to a V8 heap object. This serves as the base * class for all of the low-level proxies that reference into V8. * */ struct v8_handle { /** * Contains the *actual* V8 references. This object is kept * separate so that it can be "detached" from the handle when * it is garbage collected, and enqueued separately and * collected in the context of a V8 thread. */ struct Payload { Payload(v8::Handle<void> object); virtual ~Payload(); void release(); static void destroy(v8_handle::Payload* payload); v8::Persistent<void> handle; VALUE wrapper; }; v8_handle(v8::Handle<void> object); virtual ~v8_handle(); Payload* payload; bool dead; VALUE weakref_callback; VALUE weakref_callback_parameters; }; void rr_init_handle(); v8_handle* rr_v8_handle_raw(VALUE value); template <class T> v8::Persistent<T>& rr_v8_handle(VALUE value) { return (v8::Persistent<T>&)(rr_v8_handle_raw(value)->payload->handle); } VALUE rr_v8_handle_new(VALUE rbclass, v8::Handle<void> handle); VALUE rr_v8_handle_class(); #endif
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
therubyracer-0.9.2 | ext/v8/v8_handle.h |