Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在react native js运行时的v8运行时实现中,这个“context_u2;.Reset”做了什么? 我是C++和V8引擎的NoOB。当我检查v8 JSI实现的源代码时,我发现了一个我无法理解的地方:这是v8运行时的构造函数:(请参见下面的注释行) V8Runtime::V8Runtime(const std::string&timezoneId){ 如果(!s_平台){ s_platform=v8::platform::NewDefaultPlatform(); v8::v8::InitializeCU(); v8::v8::InitializePlatform(s_platform.get()); v8::v8::Initialize(); } arrayBufferAllocator_u2;.reset( v8::ArrayBuffer::Allocator::NewDefaultAllocator()); v8::Isolate::CreateParams CreateParams; createParams.array_buffer_allocator=arrayBufferAllocator_.get(); 隔离=v8::隔离::新建(createParams); #如果已定义(\uuuu ANDROID\uuuu) 如果(!timezoneId.empty()){ 隔离->DateTimeConfigurationChangeNotification( v8::Isolate::TimeZoneDetection::kCustom,timezoneId.c_str()); } #恩迪夫 隔离->输入(); v8::手镜镜镜(隔离); 上下文重置(隔离,CreateGlobalContext(隔离)); //重置的目的是什么?为什么在创建上下文的全局上下文之后需要重置上下文? context.Get(隔离)->Enter(); }_C++_React Native_V8 - Fatal编程技术网

在react native js运行时的v8运行时实现中,这个“context_u2;.Reset”做了什么? 我是C++和V8引擎的NoOB。当我检查v8 JSI实现的源代码时,我发现了一个我无法理解的地方:这是v8运行时的构造函数:(请参见下面的注释行) V8Runtime::V8Runtime(const std::string&timezoneId){ 如果(!s_平台){ s_platform=v8::platform::NewDefaultPlatform(); v8::v8::InitializeCU(); v8::v8::InitializePlatform(s_platform.get()); v8::v8::Initialize(); } arrayBufferAllocator_u2;.reset( v8::ArrayBuffer::Allocator::NewDefaultAllocator()); v8::Isolate::CreateParams CreateParams; createParams.array_buffer_allocator=arrayBufferAllocator_.get(); 隔离=v8::隔离::新建(createParams); #如果已定义(\uuuu ANDROID\uuuu) 如果(!timezoneId.empty()){ 隔离->DateTimeConfigurationChangeNotification( v8::Isolate::TimeZoneDetection::kCustom,timezoneId.c_str()); } #恩迪夫 隔离->输入(); v8::手镜镜镜(隔离); 上下文重置(隔离,CreateGlobalContext(隔离)); //重置的目的是什么?为什么在创建上下文的全局上下文之后需要重置上下文? context.Get(隔离)->Enter(); }

在react native js运行时的v8运行时实现中,这个“context_u2;.Reset”做了什么? 我是C++和V8引擎的NoOB。当我检查v8 JSI实现的源代码时,我发现了一个我无法理解的地方:这是v8运行时的构造函数:(请参见下面的注释行) V8Runtime::V8Runtime(const std::string&timezoneId){ 如果(!s_平台){ s_platform=v8::platform::NewDefaultPlatform(); v8::v8::InitializeCU(); v8::v8::InitializePlatform(s_platform.get()); v8::v8::Initialize(); } arrayBufferAllocator_u2;.reset( v8::ArrayBuffer::Allocator::NewDefaultAllocator()); v8::Isolate::CreateParams CreateParams; createParams.array_buffer_allocator=arrayBufferAllocator_.get(); 隔离=v8::隔离::新建(createParams); #如果已定义(\uuuu ANDROID\uuuu) 如果(!timezoneId.empty()){ 隔离->DateTimeConfigurationChangeNotification( v8::Isolate::TimeZoneDetection::kCustom,timezoneId.c_str()); } #恩迪夫 隔离->输入(); v8::手镜镜镜(隔离); 上下文重置(隔离,CreateGlobalContext(隔离)); //重置的目的是什么?为什么在创建上下文的全局上下文之后需要重置上下文? context.Get(隔离)->Enter(); },c++,react-native,v8,C++,React Native,V8,下面是CreateGlobalContext的代码: v8::本地V8Runtime::CreateGlobalContext(v8::隔离*隔离){ v8::手镜镜镜(隔离); v8::Local global=v8::ObjectTemplate::New(隔离); 全局->设置( v8::String::NewFromUtf8(隔离,“”v8runtime“,v8::NewStringType::kNormal) .ToLocalChecked(), v8::FunctionTemplat

下面是
CreateGlobalContext
的代码:

v8::本地V8Runtime::CreateGlobalContext(v8::隔离*隔离){
v8::手镜镜镜(隔离);
v8::Local global=v8::ObjectTemplate::New(隔离);
全局->设置(
v8::String::NewFromUtf8(隔离,“”v8runtime“,v8::NewStringType::kNormal)
.ToLocalChecked(),
v8::FunctionTemplate::New(隔离,V8Runtime::GetRuntimeInfo));
返回v8::Context::New(隔离、空ptr、全局);
}
repo的起源是react原生js运行时的v8实现。
提前谢谢你

上下文
是一个全局句柄(
v8::global
),它的
Reset(…)
方法是指定给它包装的指针的方式。所以它被“重置”,从未初始化到在这里存储新创建的全局上下文


这可能只是防御性编程博杰

不,防御性编程与此无关

就把它当作一项任务吧博杰


对。如果
context
是一个
v8::Local
(由于其他原因,这将是一个问题),那么您可以在这里看到
context=CreateGlobalContext(…)

这可能只是防御性编程。把它当作一项任务。