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

remove Isolate::Current from ScriptData and Script

R=mstarzinger@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17041 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent ff210017
...@@ -885,7 +885,9 @@ class V8_EXPORT ScriptData { // NOLINT ...@@ -885,7 +885,9 @@ class V8_EXPORT ScriptData { // NOLINT
* \param input Pointer to UTF-8 script source code. * \param input Pointer to UTF-8 script source code.
* \param length Length of UTF-8 script source code. * \param length Length of UTF-8 script source code.
*/ */
static ScriptData* PreCompile(const char* input, int length); static ScriptData* PreCompile(Isolate* isolate,
const char* input,
int length);
/** /**
* Pre-compiles the specified script (context-independent). * Pre-compiles the specified script (context-independent).
......
...@@ -1646,10 +1646,13 @@ void ObjectTemplate::SetInternalFieldCount(int value) { ...@@ -1646,10 +1646,13 @@ void ObjectTemplate::SetInternalFieldCount(int value) {
// --- S c r i p t D a t a --- // --- S c r i p t D a t a ---
ScriptData* ScriptData::PreCompile(const char* input, int length) { ScriptData* ScriptData::PreCompile(v8::Isolate* isolate,
const char* input,
int length) {
i::Utf8ToUtf16CharacterStream stream( i::Utf8ToUtf16CharacterStream stream(
reinterpret_cast<const unsigned char*>(input), length); reinterpret_cast<const unsigned char*>(input), length);
return i::PreParserApi::PreParse(i::Isolate::Current(), &stream); return i::PreParserApi::PreParse(
reinterpret_cast<i::Isolate*>(isolate), &stream);
} }
...@@ -1696,13 +1699,13 @@ Local<Script> Script::New(v8::Handle<String> source, ...@@ -1696,13 +1699,13 @@ Local<Script> Script::New(v8::Handle<String> source,
v8::ScriptOrigin* origin, v8::ScriptOrigin* origin,
v8::ScriptData* pre_data, v8::ScriptData* pre_data,
v8::Handle<String> script_data) { v8::Handle<String> script_data) {
i::Isolate* isolate = i::Isolate::Current(); i::Handle<i::String> str = Utils::OpenHandle(*source);
i::Isolate* isolate = str->GetIsolate();
ON_BAILOUT(isolate, "v8::Script::New()", return Local<Script>()); ON_BAILOUT(isolate, "v8::Script::New()", return Local<Script>());
LOG_API(isolate, "Script::New"); LOG_API(isolate, "Script::New");
ENTER_V8(isolate); ENTER_V8(isolate);
i::SharedFunctionInfo* raw_result = NULL; i::SharedFunctionInfo* raw_result = NULL;
{ i::HandleScope scope(isolate); { i::HandleScope scope(isolate);
i::Handle<i::String> str = Utils::OpenHandle(*source);
i::Handle<i::Object> name_obj; i::Handle<i::Object> name_obj;
int line_offset = 0; int line_offset = 0;
int column_offset = 0; int column_offset = 0;
...@@ -1765,7 +1768,8 @@ Local<Script> Script::Compile(v8::Handle<String> source, ...@@ -1765,7 +1768,8 @@ Local<Script> Script::Compile(v8::Handle<String> source,
v8::ScriptOrigin* origin, v8::ScriptOrigin* origin,
v8::ScriptData* pre_data, v8::ScriptData* pre_data,
v8::Handle<String> script_data) { v8::Handle<String> script_data) {
i::Isolate* isolate = i::Isolate::Current(); i::Handle<i::String> str = Utils::OpenHandle(*source);
i::Isolate* isolate = str->GetIsolate();
ON_BAILOUT(isolate, "v8::Script::Compile()", return Local<Script>()); ON_BAILOUT(isolate, "v8::Script::Compile()", return Local<Script>());
LOG_API(isolate, "Script::Compile"); LOG_API(isolate, "Script::Compile");
ENTER_V8(isolate); ENTER_V8(isolate);
...@@ -1792,7 +1796,11 @@ Local<Script> Script::Compile(v8::Handle<String> source, ...@@ -1792,7 +1796,11 @@ Local<Script> Script::Compile(v8::Handle<String> source,
Local<Value> Script::Run() { Local<Value> Script::Run() {
i::Isolate* isolate = i::Isolate::Current(); // If execution is terminating, Compile(script)->Run() requires this check.
if (this == NULL) return Local<Value>();
i::Handle<i::HeapObject> obj =
i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this));
i::Isolate* isolate = obj->GetIsolate();
ON_BAILOUT(isolate, "v8::Script::Run()", return Local<Value>()); ON_BAILOUT(isolate, "v8::Script::Run()", return Local<Value>());
LOG_API(isolate, "Script::Run"); LOG_API(isolate, "Script::Run");
ENTER_V8(isolate); ENTER_V8(isolate);
...@@ -1801,7 +1809,6 @@ Local<Value> Script::Run() { ...@@ -1801,7 +1809,6 @@ Local<Value> Script::Run() {
i::Object* raw_result = NULL; i::Object* raw_result = NULL;
{ {
i::HandleScope scope(isolate); i::HandleScope scope(isolate);
i::Handle<i::Object> obj = Utils::OpenHandle(this);
i::Handle<i::JSFunction> fun; i::Handle<i::JSFunction> fun;
if (obj->IsSharedFunctionInfo()) { if (obj->IsSharedFunctionInfo()) {
i::Handle<i::SharedFunctionInfo> i::Handle<i::SharedFunctionInfo>
...@@ -1839,7 +1846,9 @@ static i::Handle<i::SharedFunctionInfo> OpenScript(Script* script) { ...@@ -1839,7 +1846,9 @@ static i::Handle<i::SharedFunctionInfo> OpenScript(Script* script) {
Local<Value> Script::Id() { Local<Value> Script::Id() {
i::Isolate* isolate = i::Isolate::Current(); i::Handle<i::HeapObject> obj =
i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this));
i::Isolate* isolate = obj->GetIsolate();
ON_BAILOUT(isolate, "v8::Script::Id()", return Local<Value>()); ON_BAILOUT(isolate, "v8::Script::Id()", return Local<Value>());
LOG_API(isolate, "Script::Id"); LOG_API(isolate, "Script::Id");
i::Object* raw_id = NULL; i::Object* raw_id = NULL;
...@@ -1856,7 +1865,9 @@ Local<Value> Script::Id() { ...@@ -1856,7 +1865,9 @@ Local<Value> Script::Id() {
int Script::GetId() { int Script::GetId() {
i::Isolate* isolate = i::Isolate::Current(); i::Handle<i::HeapObject> obj =
i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this));
i::Isolate* isolate = obj->GetIsolate();
ON_BAILOUT(isolate, "v8::Script::Id()", return -1); ON_BAILOUT(isolate, "v8::Script::Id()", return -1);
LOG_API(isolate, "Script::Id"); LOG_API(isolate, "Script::Id");
{ {
...@@ -1869,10 +1880,11 @@ int Script::GetId() { ...@@ -1869,10 +1880,11 @@ int Script::GetId() {
int Script::GetLineNumber(int code_pos) { int Script::GetLineNumber(int code_pos) {
i::Isolate* isolate = i::Isolate::Current(); i::Handle<i::HeapObject> obj =
i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this));
i::Isolate* isolate = obj->GetIsolate();
ON_BAILOUT(isolate, "v8::Script::GetLineNumber()", return -1); ON_BAILOUT(isolate, "v8::Script::GetLineNumber()", return -1);
LOG_API(isolate, "Script::GetLineNumber"); LOG_API(isolate, "Script::GetLineNumber");
i::Handle<i::Object> obj = Utils::OpenHandle(this);
if (obj->IsScript()) { if (obj->IsScript()) {
i::Handle<i::Script> script = i::Handle<i::Script>(i::Script::cast(*obj)); i::Handle<i::Script> script = i::Handle<i::Script>(i::Script::cast(*obj));
return i::GetScriptLineNumber(script, code_pos); return i::GetScriptLineNumber(script, code_pos);
...@@ -1883,10 +1895,11 @@ int Script::GetLineNumber(int code_pos) { ...@@ -1883,10 +1895,11 @@ int Script::GetLineNumber(int code_pos) {
Handle<Value> Script::GetScriptName() { Handle<Value> Script::GetScriptName() {
i::Isolate* isolate = i::Isolate::Current(); i::Handle<i::HeapObject> obj =
i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this));
i::Isolate* isolate = obj->GetIsolate();
ON_BAILOUT(isolate, "v8::Script::GetName()", return Handle<String>()); ON_BAILOUT(isolate, "v8::Script::GetName()", return Handle<String>());
LOG_API(isolate, "Script::GetName"); LOG_API(isolate, "Script::GetName");
i::Handle<i::Object> obj = Utils::OpenHandle(this);
if (obj->IsScript()) { if (obj->IsScript()) {
i::Object* name = i::Script::cast(*obj)->name(); i::Object* name = i::Script::cast(*obj)->name();
return Utils::ToLocal(i::Handle<i::Object>(name, isolate)); return Utils::ToLocal(i::Handle<i::Object>(name, isolate));
...@@ -1897,7 +1910,9 @@ Handle<Value> Script::GetScriptName() { ...@@ -1897,7 +1910,9 @@ Handle<Value> Script::GetScriptName() {
void Script::SetData(v8::Handle<String> data) { void Script::SetData(v8::Handle<String> data) {
i::Isolate* isolate = i::Isolate::Current(); i::Handle<i::HeapObject> obj =
i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this));
i::Isolate* isolate = obj->GetIsolate();
ON_BAILOUT(isolate, "v8::Script::SetData()", return); ON_BAILOUT(isolate, "v8::Script::SetData()", return);
LOG_API(isolate, "Script::SetData"); LOG_API(isolate, "Script::SetData");
{ {
......
...@@ -14120,9 +14120,10 @@ TEST(PreCompile) { ...@@ -14120,9 +14120,10 @@ TEST(PreCompile) {
// TODO(155): This test would break without the initialization of V8. This is // TODO(155): This test would break without the initialization of V8. This is
// a workaround for now to make this test not fail. // a workaround for now to make this test not fail.
v8::V8::Initialize(); v8::V8::Initialize();
v8::Isolate* isolate = CcTest::isolate();
const char* script = "function foo(a) { return a+1; }"; const char* script = "function foo(a) { return a+1; }";
v8::ScriptData* sd = v8::ScriptData* sd =
v8::ScriptData::PreCompile(script, i::StrLength(script)); v8::ScriptData::PreCompile(isolate, script, i::StrLength(script));
CHECK_NE(sd->Length(), 0); CHECK_NE(sd->Length(), 0);
CHECK_NE(sd->Data(), NULL); CHECK_NE(sd->Data(), NULL);
CHECK(!sd->HasError()); CHECK(!sd->HasError());
...@@ -14132,9 +14133,10 @@ TEST(PreCompile) { ...@@ -14132,9 +14133,10 @@ TEST(PreCompile) {
TEST(PreCompileWithError) { TEST(PreCompileWithError) {
v8::V8::Initialize(); v8::V8::Initialize();
v8::Isolate* isolate = CcTest::isolate();
const char* script = "function foo(a) { return 1 * * 2; }"; const char* script = "function foo(a) { return 1 * * 2; }";
v8::ScriptData* sd = v8::ScriptData* sd =
v8::ScriptData::PreCompile(script, i::StrLength(script)); v8::ScriptData::PreCompile(isolate, script, i::StrLength(script));
CHECK(sd->HasError()); CHECK(sd->HasError());
delete sd; delete sd;
} }
...@@ -14142,9 +14144,10 @@ TEST(PreCompileWithError) { ...@@ -14142,9 +14144,10 @@ TEST(PreCompileWithError) {
TEST(Regress31661) { TEST(Regress31661) {
v8::V8::Initialize(); v8::V8::Initialize();
v8::Isolate* isolate = CcTest::isolate();
const char* script = " The Definintive Guide"; const char* script = " The Definintive Guide";
v8::ScriptData* sd = v8::ScriptData* sd =
v8::ScriptData::PreCompile(script, i::StrLength(script)); v8::ScriptData::PreCompile(isolate, script, i::StrLength(script));
CHECK(sd->HasError()); CHECK(sd->HasError());
delete sd; delete sd;
} }
...@@ -14153,9 +14156,10 @@ TEST(Regress31661) { ...@@ -14153,9 +14156,10 @@ TEST(Regress31661) {
// Tests that ScriptData can be serialized and deserialized. // Tests that ScriptData can be serialized and deserialized.
TEST(PreCompileSerialization) { TEST(PreCompileSerialization) {
v8::V8::Initialize(); v8::V8::Initialize();
v8::Isolate* isolate = CcTest::isolate();
const char* script = "function foo(a) { return a+1; }"; const char* script = "function foo(a) { return a+1; }";
v8::ScriptData* sd = v8::ScriptData* sd =
v8::ScriptData::PreCompile(script, i::StrLength(script)); v8::ScriptData::PreCompile(isolate, script, i::StrLength(script));
// Serialize. // Serialize.
int serialized_data_length = sd->Length(); int serialized_data_length = sd->Length();
...@@ -14192,13 +14196,14 @@ TEST(PreCompileDeserializationError) { ...@@ -14192,13 +14196,14 @@ TEST(PreCompileDeserializationError) {
// Attempts to deserialize bad data. // Attempts to deserialize bad data.
TEST(PreCompileInvalidPreparseDataError) { TEST(PreCompileInvalidPreparseDataError) {
v8::V8::Initialize(); v8::V8::Initialize();
v8::Isolate* isolate = CcTest::isolate();
LocalContext context; LocalContext context;
v8::HandleScope scope(context->GetIsolate()); v8::HandleScope scope(context->GetIsolate());
const char* script = "function foo(){ return 5;}\n" const char* script = "function foo(){ return 5;}\n"
"function bar(){ return 6 + 7;} foo();"; "function bar(){ return 6 + 7;} foo();";
v8::ScriptData* sd = v8::ScriptData* sd =
v8::ScriptData::PreCompile(script, i::StrLength(script)); v8::ScriptData::PreCompile(isolate, script, i::StrLength(script));
CHECK(!sd->HasError()); CHECK(!sd->HasError());
// ScriptDataImpl private implementation details // ScriptDataImpl private implementation details
const int kHeaderSize = i::PreparseDataConstants::kHeaderSize; const int kHeaderSize = i::PreparseDataConstants::kHeaderSize;
...@@ -14224,7 +14229,7 @@ TEST(PreCompileInvalidPreparseDataError) { ...@@ -14224,7 +14229,7 @@ TEST(PreCompileInvalidPreparseDataError) {
// Overwrite function bar's start position with 200. The function entry // Overwrite function bar's start position with 200. The function entry
// will not be found when searching for it by position and we should fall // will not be found when searching for it by position and we should fall
// back on eager compilation. // back on eager compilation.
sd = v8::ScriptData::PreCompile(script, i::StrLength(script)); sd = v8::ScriptData::PreCompile(isolate, script, i::StrLength(script));
sd_data = reinterpret_cast<unsigned*>(const_cast<char*>(sd->Data())); sd_data = reinterpret_cast<unsigned*>(const_cast<char*>(sd->Data()));
sd_data[kHeaderSize + 1 * kFunctionEntrySize + kFunctionEntryStartOffset] = sd_data[kHeaderSize + 1 * kFunctionEntrySize + kFunctionEntryStartOffset] =
200; 200;
...@@ -14239,12 +14244,13 @@ TEST(PreCompileInvalidPreparseDataError) { ...@@ -14239,12 +14244,13 @@ TEST(PreCompileInvalidPreparseDataError) {
// the same results (at least for one trivial case). // the same results (at least for one trivial case).
TEST(PreCompileAPIVariationsAreSame) { TEST(PreCompileAPIVariationsAreSame) {
v8::V8::Initialize(); v8::V8::Initialize();
v8::HandleScope scope(CcTest::isolate()); v8::Isolate* isolate = CcTest::isolate();
v8::HandleScope scope(isolate);
const char* cstring = "function foo(a) { return a+1; }"; const char* cstring = "function foo(a) { return a+1; }";
v8::ScriptData* sd_from_cstring = v8::ScriptData* sd_from_cstring =
v8::ScriptData::PreCompile(cstring, i::StrLength(cstring)); v8::ScriptData::PreCompile(isolate, cstring, i::StrLength(cstring));
TestAsciiResource* resource = new TestAsciiResource(cstring); TestAsciiResource* resource = new TestAsciiResource(cstring);
v8::ScriptData* sd_from_external_string = v8::ScriptData::PreCompile( v8::ScriptData* sd_from_external_string = v8::ScriptData::PreCompile(
......
...@@ -107,6 +107,7 @@ TEST(ScanKeywords) { ...@@ -107,6 +107,7 @@ TEST(ScanKeywords) {
TEST(ScanHTMLEndComments) { TEST(ScanHTMLEndComments) {
v8::V8::Initialize(); v8::V8::Initialize();
v8::Isolate* isolate = CcTest::isolate();
// Regression test. See: // Regression test. See:
// http://code.google.com/p/chromium/issues/detail?id=53548 // http://code.google.com/p/chromium/issues/detail?id=53548
...@@ -144,14 +145,14 @@ TEST(ScanHTMLEndComments) { ...@@ -144,14 +145,14 @@ TEST(ScanHTMLEndComments) {
for (int i = 0; tests[i]; i++) { for (int i = 0; tests[i]; i++) {
v8::ScriptData* data = v8::ScriptData* data =
v8::ScriptData::PreCompile(tests[i], i::StrLength(tests[i])); v8::ScriptData::PreCompile(isolate, tests[i], i::StrLength(tests[i]));
CHECK(data != NULL && !data->HasError()); CHECK(data != NULL && !data->HasError());
delete data; delete data;
} }
for (int i = 0; fail_tests[i]; i++) { for (int i = 0; fail_tests[i]; i++) {
v8::ScriptData* data = v8::ScriptData* data = v8::ScriptData::PreCompile(
v8::ScriptData::PreCompile(fail_tests[i], i::StrLength(fail_tests[i])); isolate, fail_tests[i], i::StrLength(fail_tests[i]));
CHECK(data == NULL || data->HasError()); CHECK(data == NULL || data->HasError());
delete data; delete data;
} }
...@@ -199,7 +200,7 @@ TEST(Preparsing) { ...@@ -199,7 +200,7 @@ TEST(Preparsing) {
int error_source_length = i::StrLength(error_source); int error_source_length = i::StrLength(error_source);
v8::ScriptData* preparse = v8::ScriptData* preparse =
v8::ScriptData::PreCompile(source, source_length); v8::ScriptData::PreCompile(isolate, source, source_length);
CHECK(!preparse->HasError()); CHECK(!preparse->HasError());
bool lazy_flag = i::FLAG_lazy; bool lazy_flag = i::FLAG_lazy;
{ {
...@@ -221,7 +222,7 @@ TEST(Preparsing) { ...@@ -221,7 +222,7 @@ TEST(Preparsing) {
// Syntax error. // Syntax error.
v8::ScriptData* error_preparse = v8::ScriptData* error_preparse =
v8::ScriptData::PreCompile(error_source, error_source_length); v8::ScriptData::PreCompile(isolate, error_source, error_source_length);
CHECK(error_preparse->HasError()); CHECK(error_preparse->HasError());
i::ScriptDataImpl *pre_impl = i::ScriptDataImpl *pre_impl =
reinterpret_cast<i::ScriptDataImpl*>(error_preparse); reinterpret_cast<i::ScriptDataImpl*>(error_preparse);
......
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