mirror of
https://github.com/rubyjs/therubyracer
synced 2023-03-27 23:21:42 -04:00
Make the V8 Context native wrapper more private.
This commit is contained in:
parent
0ffd0c6bf8
commit
f8fc3a3284
5 changed files with 13 additions and 34 deletions
|
@ -62,9 +62,6 @@ VALUE rr_v82rb(Handle<Value> value) {
|
||||||
return rr_wrap_v8_value(value);
|
return rr_wrap_v8_value(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE rr_v82rb(Handle<Context> value) {
|
|
||||||
return rr_reflect_v8_context(value);
|
|
||||||
}
|
|
||||||
VALUE rr_v82rb(Handle<Message> value) {
|
VALUE rr_v82rb(Handle<Message> value) {
|
||||||
return rr_reflect_v8_message(value);
|
return rr_reflect_v8_message(value);
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,6 @@ VALUE rr_v82rb(v8::Handle<v8::Function> value);
|
||||||
VALUE rr_v82rb(v8::Handle<v8::Integer> value);
|
VALUE rr_v82rb(v8::Handle<v8::Integer> value);
|
||||||
VALUE rr_v82rb(v8::Handle<v8::Uint32> value);
|
VALUE rr_v82rb(v8::Handle<v8::Uint32> value);
|
||||||
VALUE rr_v82rb(v8::Handle<v8::Int32> value);
|
VALUE rr_v82rb(v8::Handle<v8::Int32> value);
|
||||||
VALUE rr_v82rb(v8::Handle<v8::Context> value);
|
|
||||||
VALUE rr_v82rb(v8::Handle<v8::Message> value);
|
VALUE rr_v82rb(v8::Handle<v8::Message> value);
|
||||||
VALUE rr_v82rb(bool value);
|
VALUE rr_v82rb(bool value);
|
||||||
VALUE rr_v82rb(double value);
|
VALUE rr_v82rb(double value);
|
||||||
|
|
|
@ -46,11 +46,5 @@ void rr_init_v8_array() {
|
||||||
VALUE rr_reflect_v8_array(Handle<Value> value) {
|
VALUE rr_reflect_v8_array(Handle<Value> value) {
|
||||||
Local<Array> array(Array::Cast(*value));
|
Local<Array> array(Array::Cast(*value));
|
||||||
Local<Value> peer = array->GetHiddenValue(String::New("TheRubyRacer::RubyObject"));
|
Local<Value> peer = array->GetHiddenValue(String::New("TheRubyRacer::RubyObject"));
|
||||||
if (peer.IsEmpty()) {
|
return peer.IsEmpty() ? rr_v8_ref_create(ArrayClass, value) : (VALUE)External::Unwrap(peer);
|
||||||
VALUE arr = V8_Ref_Create(ArrayClass, array);
|
|
||||||
rb_iv_set(arr, "@context", rr_v82rb(Context::GetEntered()));
|
|
||||||
return arr;
|
|
||||||
} else {
|
|
||||||
return (VALUE)External::Unwrap(peer);
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
#include "rr.h"
|
#include "rr.h"
|
||||||
|
#include "v8_ref.h"
|
||||||
#include "v8_cxt.h"
|
#include "v8_cxt.h"
|
||||||
#include "v8_msg.h"
|
#include "v8_msg.h"
|
||||||
#include "v8_template.h"
|
#include "v8_template.h"
|
||||||
|
@ -6,10 +7,10 @@
|
||||||
|
|
||||||
using namespace v8;
|
using namespace v8;
|
||||||
|
|
||||||
VALUE V8_C_Context;
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
VALUE ContextClass;
|
||||||
|
|
||||||
Local<Context> unwrap(VALUE value) {
|
Local<Context> unwrap(VALUE value) {
|
||||||
return V8_Ref_Get<Context>(value);
|
return V8_Ref_Get<Context>(value);
|
||||||
}
|
}
|
||||||
|
@ -21,7 +22,7 @@ namespace {
|
||||||
Handle<ObjectTemplate> v8_global_template(NIL_P(global_template) ? Handle<ObjectTemplate>() : V8_Ref_Get<ObjectTemplate>(global_template));
|
Handle<ObjectTemplate> v8_global_template(NIL_P(global_template) ? Handle<ObjectTemplate>() : V8_Ref_Get<ObjectTemplate>(global_template));
|
||||||
Handle<Value> v8_global_object(NIL_P(global_object) ? Handle<Value>() : V8_Ref_Get<Value>(global_object));
|
Handle<Value> v8_global_object(NIL_P(global_object) ? Handle<Value>() : V8_Ref_Get<Value>(global_object));
|
||||||
Persistent<Context> cxt(Context::New(0, v8_global_template, v8_global_object));
|
Persistent<Context> cxt(Context::New(0, v8_global_template, v8_global_object));
|
||||||
VALUE ref = V8_Ref_Create(self, cxt);
|
VALUE ref = rr_v8_ref_create(self, cxt);
|
||||||
cxt.Dispose();
|
cxt.Dispose();
|
||||||
return ref;
|
return ref;
|
||||||
}
|
}
|
||||||
|
@ -34,7 +35,7 @@ namespace {
|
||||||
HandleScope handles;
|
HandleScope handles;
|
||||||
if (Context::InContext()) {
|
if (Context::InContext()) {
|
||||||
Local<Context> current = Context::GetEntered();
|
Local<Context> current = Context::GetEntered();
|
||||||
return V8_Ref_Create(self, current);
|
return rr_v8_ref_create(self, current);
|
||||||
} else {
|
} else {
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
@ -68,7 +69,7 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
void rr_init_cxt() {
|
void rr_init_cxt() {
|
||||||
VALUE ContextClass = V8_C_Context = rr_define_class("Context");
|
ContextClass = rr_define_class("Context");
|
||||||
rr_define_singleton_method(ContextClass, "New", New, -1);
|
rr_define_singleton_method(ContextClass, "New", New, -1);
|
||||||
rr_define_singleton_method(ContextClass, "InContext", InContext, 0);
|
rr_define_singleton_method(ContextClass, "InContext", InContext, 0);
|
||||||
rr_define_singleton_method(ContextClass, "GetEntered", GetEntered, 0);
|
rr_define_singleton_method(ContextClass, "GetEntered", GetEntered, 0);
|
||||||
|
@ -78,8 +79,3 @@ void rr_init_cxt() {
|
||||||
rr_define_method(ContextClass, "IsEntered", IsEntered, 0);
|
rr_define_method(ContextClass, "IsEntered", IsEntered, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE rr_reflect_v8_context(Handle<Context> value) {
|
|
||||||
return V8_Ref_Create(V8_C_Context, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,6 @@
|
||||||
#ifndef _RUBY_V8_CXT_
|
#ifndef _RUBY_V8_CXT_
|
||||||
#define _RUBY_V8_CXT_
|
#define _RUBY_V8_CXT_
|
||||||
|
|
||||||
#include "ruby.h"
|
|
||||||
#include "v8.h"
|
|
||||||
#include "v8_ref.h"
|
|
||||||
|
|
||||||
extern VALUE V8_C_Context;
|
|
||||||
|
|
||||||
void rr_init_cxt();
|
void rr_init_cxt();
|
||||||
VALUE rr_reflect_v8_context(v8::Handle<v8::Context> value);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
Loading…
Reference in a new issue