1
0
Fork 0
mirror of https://github.com/rubyjs/therubyracer synced 2023-03-27 23:21:42 -04:00

make external fully integrated

This commit is contained in:
Charles Lowell 2015-07-07 20:32:55 -05:00
parent fd61cb8f95
commit ed982f0c52
3 changed files with 7 additions and 6 deletions

View file

@ -3,7 +3,7 @@
#define EXTERNAL_H #define EXTERNAL_H
namespace rr { namespace rr {
class External : Ref<v8::External> { class External : public Ref<v8::External> {
public: public:
static void Init(); static void Init();
@ -13,6 +13,8 @@ namespace rr {
inline External(VALUE value) : Ref<v8::External>(value) {} inline External(VALUE value) : Ref<v8::External>(value) {}
inline External(v8::Isolate* isolate, v8::Handle<v8::External> handle) : inline External(v8::Isolate* isolate, v8::Handle<v8::External> handle) :
Ref<v8::External>(isolate, handle) {} Ref<v8::External>(isolate, handle) {}
inline External(v8::Isolate* isolate, v8::Handle<v8::Value> value) :
External(isolate, v8::Handle<v8::External>::Cast<v8::Value>(value)) {}
struct Container { struct Container {
Container(VALUE v) : object(v) {} Container(VALUE v) : object(v) {}

View file

@ -97,7 +97,7 @@ namespace rr {
isolate(isolate), cell(new v8::Persistent<T>(isolate, handle)) {} isolate(isolate), cell(new v8::Persistent<T>(isolate, handle)) {}
virtual ~Holder() { virtual ~Holder() {
Isolate(isolate).scheduleDelete<T>(cell); Isolate(isolate).scheduleReleaseObject<T>(cell);
} }
v8::Isolate* isolate; v8::Isolate* isolate;

View file

@ -166,10 +166,9 @@ namespace rr {
return Qfalse; return Qfalse;
} }
// TODO if (handle->IsExternal()) {
// if (handle->IsExternal()) { return External(isolate, handle);
// return External((v8::Handle<v8::External>)v8::External::Cast(*handle)); }
// }
if (handle->IsUint32()) { if (handle->IsUint32()) {
return UInt32(handle->Uint32Value()); return UInt32(handle->Uint32Value());