Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: src/JsValue.cpp

Issue 5598762307158016: Issue 1550 - Get rid of V8ValueHolder.h (Closed)
Patch Set: fix outdated comment Created Jan. 22, 2016, 2:34 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/JsValue.cpp
diff --git a/src/JsValue.cpp b/src/JsValue.cpp
index df4b72e33be2dc2819994fcc7e5aa1e525022298..1bc74903758f1911259d99c1dc48b16942fe6bcd 100644
--- a/src/JsValue.cpp
+++ b/src/JsValue.cpp
@@ -25,18 +25,23 @@
AdblockPlus::JsValue::JsValue(AdblockPlus::JsEnginePtr jsEngine,
v8::Handle<v8::Value> value)
: jsEngine(jsEngine),
- value(jsEngine->isolate, value)
+ value(new v8::Persistent<v8::Value>(jsEngine->isolate, value))
{
}
-AdblockPlus::JsValue::JsValue(AdblockPlus::JsValuePtr value)
- : jsEngine(value->jsEngine),
- value(value->value)
+AdblockPlus::JsValue::JsValue(AdblockPlus::JsValue&& src)
+ : jsEngine(src.jsEngine),
+ value(std::move(src.value))
{
}
AdblockPlus::JsValue::~JsValue()
{
+ if (value)
+ {
+ value->Dispose();
Eric 2016/01/26 18:37:40 The previous code had "Dispose(isolate)". Was ther
sergei 2016/01/27 10:21:14 The implementation of Dispose(isolate) is the foll
Eric 2016/02/08 19:50:07 Clear as mud. A version number would a much bette
+ value.reset();
+ }
}
bool AdblockPlus::JsValue::IsUndefined() const
@@ -163,7 +168,7 @@ void AdblockPlus::JsValue::SetProperty(const std::string& name, v8::Handle<v8::V
v8::Local<v8::Value> AdblockPlus::JsValue::UnwrapValue() const
{
- return v8::Local<v8::Value>::New(jsEngine->isolate, value);
+ return v8::Local<v8::Value>::New(jsEngine->isolate, *value);
}
void AdblockPlus::JsValue::SetProperty(const std::string& name, const std::string& val)
@@ -208,7 +213,8 @@ AdblockPlus::JsValuePtr AdblockPlus::JsValue::Call(const JsValueList& params, Js
const JsContext context(jsEngine);
if (!thisPtr)
{
- v8::Local<v8::Context> localContext = v8::Local<v8::Context>::New(jsEngine->isolate, jsEngine->context);
+ v8::Local<v8::Context> localContext = v8::Local<v8::Context>::New(
+ jsEngine->isolate, *jsEngine->context);
thisPtr = JsValuePtr(new JsValue(jsEngine, localContext->Global()));
}
if (!thisPtr->IsObject())
« src/FilterEngine.cpp ('K') | « src/JsEngine.cpp ('k') | src/Notification.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld