Fix docker

This commit is contained in:
2025-01-14 22:03:27 -06:00
parent 01a034a77b
commit 5c8dc0fd9b
9 changed files with 600 additions and 65 deletions

View File

@ -191,6 +191,7 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -198,6 +199,11 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator-",{right}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -238,6 +244,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -245,6 +253,11 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator*",{right}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -306,6 +319,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -313,6 +328,11 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator/",{right}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -354,6 +374,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -361,6 +383,11 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator%",{right}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -393,6 +420,7 @@ namespace Tesses::CrossLang {
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -400,6 +428,11 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeOne(ls,negfn,left);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator-",{}));
return false;
}
else
{
cse.back()->Push(gc,nullptr);
@ -442,6 +475,7 @@ namespace Tesses::CrossLang {
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -449,6 +483,11 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeOne(ls,negfn,left);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator!",{}));
return false;
}
else
{
cse.back()->Push(gc, !ToBool(left));
@ -479,6 +518,7 @@ namespace Tesses::CrossLang {
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -486,6 +526,11 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeOne(ls,negfn,left);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator~",{}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -528,6 +573,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -535,6 +582,11 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator<",{right}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -577,6 +629,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -584,6 +638,11 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator>",{right}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -626,6 +685,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -633,6 +694,11 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator<=",{right}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -675,6 +741,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -682,6 +750,11 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator>=",{right}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -748,6 +821,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -757,7 +832,16 @@ namespace Tesses::CrossLang {
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
auto res = dynDict->CallMethod(ls,"operator==",{right});
if(!std::holds_alternative<std::nullptr_t>(res) && std::holds_alternative<Undefined>(res))
{
cse.back()->Push(gc,res);
return false;
}
}
if(std::holds_alternative<THeapObjectHolder>(right))
{
cse.back()->Push(gc,obj == std::get<THeapObjectHolder>(right).obj);
@ -824,6 +908,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -833,6 +919,16 @@ namespace Tesses::CrossLang {
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
auto res = dynDict->CallMethod(ls,"operator!=",{right});
if(!std::holds_alternative<std::nullptr_t>(res) && std::holds_alternative<Undefined>(res))
{
cse.back()->Push(gc,res);
return false;
}
}
if(std::holds_alternative<THeapObjectHolder>(right))
{
cse.back()->Push(gc,obj != std::get<THeapObjectHolder>(right).obj);
@ -866,6 +962,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -873,6 +971,12 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator<<",{right}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -901,6 +1005,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -908,6 +1014,12 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator>>",{right}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -936,6 +1048,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -943,6 +1057,12 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator|",{right}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -971,6 +1091,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -978,6 +1100,12 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator^",{right}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -1006,6 +1134,8 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -1013,6 +1143,11 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator&",{right}));
return false;
}
else
{
cse.back()->Push(gc,Undefined());
@ -1130,6 +1265,7 @@ namespace Tesses::CrossLang {
{
auto obj = std::get<THeapObjectHolder>(left).obj;
auto dict = dynamic_cast<TDictionary*>(obj);
auto dynDict = dynamic_cast<TDynamicDictionary*>(obj);
if(dict != nullptr)
{
gc->BarrierBegin();
@ -1137,6 +1273,11 @@ namespace Tesses::CrossLang {
gc->BarrierEnd();
return InvokeTwo(ls,fn,left,right);
}
else if(dynDict != nullptr)
{
cse.back()->Push(gc,dynDict->CallMethod(ls,"operator+",{right}));
return false;
}
else
{
cse.back()->Push(gc, Undefined());