Reviewers: aandrey, dcarney, Yang,
Description:
Provide method for getting Isolate by v8::Message
v8::Message::GetIsolate will allow to avoid v8::Isolate::GetCurrent calls in
Blink message listeners.
BUG=None
LOG=Y
Please review this at https://codereview.chromium.org/1015643002/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+18, -0 lines):
M include/v8.h
M src/api.cc
M test/cctest/test-api.cc
Index: include/v8.h
diff --git a/include/v8.h b/include/v8.h
index
db625eeb4242be3d594628fdf8f2f450d0ef894e..89ffa0275ff97d8ca576e649285ef23591adc633
100644
--- a/include/v8.h
+++ b/include/v8.h
@@ -1478,6 +1478,11 @@ class V8_EXPORT Message {
*/
bool IsSharedCrossOrigin() const;
+ /**
+ * Returns the Isolate where the error occured.
+ */
+ Isolate* GetIsolate() const;
+
// TODO(1245381): Print to a string instead of on a FILE.
static void PrintCurrentStackTrace(Isolate* isolate, FILE* out);
Index: src/api.cc
diff --git a/src/api.cc b/src/api.cc
index
7eeb57d75699ecfaae6bfa82a3ebd73a62593d1e..3166046091153217c37f9963a321ee2907ebebb3
100644
--- a/src/api.cc
+++ b/src/api.cc
@@ -2301,6 +2301,11 @@ bool Message::IsSharedCrossOrigin() const {
}
+v8::Isolate* Message::GetIsolate() const {
+ return reinterpret_cast<Isolate*>(Utils::OpenHandle(this)->GetIsolate());
+}
+
+
MaybeLocal<String> Message::GetSourceLine(Local<Context> context) const {
PREPARE_FOR_EXECUTION(context, "v8::Message::GetSourceLine()", String);
i::Handle<i::Object> result;
Index: test/cctest/test-api.cc
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
index
7016bf7ac2b135bfc444664b92d38af527198f2d..30903a114f8c346f1df1443fb72b201e9f85b2b5
100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -3840,6 +3840,7 @@ static void check_message_1(v8::Handle<v8::Message>
message,
CHECK(data->IsNumber());
CHECK_EQ(1337, data->Int32Value());
CHECK(!message->IsSharedCrossOrigin());
+ CHECK_EQ(CcTest::isolate(), message->GetIsolate());
message_received = true;
}
@@ -3861,6 +3862,9 @@ static void check_message_2(v8::Handle<v8::Message>
message,
v8::Handle<Value> data) {
LocalContext context;
CHECK(data->IsObject());
+ v8::Handle<v8::Object> data_obj = data.As<v8::Object>();
+ CHECK(message->GetIsolate());
+ CHECK_EQ(data_obj->GetIsolate(), message->GetIsolate());
v8::Local<v8::Value> hidden_property =
v8::Object::Cast(*data)->GetHiddenValue(v8_str("hidden key"));
CHECK(v8_str("hidden value")->Equals(hidden_property));
@@ -3893,6 +3897,7 @@ static void check_message_3(v8::Handle<v8::Message>
message,
CHECK(message->GetScriptOrigin().ResourceIsEmbedderDebugScript()->Value());
CHECK_EQ(6.75, message->GetScriptOrigin().ResourceName()->NumberValue());
CHECK_EQ(7.40, message->GetScriptOrigin().SourceMapUrl()->NumberValue());
+ CHECK_EQ(CcTest::isolate(), message->GetIsolate());
message_received = true;
}
@@ -3921,6 +3926,7 @@ static void check_message_4(v8::Handle<v8::Message>
message,
v8::Handle<Value> data) {
CHECK(!message->IsSharedCrossOrigin());
CHECK_EQ(6.75, message->GetScriptOrigin().ResourceName()->NumberValue());
+ CHECK_EQ(CcTest::isolate(), message->GetIsolate());
message_received = true;
}
@@ -3948,6 +3954,7 @@ static void check_message_5a(v8::Handle<v8::Message>
message,
v8::Handle<Value> data) {
CHECK(message->IsSharedCrossOrigin());
CHECK_EQ(6.75, message->GetScriptOrigin().ResourceName()->NumberValue());
+ CHECK_EQ(CcTest::isolate(), message->GetIsolate());
message_received = true;
}
@@ -3956,6 +3963,7 @@ static void check_message_5b(v8::Handle<v8::Message>
message,
v8::Handle<Value> data) {
CHECK(!message->IsSharedCrossOrigin());
CHECK_EQ(6.75, message->GetScriptOrigin().ResourceName()->NumberValue());
+ CHECK_EQ(CcTest::isolate(), message->GetIsolate());
message_received = true;
}
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.