Commit 7fcd0f39 authored by dcarney@chromium.org's avatar dcarney@chromium.org

remove Local::New with no isolate parameter

R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/24550006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16972 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent d6a4d7e6
...@@ -378,7 +378,6 @@ template <class T> class Local : public Handle<T> { ...@@ -378,7 +378,6 @@ template <class T> class Local : public Handle<T> {
* The referee is kept alive by the local handle even when * The referee is kept alive by the local handle even when
* the original handle is destroyed/disposed. * the original handle is destroyed/disposed.
*/ */
V8_INLINE static Local<T> New(Handle<T> that);
V8_INLINE static Local<T> New(Isolate* isolate, Handle<T> that); V8_INLINE static Local<T> New(Isolate* isolate, Handle<T> that);
template<class M> template<class M>
V8_INLINE static Local<T> New(Isolate* isolate, V8_INLINE static Local<T> New(Isolate* isolate,
...@@ -783,16 +782,16 @@ class V8_EXPORT HandleScope { ...@@ -783,16 +782,16 @@ class V8_EXPORT HandleScope {
*/ */
static int NumberOfHandles(); static int NumberOfHandles();
private:
/** /**
* Creates a new handle with the given value. * Creates a new handle with the given value.
*/ */
static internal::Object** CreateHandle(internal::Object* value);
static internal::Object** CreateHandle(internal::Isolate* isolate, static internal::Object** CreateHandle(internal::Isolate* isolate,
internal::Object* value); internal::Object* value);
// Faster version, uses HeapObject to obtain the current Isolate. // Uses HeapObject to obtain the current Isolate.
static internal::Object** CreateHandle(internal::HeapObject* value); static internal::Object** CreateHandle(internal::HeapObject* heap_object,
internal::Object* value);
private:
V8_INLINE HandleScope() {} V8_INLINE HandleScope() {}
void Initialize(Isolate* isolate); void Initialize(Isolate* isolate);
...@@ -830,6 +829,10 @@ class V8_EXPORT HandleScope { ...@@ -830,6 +829,10 @@ class V8_EXPORT HandleScope {
friend class ImplementationUtilities; friend class ImplementationUtilities;
friend class EscapableHandleScope; friend class EscapableHandleScope;
template<class F> friend class Handle;
template<class F> friend class Local;
friend class Object;
friend class Context;
}; };
...@@ -5568,19 +5571,6 @@ template <class T> ...@@ -5568,19 +5571,6 @@ template <class T>
Local<T>::Local() : Handle<T>() { } Local<T>::Local() : Handle<T>() { }
template <class T>
Local<T> Local<T>::New(Handle<T> that) {
if (that.IsEmpty()) return Local<T>();
T* that_ptr = *that;
internal::Object** p = reinterpret_cast<internal::Object**>(that_ptr);
if (internal::Internals::CanCastToHeapObject(that_ptr)) {
return Local<T>(reinterpret_cast<T*>(HandleScope::CreateHandle(
reinterpret_cast<internal::HeapObject*>(*p))));
}
return Local<T>(reinterpret_cast<T*>(HandleScope::CreateHandle(*p)));
}
template <class T> template <class T>
Local<T> Local<T>::New(Isolate* isolate, Handle<T> that) { Local<T> Local<T>::New(Isolate* isolate, Handle<T> that) {
return New(isolate, that.val_); return New(isolate, that.val_);
...@@ -6017,6 +6007,7 @@ void Template::Set(const char* name, v8::Handle<Data> value) { ...@@ -6017,6 +6007,7 @@ void Template::Set(const char* name, v8::Handle<Data> value) {
Local<Value> Object::GetInternalField(int index) { Local<Value> Object::GetInternalField(int index) {
#ifndef V8_ENABLE_CHECKS #ifndef V8_ENABLE_CHECKS
typedef internal::Object O; typedef internal::Object O;
typedef internal::HeapObject HO;
typedef internal::Internals I; typedef internal::Internals I;
O* obj = *reinterpret_cast<O**>(this); O* obj = *reinterpret_cast<O**>(this);
// Fast path: If the object is a plain JSObject, which is the common case, we // Fast path: If the object is a plain JSObject, which is the common case, we
...@@ -6024,7 +6015,7 @@ Local<Value> Object::GetInternalField(int index) { ...@@ -6024,7 +6015,7 @@ Local<Value> Object::GetInternalField(int index) {
if (I::GetInstanceType(obj) == I::kJSObjectType) { if (I::GetInstanceType(obj) == I::kJSObjectType) {
int offset = I::kJSObjectHeaderSize + (internal::kApiPointerSize * index); int offset = I::kJSObjectHeaderSize + (internal::kApiPointerSize * index);
O* value = I::ReadField<O*>(obj, offset); O* value = I::ReadField<O*>(obj, offset);
O** result = HandleScope::CreateHandle(value); O** result = HandleScope::CreateHandle(reinterpret_cast<HO*>(obj), value);
return Local<Value>(reinterpret_cast<Value*>(result)); return Local<Value>(reinterpret_cast<Value*>(result));
} }
#endif #endif
...@@ -6476,8 +6467,11 @@ void* Isolate::GetData() { ...@@ -6476,8 +6467,11 @@ void* Isolate::GetData() {
Local<Value> Context::GetEmbedderData(int index) { Local<Value> Context::GetEmbedderData(int index) {
#ifndef V8_ENABLE_CHECKS #ifndef V8_ENABLE_CHECKS
typedef internal::Object O; typedef internal::Object O;
typedef internal::HeapObject HO;
typedef internal::Internals I; typedef internal::Internals I;
O** result = HandleScope::CreateHandle(I::ReadEmbedderData<O*>(this, index)); HO* context = *reinterpret_cast<HO**>(this);
O** result =
HandleScope::CreateHandle(context, I::ReadEmbedderData<O*>(this, index));
return Local<Value>(reinterpret_cast<Value*>(result)); return Local<Value>(reinterpret_cast<Value*>(result));
#else #else
return SlowGetEmbedderData(index); return SlowGetEmbedderData(index);
......
...@@ -683,21 +683,15 @@ int HandleScope::NumberOfHandles() { ...@@ -683,21 +683,15 @@ int HandleScope::NumberOfHandles() {
} }
i::Object** HandleScope::CreateHandle(i::Object* value) {
return i::HandleScope::CreateHandle(i::Isolate::Current(), value);
}
i::Object** HandleScope::CreateHandle(i::Isolate* isolate, i::Object* value) { i::Object** HandleScope::CreateHandle(i::Isolate* isolate, i::Object* value) {
ASSERT(isolate == i::Isolate::Current());
return i::HandleScope::CreateHandle(isolate, value); return i::HandleScope::CreateHandle(isolate, value);
} }
i::Object** HandleScope::CreateHandle(i::HeapObject* value) { i::Object** HandleScope::CreateHandle(i::HeapObject* heap_object,
ASSERT(value->IsHeapObject()); i::Object* value) {
return reinterpret_cast<i::Object**>( ASSERT(heap_object->IsHeapObject());
i::HandleScope::CreateHandle(value->GetIsolate(), value)); return i::HandleScope::CreateHandle(heap_object->GetIsolate(), value);
} }
...@@ -1935,8 +1929,9 @@ v8::TryCatch::TryCatch() ...@@ -1935,8 +1929,9 @@ v8::TryCatch::TryCatch()
v8::TryCatch::~TryCatch() { v8::TryCatch::~TryCatch() {
ASSERT(isolate_ == i::Isolate::Current()); ASSERT(isolate_ == i::Isolate::Current());
if (rethrow_) { if (rethrow_) {
v8::HandleScope scope(reinterpret_cast<Isolate*>(isolate_)); v8::Isolate* isolate = reinterpret_cast<Isolate*>(isolate_);
v8::Local<v8::Value> exc = v8::Local<v8::Value>::New(Exception()); v8::HandleScope scope(isolate);
v8::Local<v8::Value> exc = v8::Local<v8::Value>::New(isolate, Exception());
if (HasCaught() && capture_message_) { if (HasCaught() && capture_message_) {
// If an exception was caught and rethrow_ is indicated, the saved // If an exception was caught and rethrow_ is indicated, the saved
// message, script, and location need to be restored to Isolate TLS // message, script, and location need to be restored to Isolate TLS
......
...@@ -507,7 +507,7 @@ THREADED_TEST(StackIteration) { ...@@ -507,7 +507,7 @@ THREADED_TEST(StackIteration) {
static void AllocateHandles(Local<String> name, static void AllocateHandles(Local<String> name,
const v8::PropertyCallbackInfo<v8::Value>& info) { const v8::PropertyCallbackInfo<v8::Value>& info) {
for (int i = 0; i < i::kHandleBlockSize + 1; i++) { for (int i = 0; i < i::kHandleBlockSize + 1; i++) {
v8::Local<v8::Value>::New(name); v8::Local<v8::Value>::New(info.GetIsolate(), name);
} }
info.GetReturnValue().Set(v8::Integer::New(100)); info.GetReturnValue().Set(v8::Integer::New(100));
} }
......
...@@ -3257,7 +3257,7 @@ THREADED_TEST(ClearAndLeakGlobal) { ...@@ -3257,7 +3257,7 @@ THREADED_TEST(ClearAndLeakGlobal) {
THREADED_TEST(GlobalHandleUpcast) { THREADED_TEST(GlobalHandleUpcast) {
v8::Isolate* isolate = CcTest::isolate(); v8::Isolate* isolate = CcTest::isolate();
v8::HandleScope scope(isolate); v8::HandleScope scope(isolate);
v8::Local<String> local = v8::Local<String>::New(v8_str("str")); v8::Local<String> local = v8::Local<String>::New(isolate, v8_str("str"));
v8::Persistent<String> global_string(isolate, local); v8::Persistent<String> global_string(isolate, local);
v8::Persistent<Value>& global_value = v8::Persistent<Value>& global_value =
v8::Persistent<Value>::Cast(global_string); v8::Persistent<Value>::Cast(global_string);
...@@ -3307,10 +3307,8 @@ THREADED_TEST(HandleEquality) { ...@@ -3307,10 +3307,8 @@ THREADED_TEST(HandleEquality) {
THREADED_TEST(LocalHandle) { THREADED_TEST(LocalHandle) {
v8::HandleScope scope(CcTest::isolate()); v8::HandleScope scope(CcTest::isolate());
v8::Local<String> local = v8::Local<String>::New(v8_str("str")); v8::Local<String> local =
CHECK_EQ(local->Length(), 3); v8::Local<String>::New(CcTest::isolate(), v8_str("str"));
local = v8::Local<String>::New(CcTest::isolate(), v8_str("str"));
CHECK_EQ(local->Length(), 3); CHECK_EQ(local->Length(), 3);
} }
...@@ -12509,13 +12507,14 @@ void ApiTestFuzzer::CallTest() { ...@@ -12509,13 +12507,14 @@ void ApiTestFuzzer::CallTest() {
static void ThrowInJS(const v8::FunctionCallbackInfo<v8::Value>& args) { static void ThrowInJS(const v8::FunctionCallbackInfo<v8::Value>& args) {
CHECK(v8::Locker::IsLocked(args.GetIsolate())); v8::Isolate* isolate = args.GetIsolate();
CHECK(v8::Locker::IsLocked(isolate));
ApiTestFuzzer::Fuzz(); ApiTestFuzzer::Fuzz();
v8::Unlocker unlocker(args.GetIsolate()); v8::Unlocker unlocker(isolate);
const char* code = "throw 7;"; const char* code = "throw 7;";
{ {
v8::Locker nested_locker(args.GetIsolate()); v8::Locker nested_locker(isolate);
v8::HandleScope scope(args.GetIsolate()); v8::HandleScope scope(isolate);
v8::Handle<Value> exception; v8::Handle<Value> exception;
{ v8::TryCatch try_catch; { v8::TryCatch try_catch;
v8::Handle<Value> value = CompileRun(code); v8::Handle<Value> value = CompileRun(code);
...@@ -12524,7 +12523,7 @@ static void ThrowInJS(const v8::FunctionCallbackInfo<v8::Value>& args) { ...@@ -12524,7 +12523,7 @@ static void ThrowInJS(const v8::FunctionCallbackInfo<v8::Value>& args) {
// Make sure to wrap the exception in a new handle because // Make sure to wrap the exception in a new handle because
// the handle returned from the TryCatch is destroyed // the handle returned from the TryCatch is destroyed
// when the TryCatch is destroyed. // when the TryCatch is destroyed.
exception = Local<Value>::New(try_catch.Exception()); exception = Local<Value>::New(isolate, try_catch.Exception());
} }
args.GetIsolate()->ThrowException(exception); args.GetIsolate()->ThrowException(exception);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment