@@ -113,7 +113,7 @@ static const JNINativeMethod callbacks[] = {
113113 CALLBACK (" notifyPromiseHook" , " (ILjava/lang/Object;Ljava/lang/Object;)V" , &GraalNotifyPromiseHook),
114114 CALLBACK (" notifyPromiseRejectionTracker" , " (Ljava/lang/Object;ILjava/lang/Object;)V" , &GraalNotifyPromiseRejectionTracker),
115115 CALLBACK (" notifyImportMetaInitializer" , " (Ljava/lang/Object;Ljava/lang/Object;)V" , &GraalNotifyImportMetaInitializer),
116- CALLBACK (" executeResolveCallback" , " (JLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" , &GraalExecuteResolveCallback),
116+ CALLBACK (" executeResolveCallback" , " (JLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Z )Ljava/lang/Object;" , &GraalExecuteResolveCallback),
117117 CALLBACK (" executeImportModuleDynamicallyCallback" , " (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" , &GraalExecuteImportModuleDynamicallyCallback),
118118 CALLBACK (" executeImportModuleWithPhaseDynamicallyCallback" , " (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object;" , &GraalExecuteImportModuleWithPhaseDynamicallyCallback),
119119 CALLBACK (" executePrepareStackTraceCallback" , " (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" , &GraalExecutePrepareStackTraceCallback),
@@ -771,7 +771,7 @@ void GraalNotifyImportMetaInitializer(JNIEnv* env, jclass nativeAccess, jobject
771771 );
772772}
773773
774- jobject GraalExecuteResolveCallback (JNIEnv* env, jclass nativeAccess, jlong callback, jobject java_context, jobject java_specifier, jobject java_import_attributes, jobject java_referrer) {
774+ jobject GraalExecuteResolveCallback (JNIEnv* env, jclass nativeAccess, jlong callback, jobject java_context, jobject java_specifier, jobject java_import_attributes, jobject java_referrer, jboolean source_phase ) {
775775 GraalIsolate* graal_isolate = CurrentIsolateChecked ();
776776 v8::Isolate* v8_isolate = reinterpret_cast <v8::Isolate*> (graal_isolate);
777777 v8::HandleScope scope (v8_isolate);
@@ -783,18 +783,32 @@ jobject GraalExecuteResolveCallback(JNIEnv* env, jclass nativeAccess, jlong call
783783 v8::String* v8_specifier = reinterpret_cast <v8::String*> (graal_specifier);
784784 v8::FixedArray* v8_import_attributes = reinterpret_cast <v8::FixedArray*> (graal_import_attributes);
785785 v8::Module* v8_referrer = reinterpret_cast <v8::Module*> (graal_referrer);
786- v8::MaybeLocal<v8::Module> v8_result = ((v8::Module::ResolveModuleCallback) callback)(
787- v8::Local<v8::Context>::New (v8_isolate, v8_context),
788- v8::Local<v8::String>::New (v8_isolate, v8_specifier),
789- v8::Local<v8::FixedArray>::New (v8_isolate, v8_import_attributes),
790- v8::Local<v8::Module>::New (v8_isolate, v8_referrer)
791- );
786+ v8::Local<v8::Context> local_context = v8::Local<v8::Context>::New (v8_isolate, v8_context);
787+ v8::Local<v8::String> local_specifier = v8::Local<v8::String>::New (v8_isolate, v8_specifier);
788+ v8::Local<v8::FixedArray> local_import_attributes = v8::Local<v8::FixedArray>::New (v8_isolate, v8_import_attributes);
789+ v8::Local<v8::Module> local_referrer = v8::Local<v8::Module>::New (v8_isolate, v8_referrer);
790+ v8::MaybeLocal<v8::Data> v8_result;
791+ if (source_phase) {
792+ v8_result = ((v8::Module::ResolveSourceCallback) callback)(
793+ local_context,
794+ local_specifier,
795+ local_import_attributes,
796+ local_referrer
797+ );
798+ } else {
799+ v8_result = ((v8::Module::ResolveModuleCallback) callback)(
800+ local_context,
801+ local_specifier,
802+ local_import_attributes,
803+ local_referrer
804+ );
805+ }
792806 if (v8_result.IsEmpty ()) {
793807 return NULL ;
794808 } else {
795- v8::Local<v8::Module> v8_module = v8_result.ToLocalChecked ();
796- GraalModule* graal_module = reinterpret_cast <GraalModule *> (*v8_module );
797- return env->NewLocalRef (graal_module ->GetJavaObject ());
809+ v8::Local<v8::Data> local_result = v8_result.ToLocalChecked ();
810+ GraalHandleContent* graal_result = reinterpret_cast <GraalHandleContent *> (*local_result );
811+ return env->NewLocalRef (graal_result ->GetJavaObject ());
798812 }
799813}
800814
0 commit comments