@@ -39,7 +39,7 @@ void CallbackHandlers::Init(Isolate *isolate, ObjectManager *objectManager)
39
39
RESOLVE_CLASS_METHOD_ID = env.GetMethodID (RUNTIME_CLASS, " resolveClass" , " (Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Class;" );
40
40
assert (RESOLVE_CLASS_METHOD_ID != nullptr );
41
41
42
- CURRENT_OBJECTID_FIELD_ID = env.GetStaticFieldID (RUNTIME_CLASS, " currentObjectId" , " I" );
42
+ CURRENT_OBJECTID_FIELD_ID = env.GetFieldID (RUNTIME_CLASS, " currentObjectId" , " I" );
43
43
assert (CURRENT_OBJECTID_FIELD_ID != nullptr );
44
44
45
45
MAKE_INSTANCE_STRONG_ID = env.GetMethodID (RUNTIME_CLASS, " makeInstanceStrong" , " (Ljava/lang/Object;I)V" );
@@ -85,25 +85,25 @@ bool CallbackHandlers::RegisterInstance(Isolate *isolate, const Local<Object>& j
85
85
86
86
jobject instance;
87
87
88
- env.SetStaticIntField (RUNTIME_CLASS, CURRENT_OBJECTID_FIELD_ID, javaObjectID);
89
-
90
- if (argWrapper.type == ArgType::Interface)
91
- {
92
- instance = env.NewObject (generatedJavaClass, mi.mid );
93
- }
94
- else
95
88
{
96
- // resolve arguments before passing them on to the constructor
97
- JsArgConverter argConverter (argWrapper.args , mi.signature , argWrapper.outerThis );
98
- auto ctorArgs = argConverter.ToArgs ();
89
+ JavaObjectIdScope objIdScope (env, CURRENT_OBJECTID_FIELD_ID, runtime->GetJavaRuntime (), javaObjectID);
99
90
100
- instance = env.NewObjectA (generatedJavaClass, mi.mid , ctorArgs);
91
+ if (argWrapper.type == ArgType::Interface)
92
+ {
93
+ instance = env.NewObject (generatedJavaClass, mi.mid );
94
+ }
95
+ else
96
+ {
97
+ // resolve arguments before passing them on to the constructor
98
+ JsArgConverter argConverter (argWrapper.args , mi.signature , argWrapper.outerThis );
99
+ auto ctorArgs = argConverter.ToArgs ();
100
+
101
+ instance = env.NewObjectA (generatedJavaClass, mi.mid , ctorArgs);
102
+ }
101
103
}
102
104
103
105
env.CallVoidMethod (runtime->GetJavaRuntime (), MAKE_INSTANCE_STRONG_ID, instance, javaObjectID);
104
106
105
- env.SetStaticIntField (RUNTIME_CLASS, CURRENT_OBJECTID_FIELD_ID, -1 );
106
-
107
107
AdjustAmountOfExternalAllocatedMemory (env, isolate);
108
108
109
109
JniLocalRef localInstance (instance);
@@ -137,14 +137,14 @@ jclass CallbackHandlers::ResolveClass(Isolate *isolate, const string& fullClassn
137
137
{
138
138
JEnv env;
139
139
140
- // get needed arguments in order to load binding
140
+ // get needed arguments in order to load binding
141
141
JniLocalRef javaFullClassName (env.NewStringUTF (fullClassname.c_str ()));
142
142
143
143
jobjectArray methodOverrides = GetMethodOverrides (env, implementationObject);
144
144
145
145
auto runtime = Runtime::GetRuntime (isolate);
146
146
147
- // create or load generated binding (java class)
147
+ // create or load generated binding (java class)
148
148
JniLocalRef generatedClass (env.CallObjectMethod (runtime->GetJavaRuntime (), RESOLVE_CLASS_METHOD_ID, (jstring) javaFullClassName, methodOverrides));
149
149
globalRefToGeneratedClass = static_cast <jclass>(env.NewGlobalRef (generatedClass));
150
150
@@ -593,9 +593,9 @@ int64_t CallbackHandlers::AdjustAmountOfExternalAllocatedMemory(JEnv& env, Isola
593
593
int64_t changeInBytes = env.CallLongMethod (runtime->GetJavaRuntime (), GET_CHANGE_IN_BYTES_OF_USED_MEMORY_METHOD_ID);
594
594
595
595
int64_t adjustedValue = (changeInBytes != 0 )
596
- ? isolate->AdjustAmountOfExternalAllocatedMemory (changeInBytes)
597
- :
598
- 0 ;
596
+ ? isolate->AdjustAmountOfExternalAllocatedMemory (changeInBytes)
597
+ :
598
+ 0 ;
599
599
600
600
return adjustedValue;
601
601
}
0 commit comments