fix on macos

This commit is contained in:
2025-05-31 16:23:57 -05:00
parent fe5cb54361
commit 03f28a33db
4 changed files with 114 additions and 3 deletions

View File

@@ -81,7 +81,7 @@ namespace Tesses::CrossLang
});
dict->DeclareFunction(ls.GetGC(),"getFinished","Get whether thread has finished",{},[th](GCList& _ls, std::vector<TObject> _args)-> TObject{
return th->hasReturned;
return (bool)(th->hasReturned==true);
});
ls.GetGC()->BarrierEnd();

View File

@@ -5669,7 +5669,9 @@ namespace Tesses::CrossLang {
cse.back()->Push(gc,callable->Call(ls,{value}));
return false;
}
gc->BarrierBegin();
cls->SetValue(cse.back()->callable->className,key,value);
gc->BarrierEnd();
cse.back()->Push(gc,value);
return false;
@@ -6277,12 +6279,26 @@ namespace Tesses::CrossLang {
if(std::holds_alternative<THeapObjectHolder>(objhold) && std::holds_alternative<std::string>(k))
{
auto dict= dynamic_cast<TDictionary*>(std::get<THeapObjectHolder>(objhold).obj);
auto cls = dynamic_cast<TClassObject*>(std::get<THeapObjectHolder>(objhold).obj);
if(dict != nullptr)
{
dict->SetValue(std::get<std::string>(k), value);
}
else if(cls != nullptr)
{
auto obj=cls->GetValue(cse.back()->callable->className,"set"+std::get<std::string>(k));
TCallable* callable;
if(GetObjectHeap(obj,callable))
{
gc->BarrierEnd();
callable->Call(ls,{value});
gc->BarrierBegin();
}else {
cls->SetValue(cse.back()->callable->className,std::get<std::string>(k),value);
}
}
}
stk->Push(gc, objhold);