@@ -177,14 +177,14 @@ value_t fl_invoke_julia_macro(fl_context_t *fl_ctx, value_t *args, uint32_t narg
177
177
fl_gc_handle (fl_ctx , & scm );
178
178
value_t scmresult ;
179
179
jl_module_t * defmod = mfunc -> def -> module ;
180
- if (defmod == NULL || defmod == ptls -> current_module ) {
181
- scmresult = fl_cons (fl_ctx , scm , fl_ctx -> F );
182
- }
183
- else {
184
- value_t opaque = cvalue (fl_ctx , jl_ast_ctx (fl_ctx )-> jvtype , sizeof (void * ));
185
- * (jl_value_t * * )cv_data ((cvalue_t * )ptr (opaque )) = (jl_value_t * )defmod ;
186
- scmresult = fl_cons (fl_ctx , scm , opaque );
187
- }
180
+ /* if (defmod == NULL || defmod == ptls->current_module) { */
181
+ /* scmresult = fl_cons(fl_ctx, scm, fl_ctx->F); */
182
+ /* } */
183
+ /* else { */
184
+ value_t opaque = cvalue (fl_ctx , jl_ast_ctx (fl_ctx )-> jvtype , sizeof (void * ));
185
+ * (jl_value_t * * )cv_data ((cvalue_t * )ptr (opaque )) = (jl_value_t * )defmod ;
186
+ scmresult = fl_cons (fl_ctx , scm , opaque );
187
+ /* } */
188
188
fl_free_gc_handles (fl_ctx , 1 );
189
189
190
190
JL_GC_POP ();
@@ -610,6 +610,19 @@ static value_t julia_to_scm_(fl_context_t *fl_ctx, jl_value_t *v)
610
610
return julia_to_list2 (fl_ctx , (jl_value_t * )inert_sym , jl_fieldref (v ,0 ));
611
611
if (jl_typeis (v , jl_newvarnode_type ))
612
612
return julia_to_list2 (fl_ctx , (jl_value_t * )newvar_sym , jl_fieldref (v ,0 ));
613
+ if (jl_typeis (v , jl_globalref_type )) {
614
+ jl_module_t * m = jl_globalref_mod (v );
615
+ jl_sym_t * sym = jl_globalref_name (v );
616
+ if (m == jl_core_module )
617
+ return julia_to_list2 (fl_ctx , (jl_value_t * )core_sym ,
618
+ (jl_value_t * )sym );
619
+ value_t args = julia_to_list2 (fl_ctx , (jl_value_t * )m , (jl_value_t * )sym );
620
+ fl_gc_handle (fl_ctx , & args );
621
+ value_t hd = julia_to_scm_ (fl_ctx , (jl_value_t * )globalref_sym );
622
+ value_t scmv = fl_cons (fl_ctx , hd , args );
623
+ fl_free_gc_handles (fl_ctx , 1 );
624
+ return scmv ;
625
+ }
613
626
if (jl_is_long (v ) && fits_fixnum (jl_unbox_long (v )))
614
627
return fixnum (jl_unbox_long (v ));
615
628
if (jl_is_ssavalue (v ))
0 commit comments