Skip to content

Commit 8b6c856

Browse files
committedJan 27, 2021
fix(android): release module contexts on dispose
1 parent 98507d8 commit 8b6c856

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed
 

Diff for: ‎android/runtime/v8/src/native/KrollNativeBindings.gperf

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace titanium {
1212
struct BindEntry;
1313
%%
1414
natives, KrollBindings::initNatives, NULL
15-
evals, EvaluateModule::Initialize, NULL
15+
evals, EvaluateModule::Initialize, EvaluateModule::Dispose
1616
assets, AssetsModule::Initialize, NULL
1717
API, APIModule::Initialize, APIModule::Dispose
1818
Titanium, KrollBindings::initTitanium, KrollBindings::disposeTitanium

Diff for: ‎android/runtime/v8/src/native/modules/EvaluateModule.cpp

+9-1
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,20 @@ namespace titanium {
6767
SetMethod(context, isolate, target, "runAsModule", EvaluateModule::RunAsModule);
6868
}
6969

70+
void EvaluateModule::Dispose(Isolate *isolate)
71+
{
72+
for (auto persistentModuleContext : EvaluateModule::module_contexts) {
73+
persistentModuleContext.Reset();
74+
}
75+
EvaluateModule::module_contexts.clear();
76+
}
77+
7078
void EvaluateModule::GlobalSetterCallback(Local<String> key, Local<Value> value, const PropertyCallbackInfo<Value>& info)
7179
{
7280
Isolate* isolate = info.GetIsolate();
7381

7482
// Iterate through current module contexts.
75-
for (const auto persistentModuleContext : EvaluateModule::module_contexts) {
83+
for (auto persistentModuleContext : EvaluateModule::module_contexts) {
7684

7785
if (!persistentModuleContext.IsEmpty()) {
7886

Diff for: ‎android/runtime/v8/src/native/modules/EvaluateModule.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ namespace titanium {
1515
class EvaluateModule {
1616
public:
1717
static void Initialize(Local<Object> target, Local<Context> context);
18-
static void GlobalSetterCallback(Local<String> key, Local<Value> value, const PropertyCallbackInfo<Value>& info);
18+
static void Dispose(Isolate* isolate);
1919

20+
static void GlobalSetterCallback(Local<String> key, Local<Value> value, const PropertyCallbackInfo<Value>& info);
2021
static MaybeLocal<Module> ModuleCallback(Local<Context> context, Local<String> specifier, Local<Module> referrer);
2122

2223
static void RunAsModule(const FunctionCallbackInfo<Value> &args);

0 commit comments

Comments
 (0)