| Index: src/api.cc
|
| ===================================================================
|
| --- src/api.cc (revision 4210)
|
| +++ src/api.cc (working copy)
|
| @@ -1136,7 +1136,7 @@
|
| if (pre_data_impl != NULL && !pre_data_impl->SanityCheck()) {
|
| pre_data_impl = NULL;
|
| }
|
| - i::Handle<i::JSFunction> boilerplate =
|
| + i::Handle<i::SharedFunctionInfo> result =
|
| i::Compiler::Compile(str,
|
| name_obj,
|
| line_offset,
|
| @@ -1145,9 +1145,9 @@
|
| pre_data_impl,
|
| Utils::OpenHandle(*script_data),
|
| i::NOT_NATIVES_CODE);
|
| - has_pending_exception = boilerplate.is_null();
|
| + has_pending_exception = result.is_null();
|
| EXCEPTION_BAILOUT_CHECK(Local<Script>());
|
| - return Local<Script>(ToApi<Script>(boilerplate));
|
| + return Local<Script>(ToApi<Script>(result));
|
| }
|
|
|
|
|
| @@ -1168,10 +1168,12 @@
|
| Local<Script> generic = New(source, origin, pre_data, script_data);
|
| if (generic.IsEmpty())
|
| return generic;
|
| - i::Handle<i::JSFunction> boilerplate = Utils::OpenHandle(*generic);
|
| + i::Handle<i::Object> obj = Utils::OpenHandle(*generic);
|
| + i::Handle<i::SharedFunctionInfo> function =
|
| + i::Handle<i::SharedFunctionInfo>(i::SharedFunctionInfo::cast(*obj));
|
| i::Handle<i::JSFunction> result =
|
| - i::Factory::NewFunctionFromBoilerplate(boilerplate,
|
| - i::Top::global_context());
|
| + i::Factory::NewFunctionFromSharedFunctionInfo(function,
|
| + i::Top::global_context());
|
| return Local<Script>(ToApi<Script>(result));
|
| }
|
|
|
| @@ -1191,10 +1193,15 @@
|
| i::Object* raw_result = NULL;
|
| {
|
| HandleScope scope;
|
| - i::Handle<i::JSFunction> fun = Utils::OpenHandle(this);
|
| - if (fun->IsBoilerplate()) {
|
| - fun = i::Factory::NewFunctionFromBoilerplate(fun,
|
| - i::Top::global_context());
|
| + i::Handle<i::Object> obj = Utils::OpenHandle(this);
|
| + i::Handle<i::JSFunction> fun;
|
| + if (obj->IsSharedFunctionInfo()) {
|
| + i::Handle<i::SharedFunctionInfo>
|
| + function_info(i::SharedFunctionInfo::cast(*obj));
|
| + fun = i::Factory::NewFunctionFromSharedFunctionInfo(
|
| + function_info, i::Top::global_context());
|
| + } else {
|
| + fun = i::Handle<i::JSFunction>(i::JSFunction::cast(*obj));
|
| }
|
| EXCEPTION_PREAMBLE();
|
| i::Handle<i::Object> receiver(i::Top::context()->global_proxy());
|
| @@ -1208,14 +1215,28 @@
|
| }
|
|
|
|
|
| +static i::Handle<i::SharedFunctionInfo> OpenScript(Script* script) {
|
| + i::Handle<i::Object> obj = Utils::OpenHandle(script);
|
| + i::Handle<i::SharedFunctionInfo> result;
|
| + if (obj->IsSharedFunctionInfo()) {
|
| + result =
|
| + i::Handle<i::SharedFunctionInfo>(i::SharedFunctionInfo::cast(*obj));
|
| + } else {
|
| + result =
|
| + i::Handle<i::SharedFunctionInfo>(i::JSFunction::cast(*obj)->shared());
|
| + }
|
| + return result;
|
| +}
|
| +
|
| +
|
| Local<Value> Script::Id() {
|
| ON_BAILOUT("v8::Script::Id()", return Local<Value>());
|
| LOG_API("Script::Id");
|
| i::Object* raw_id = NULL;
|
| {
|
| HandleScope scope;
|
| - i::Handle<i::JSFunction> fun = Utils::OpenHandle(this);
|
| - i::Handle<i::Script> script(i::Script::cast(fun->shared()->script()));
|
| + i::Handle<i::SharedFunctionInfo> function_info = OpenScript(this);
|
| + i::Handle<i::Script> script(i::Script::cast(function_info->script()));
|
| i::Handle<i::Object> id(script->id());
|
| raw_id = *id;
|
| }
|
| @@ -1229,9 +1250,9 @@
|
| LOG_API("Script::SetData");
|
| {
|
| HandleScope scope;
|
| - i::Handle<i::JSFunction> fun = Utils::OpenHandle(this);
|
| + i::Handle<i::SharedFunctionInfo> function_info = OpenScript(this);
|
| i::Handle<i::Object> raw_data = Utils::OpenHandle(*data);
|
| - i::Handle<i::Script> script(i::Script::cast(fun->shared()->script()));
|
| + i::Handle<i::Script> script(i::Script::cast(function_info->script()));
|
| script->set_data(*raw_data);
|
| }
|
| }
|
|
|