| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 44512024daa659c3888a6cb8c5ad0193f89e5898..2c7db3be1656f10d475dd8e1de71a89ed374cdd6 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -1616,7 +1616,8 @@ ScriptData* ScriptData::New(const char* data, int length) {
|
|
|
| Local<Script> Script::New(v8::Handle<String> source,
|
| v8::ScriptOrigin* origin,
|
| - v8::ScriptData* pre_data) {
|
| + v8::ScriptData* pre_data,
|
| + v8::Handle<String> script_data) {
|
| i::Handle<i::String> str = Utils::OpenHandle(*source);
|
| i::Isolate* isolate = str->GetIsolate();
|
| ON_BAILOUT(isolate, "v8::Script::New()", return Local<Script>());
|
| @@ -1664,6 +1665,7 @@ Local<Script> Script::New(v8::Handle<String> source,
|
| isolate->global_context(),
|
| NULL,
|
| pre_data_impl,
|
| + Utils::OpenHandle(*script_data, true),
|
| i::NOT_NATIVES_CODE);
|
| has_pending_exception = result.is_null();
|
| EXCEPTION_BAILOUT_CHECK(isolate, Local<Script>());
|
| @@ -1683,13 +1685,14 @@ Local<Script> Script::New(v8::Handle<String> source,
|
|
|
| Local<Script> Script::Compile(v8::Handle<String> source,
|
| v8::ScriptOrigin* origin,
|
| - v8::ScriptData* pre_data) {
|
| + v8::ScriptData* pre_data,
|
| + v8::Handle<String> script_data) {
|
| i::Handle<i::String> str = Utils::OpenHandle(*source);
|
| i::Isolate* isolate = str->GetIsolate();
|
| ON_BAILOUT(isolate, "v8::Script::Compile()", return Local<Script>());
|
| LOG_API(isolate, "Script::Compile");
|
| ENTER_V8(isolate);
|
| - Local<Script> generic = New(source, origin, pre_data);
|
| + Local<Script> generic = New(source, origin, pre_data, script_data);
|
| if (generic.IsEmpty())
|
| return generic;
|
| i::Handle<i::Object> obj = Utils::OpenHandle(*generic);
|
| @@ -1704,9 +1707,10 @@ Local<Script> Script::Compile(v8::Handle<String> source,
|
|
|
|
|
| Local<Script> Script::Compile(v8::Handle<String> source,
|
| - v8::Handle<Value> file_name) {
|
| + v8::Handle<Value> file_name,
|
| + v8::Handle<String> script_data) {
|
| ScriptOrigin origin(file_name);
|
| - return Compile(source, &origin);
|
| + return Compile(source, &origin, 0, script_data);
|
| }
|
|
|
|
|
| @@ -1805,6 +1809,22 @@ Handle<Value> Script::GetScriptName() {
|
| }
|
|
|
|
|
| +void Script::SetData(v8::Handle<String> data) {
|
| + 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);
|
| + LOG_API(isolate, "Script::SetData");
|
| + {
|
| + i::HandleScope scope(isolate);
|
| + 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(function_info->script()));
|
| + script->set_data(*raw_data);
|
| + }
|
| +}
|
| +
|
| +
|
| // --- E x c e p t i o n s ---
|
|
|
|
|
| @@ -1960,6 +1980,21 @@ v8::Handle<Value> Message::GetScriptResourceName() const {
|
| }
|
|
|
|
|
| +v8::Handle<Value> Message::GetScriptData() const {
|
| + i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
|
| + ENTER_V8(isolate);
|
| + EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate));
|
| + i::Handle<i::JSMessageObject> message =
|
| + i::Handle<i::JSMessageObject>::cast(Utils::OpenHandle(this));
|
| + // Return this.script.data.
|
| + i::Handle<i::JSValue> script =
|
| + i::Handle<i::JSValue>::cast(i::Handle<i::Object>(message->script(),
|
| + isolate));
|
| + i::Handle<i::Object> data(i::Script::cast(script->value())->data(), isolate);
|
| + return scope.Escape(Utils::ToLocal(data));
|
| +}
|
| +
|
| +
|
| v8::Handle<v8::StackTrace> Message::GetStackTrace() const {
|
| i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
|
| ENTER_V8(isolate);
|
|
|