diff --git a/ext/v8/backref.cc b/ext/v8/backref.cc index 5f58c45..25421b3 100644 --- a/ext/v8/backref.cc +++ b/ext/v8/backref.cc @@ -32,7 +32,7 @@ namespace rr { } v8::Handle Backref::toExternal() { - v8::Local wrapper = v8::External::Wrap(this); + v8::Local wrapper = v8::External::New(this); v8::Persistent::New(wrapper).MakeWeak(this, &release); return wrapper; } @@ -42,4 +42,4 @@ namespace rr { Backref* backref = (Backref*)data; delete backref; } -} \ No newline at end of file +} diff --git a/ext/v8/context.cc b/ext/v8/context.cc index 7d3ab55..f5849f5 100644 --- a/ext/v8/context.cc +++ b/ext/v8/context.cc @@ -17,8 +17,8 @@ void Context::Init() { defineMethod("UseDefaultSecurityToken", &UseDefaultSecurityToken). defineMethod("GetSecurityToken", &GetSecurityToken). defineMethod("HasOutOfMemoryException", &HasOutOfMemoryException). - defineMethod("SetData", &SetData). - defineMethod("GetData", &GetData). + defineMethod("SetEmbedderData", &SetEmbedderData). + defineMethod("GetEmbedderData", &GetEmbedderData). defineMethod("AllowCodeGenerationFromStrings", &AllowCodeGenerationFromStrings). defineMethod("IsCodeGenerationFromStringsAllowed", &IsCodeGenerationFromStringsAllowed). defineMethod("Enter", &Enter). @@ -77,12 +77,12 @@ VALUE Context::InContext(VALUE self) { return Bool(v8::Context::InContext()); } -VALUE Context::SetData(VALUE self, VALUE data) { - Void(Context(self)->SetData(String(data))); +VALUE Context::SetEmbedderData(VALUE self, VALUE index, VALUE data) { + Void(Context(self)->SetEmbedderData(NUM2INT(index), Value(data))); } -VALUE Context::GetData(VALUE self) { - return Value(Context(self)->GetData()); +VALUE Context::GetEmbedderData(VALUE self, VALUE index) { + Void(Context(self)->GetEmbedderData(NUM2INT(index))); } VALUE Context::AllowCodeGenerationFromStrings(VALUE self, VALUE allow) { diff --git a/ext/v8/object.cc b/ext/v8/object.cc index f954c3c..e63ee3b 100644 --- a/ext/v8/object.cc +++ b/ext/v8/object.cc @@ -144,7 +144,8 @@ Object::operator VALUE() { backref = new Backref(value); handle->SetHiddenValue(key, backref->toExternal()); } else { - backref = (Backref*)v8::External::Unwrap(external); + v8::Local wrapper = v8::External::Cast(*external); + backref = (Backref*)wrapper->Value(); value = backref->get(); if (!RTEST(value)) { value = downcast(); @@ -331,4 +332,4 @@ VALUE Object::CallAsConstructor(VALUE self, VALUE argv) { return Value(Object(self)->CallAsConstructor(RARRAY_LENINT(argv), Value::array(argv))); } -} \ No newline at end of file +} diff --git a/ext/v8/rr.h b/ext/v8/rr.h index ed85298..4d93dbd 100644 --- a/ext/v8/rr.h +++ b/ext/v8/rr.h @@ -319,8 +319,8 @@ public: static VALUE GetSecurityToken(VALUE self); static VALUE HasOutOfMemoryException(VALUE self); static VALUE InContext(VALUE self); - static VALUE SetData(VALUE self, VALUE data); - static VALUE GetData(VALUE self); + static VALUE SetEmbedderData(VALUE self, VALUE index, VALUE data); + static VALUE GetEmbedderData(VALUE self, VALUE index); static VALUE AllowCodeGenerationFromStrings(VALUE self, VALUE allow); static VALUE IsCodeGenerationFromStringsAllowed(VALUE self); diff --git a/therubyracer.gemspec b/therubyracer.gemspec index 9ed3e58..20f2955 100644 --- a/therubyracer.gemspec +++ b/therubyracer.gemspec @@ -17,5 +17,5 @@ Gem::Specification.new do |gem| gem.version = V8::VERSION gem.add_dependency 'ref' - gem.add_dependency 'libv8', '~> 3.11.8.5' + gem.add_dependency 'libv8', '~> 3.15.11.0' end