@@ -330,13 +330,13 @@ LoadResult GoLanguageModule::OnPluginLoad(PluginRef plugin) {
330
330
if (IsMethodPrimitive (method)) {
331
331
methods.emplace_back (method, func);
332
332
} else {
333
- auto function = std::make_unique<Function> (_rt);
334
- func = function-> GetJitFunc (method, &InternalCall, func);
333
+ JitCallback callback (_rt);
334
+ func = callback. GetJitFunc (method, &InternalCall, func);
335
335
if (!func) {
336
336
funcErrors.emplace_back (method.GetName ());
337
337
continue ;
338
338
}
339
- _functions.emplace_back (std::move (function ));
339
+ _functions.emplace_back (std::move (callback ));
340
340
methods.emplace_back (method, func);
341
341
}
342
342
} else {
@@ -402,7 +402,7 @@ void GoLanguageModule::GetNativeMethod(std::string_view methodName, plugify::Mem
402
402
}
403
403
404
404
// C++ to Go
405
- void GoLanguageModule::InternalCall (MethodRef method, MemAddr addr, const Parameters* p, uint8_t count, const ReturnValue * ret) {
405
+ void GoLanguageModule::InternalCall (MethodRef method, MemAddr addr, const JitCallback:: Parameters* p, uint8_t count, const JitCallback::Return * ret) {
406
406
PropertyRef retProp = method.GetReturnType ();
407
407
ValueType retType = retProp.GetType ();
408
408
std::span<const PropertyRef> paramProps = method.GetParamTypes ();
@@ -699,244 +699,244 @@ void GoLanguageModule::InternalCall(MethodRef method, MemAddr addr, const Parame
699
699
}
700
700
case ValueType::Bool: {
701
701
bool val = dcCallBool (vm, addr);
702
- ret->SetReturnPtr (val);
702
+ ret->SetReturn (val);
703
703
break ;
704
704
}
705
705
case ValueType::Char8: {
706
706
char16_t val = static_cast <char16_t >(dcCallChar (vm, addr));
707
- ret->SetReturnPtr (val);
707
+ ret->SetReturn (val);
708
708
break ;
709
709
}
710
710
case ValueType::Char16: {
711
711
char16_t val = static_cast <char16_t >(dcCallShort (vm, addr));
712
- ret->SetReturnPtr (val);
712
+ ret->SetReturn (val);
713
713
break ;
714
714
}
715
715
case ValueType::Int8: {
716
716
int8_t val = dcCallChar (vm, addr);
717
- ret->SetReturnPtr (val);
717
+ ret->SetReturn (val);
718
718
break ;
719
719
}
720
720
case ValueType::Int16: {
721
721
int16_t val = dcCallShort (vm, addr);
722
- ret->SetReturnPtr (val);
722
+ ret->SetReturn (val);
723
723
break ;
724
724
}
725
725
case ValueType::Int32: {
726
726
int32_t val = dcCallInt (vm, addr);
727
- ret->SetReturnPtr (val);
727
+ ret->SetReturn (val);
728
728
break ;
729
729
}
730
730
case ValueType::Int64: {
731
731
int64_t val = dcCallLongLong (vm, addr);
732
- ret->SetReturnPtr (val);
732
+ ret->SetReturn (val);
733
733
break ;
734
734
}
735
735
case ValueType::UInt8 : {
736
736
uint8_t val = static_cast <uint8_t >(dcCallChar (vm, addr));
737
- ret->SetReturnPtr (val);
737
+ ret->SetReturn (val);
738
738
break ;
739
739
}
740
740
case ValueType::UInt16 : {
741
741
uint16_t val = static_cast <uint16_t >(dcCallShort (vm, addr));
742
- ret->SetReturnPtr (val);
742
+ ret->SetReturn (val);
743
743
break ;
744
744
}
745
745
case ValueType::UInt32 : {
746
746
uint32_t val = static_cast <uint32_t >(dcCallInt (vm, addr));
747
- ret->SetReturnPtr (val);
747
+ ret->SetReturn (val);
748
748
break ;
749
749
}
750
750
case ValueType::UInt64 : {
751
751
uint64_t val = static_cast <uint64_t >(dcCallLongLong (vm, addr));
752
- ret->SetReturnPtr (val);
752
+ ret->SetReturn (val);
753
753
break ;
754
754
}
755
755
case ValueType::Pointer: {
756
756
void * val = dcCallPointer (vm, addr);
757
- ret->SetReturnPtr (val);
757
+ ret->SetReturn (val);
758
758
break ;
759
759
}
760
760
case ValueType::Float: {
761
761
float val = dcCallFloat (vm, addr);
762
- ret->SetReturnPtr (val);
762
+ ret->SetReturn (val);
763
763
break ;
764
764
}
765
765
case ValueType::Double: {
766
766
double val = dcCallDouble (vm, addr);
767
- ret->SetReturnPtr (val);
767
+ ret->SetReturn (val);
768
768
break ;
769
769
}
770
770
case ValueType::Function: {
771
771
void * val = dcCallPointer (vm, addr);
772
- ret->SetReturnPtr (val);
772
+ ret->SetReturn (val);
773
773
break ;
774
774
}
775
775
case ValueType::Vector2: {
776
776
Vector2 source;
777
777
dcCallAggr (vm, addr, ag, &source);
778
- ret->SetReturnPtr (source);
778
+ ret->SetReturn (source);
779
779
break ;
780
780
}
781
781
#if GOLM_PLATFORM_WINDOWS
782
782
case ValueType::Vector3: {
783
783
auto * dest = p->GetArgument <Vector3*>(0 );
784
784
dcCallAggr (vm, addr, ag, dest);
785
- ret->SetReturnPtr (dest);
785
+ ret->SetReturn (dest);
786
786
break ;
787
787
}
788
788
case ValueType::Vector4: {
789
789
auto * dest = p->GetArgument <Vector4*>(0 );
790
790
dcCallAggr (vm, addr, ag, dest);
791
- ret->SetReturnPtr (dest);
791
+ ret->SetReturn (dest);
792
792
break ;
793
793
}
794
794
#else
795
795
case ValueType::Vector3: {
796
796
Vector3 source;
797
797
dcCallAggr (vm, addr, ag, &source);
798
- ret->SetReturnPtr (source);
798
+ ret->SetReturn (source);
799
799
break ;
800
800
}
801
801
case ValueType::Vector4: {
802
802
Vector4 source;
803
803
dcCallAggr (vm, addr, ag, &source);
804
- ret->SetReturnPtr (source);
804
+ ret->SetReturn (source);
805
805
break ;
806
806
}
807
807
#endif
808
808
case ValueType::Matrix4x4: {
809
809
auto * dest = p->GetArgument <Matrix4x4*>(0 );
810
810
dcCallAggr (vm, addr, ag, dest);
811
- ret->SetReturnPtr (dest);
811
+ ret->SetReturn (dest);
812
812
break ;
813
813
}
814
814
case ValueType::String: {
815
815
auto * dest = p->GetArgument <plg::string*>(0 );
816
816
GoString source;
817
817
dcCallAggr (vm, addr, ag, &source);
818
818
CopyGoStringToStringReturn (source, *dest);
819
- ret->SetReturnPtr (dest);
819
+ ret->SetReturn (dest);
820
820
break ;
821
821
}
822
822
case ValueType::ArrayBool: {
823
823
auto * dest = p->GetArgument <std::vector<bool >*>(0 );
824
824
GoSlice source;
825
825
dcCallAggr (vm, addr, ag, &source);
826
826
CopyGoSliceToVectorReturn (source, *dest);
827
- ret->SetReturnPtr (dest);
827
+ ret->SetReturn (dest);
828
828
break ;
829
829
}
830
830
case ValueType::ArrayChar8: {
831
831
auto * dest = p->GetArgument <std::vector<char >*>(0 );
832
832
GoSlice source;
833
833
dcCallAggr (vm, addr, ag, &source);
834
834
CopyGoSliceToVectorReturn (source, *dest);
835
- ret->SetReturnPtr (dest);
835
+ ret->SetReturn (dest);
836
836
break ;
837
837
}
838
838
case ValueType::ArrayChar16: {
839
839
auto * dest = p->GetArgument <std::vector<char16_t >*>(0 );
840
840
GoSlice source;
841
841
dcCallAggr (vm, addr, ag, &source);
842
842
CopyGoSliceToVectorReturn (source, *dest);
843
- ret->SetReturnPtr (dest);
843
+ ret->SetReturn (dest);
844
844
break ;
845
845
}
846
846
case ValueType::ArrayInt8: {
847
847
auto * dest = p->GetArgument <std::vector<int8_t >*>(0 );
848
848
GoSlice source;
849
849
dcCallAggr (vm, addr, ag, &source);
850
850
CopyGoSliceToVectorReturn (source, *dest);
851
- ret->SetReturnPtr (dest);
851
+ ret->SetReturn (dest);
852
852
break ;
853
853
}
854
854
case ValueType::ArrayInt16: {
855
855
auto * dest = p->GetArgument <std::vector<int16_t >*>(0 );
856
856
GoSlice source;
857
857
dcCallAggr (vm, addr, ag, &source);
858
858
CopyGoSliceToVectorReturn (source, *dest);
859
- ret->SetReturnPtr (dest);
859
+ ret->SetReturn (dest);
860
860
break ;
861
861
}
862
862
case ValueType::ArrayInt32: {
863
863
auto * dest = p->GetArgument <std::vector<int32_t >*>(0 );
864
864
GoSlice source;
865
865
dcCallAggr (vm, addr, ag, &source);
866
866
CopyGoSliceToVectorReturn (source, *dest);
867
- ret->SetReturnPtr (dest);
867
+ ret->SetReturn (dest);
868
868
break ;
869
869
}
870
870
case ValueType::ArrayInt64: {
871
871
auto * dest = p->GetArgument <std::vector<int64_t >*>(0 );
872
872
GoSlice source;
873
873
dcCallAggr (vm, addr, ag, &source);
874
874
CopyGoSliceToVectorReturn (source, *dest);
875
- ret->SetReturnPtr (dest);
875
+ ret->SetReturn (dest);
876
876
break ;
877
877
}
878
878
case ValueType::ArrayUInt8: {
879
879
auto * dest = p->GetArgument <std::vector<uint8_t >*>(0 );
880
880
GoSlice source;
881
881
dcCallAggr (vm, addr, ag, &source);
882
882
CopyGoSliceToVectorReturn (source, *dest);
883
- ret->SetReturnPtr (dest);
883
+ ret->SetReturn (dest);
884
884
break ;
885
885
}
886
886
case ValueType::ArrayUInt16: {
887
887
auto * dest = p->GetArgument <std::vector<uint16_t >*>(0 );
888
888
GoSlice source;
889
889
dcCallAggr (vm, addr, ag, &source);
890
890
CopyGoSliceToVectorReturn (source, *dest);
891
- ret->SetReturnPtr (dest);
891
+ ret->SetReturn (dest);
892
892
break ;
893
893
}
894
894
case ValueType::ArrayUInt32: {
895
895
auto * dest = p->GetArgument <std::vector<uint32_t >*>(0 );
896
896
GoSlice source;
897
897
dcCallAggr (vm, addr, ag, &source);
898
898
CopyGoSliceToVectorReturn (source, *dest);
899
- ret->SetReturnPtr (dest);
899
+ ret->SetReturn (dest);
900
900
break ;
901
901
}
902
902
case ValueType::ArrayUInt64: {
903
903
auto * dest = p->GetArgument <std::vector<uint64_t >*>(0 );
904
904
GoSlice source;
905
905
dcCallAggr (vm, addr, ag, &source);
906
906
CopyGoSliceToVectorReturn (source, *dest);
907
- ret->SetReturnPtr (dest);
907
+ ret->SetReturn (dest);
908
908
break ;
909
909
}
910
910
case ValueType::ArrayPointer: {
911
911
auto * dest = p->GetArgument <std::vector<uintptr_t >*>(0 );
912
912
GoSlice source;
913
913
dcCallAggr (vm, addr, ag, &source);
914
914
CopyGoSliceToVectorReturn (source, *dest);
915
- ret->SetReturnPtr (dest);
915
+ ret->SetReturn (dest);
916
916
break ;
917
917
}
918
918
case ValueType::ArrayFloat: {
919
919
auto * dest = p->GetArgument <std::vector<float >*>(0 );
920
920
GoSlice source;
921
921
dcCallAggr (vm, addr, ag, &source);
922
922
CopyGoSliceToVectorReturn (source, *dest);
923
- ret->SetReturnPtr (dest);
923
+ ret->SetReturn (dest);
924
924
break ;
925
925
}
926
926
case ValueType::ArrayDouble: {
927
927
auto * dest = p->GetArgument <std::vector<double >*>(0 );
928
928
GoSlice source;
929
929
dcCallAggr (vm, addr, ag, &source);
930
930
CopyGoSliceToVectorReturn (source, *dest);
931
- ret->SetReturnPtr (dest);
931
+ ret->SetReturn (dest);
932
932
break ;
933
933
}
934
934
case ValueType::ArrayString: {
935
935
auto * dest = p->GetArgument <std::vector<plg::string>*>(0 );
936
936
GoSlice source;
937
937
dcCallAggr (vm, addr, ag, &source);
938
938
CopyGoSliceToVectorReturn (source, *dest);
939
- ret->SetReturnPtr (dest);
939
+ ret->SetReturn (dest);
940
940
break ;
941
941
}
942
942
default :
0 commit comments