From 5051d2c636b489b683672c155dfb9790a014c114 Mon Sep 17 00:00:00 2001 From: "vitalyr@chromium.org" Date: Tue, 22 Mar 2011 15:16:29 +0000 Subject: [PATCH] Remove TLS fetches in v8::String API implementation. Patch by Dmitry Lomov. Original review: http://codereview.chromium.org/6716004/ TBR=ager Review URL: http://codereview.chromium.org/6716023 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7307 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/api.cc | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/api.cc b/src/api.cc index 667aa60..b101dc3 100644 --- a/src/api.cc +++ b/src/api.cc @@ -3914,14 +3914,14 @@ Local v8::String::New(const char* data, int length) { Local v8::String::Concat(Handle left, Handle right) { - i::Isolate* isolate = i::Isolate::Current(); - EnsureInitializedForIsolate(isolate, "v8::String::New()"); - LOG_API(isolate, "String::New(char)"); - ENTER_V8; i::Handle left_string = Utils::OpenHandle(*left); + i::Isolate* isolate = left_string->GetIsolate(); + EnsureInitializedForIsolate(isolate, "v8::String::Concat()"); + LOG_API(isolate, "String::Concat()"); + ENTER_V8; i::Handle right_string = Utils::OpenHandle(*right); - i::Handle result = FACTORY->NewConsString(left_string, - right_string); + i::Handle result = isolate->factory()->NewConsString(left_string, + right_string); return Utils::ToLocal(result); } @@ -3933,7 +3933,8 @@ Local v8::String::NewUndetectable(const char* data, int length) { ENTER_V8; if (length == -1) length = i::StrLength(data); i::Handle result = - FACTORY->NewStringFromUtf8(i::Vector(data, length)); + isolate->factory()->NewStringFromUtf8( + i::Vector(data, length)); result->MarkAsUndetectable(); return Utils::ToLocal(result); } @@ -4003,11 +4004,11 @@ Local v8::String::NewExternal( bool v8::String::MakeExternal(v8::String::ExternalStringResource* resource) { - i::Isolate* isolate = i::Isolate::Current(); + i::Handle obj = Utils::OpenHandle(this); + i::Isolate* isolate = obj->GetIsolate(); if (IsDeadCheck(isolate, "v8::String::MakeExternal()")) return false; if (this->IsExternal()) return false; // Already an external string. ENTER_V8; - i::Handle obj = Utils::OpenHandle(this); if (isolate->string_tracker()->IsFreshUnusedString(obj)) { return false; } @@ -4033,11 +4034,11 @@ Local v8::String::NewExternal( bool v8::String::MakeExternal( v8::String::ExternalAsciiStringResource* resource) { - i::Isolate* isolate = i::Isolate::Current(); + i::Handle obj = Utils::OpenHandle(this); + i::Isolate* isolate = obj->GetIsolate(); if (IsDeadCheck(isolate, "v8::String::MakeExternal()")) return false; if (this->IsExternal()) return false; // Already an external string. ENTER_V8; - i::Handle obj = Utils::OpenHandle(this); if (isolate->string_tracker()->IsFreshUnusedString(obj)) { return false; } @@ -4050,9 +4051,9 @@ bool v8::String::MakeExternal( bool v8::String::CanMakeExternal() { - i::Isolate* isolate = i::Isolate::Current(); - if (IsDeadCheck(isolate, "v8::String::CanMakeExternal()")) return false; i::Handle obj = Utils::OpenHandle(this); + i::Isolate* isolate = obj->GetIsolate(); + if (IsDeadCheck(isolate, "v8::String::CanMakeExternal()")) return false; if (isolate->string_tracker()->IsFreshUnusedString(obj)) { return false; } -- 2.7.4