@@ -122,7 +122,6 @@ interface
122122 opOperatorMul,
123123 opOperatorDiv,
124124 opOperatorMod,
125- opOperatorPow,
126125 opOperatorNegative,
127126 opOperatorLesser,
128127 opOperatorLesserOrEqual,
@@ -764,7 +763,6 @@ TSECacheMap = class(TSECacheMapAncestor)
764763 1 , // opOperatorMul,
765764 1 , // opOperatorDiv,
766765 1 , // opOperatorMod,
767- 1 , // opOperatorPow,
768766 1 , // opOperatorNegative,
769767 1 , // opOperatorLesser,
770768 1 , // opOperatorLesserOrEqual,
@@ -5603,7 +5601,6 @@ procedure TSEVM.Exec;
56035601 labelOperatorMul,
56045602 labelOperatorDiv,
56055603 labelOperatorMod,
5606- labelOperatorPow,
56075604 labelOperatorNegative,
56085605 labelOperatorLesser,
56095606 labelOperatorLesserOrEqual,
@@ -5677,7 +5674,6 @@ procedure TSEVM.Exec;
56775674 @labelOperatorMul,
56785675 @labelOperatorDiv,
56795676 @labelOperatorMod,
5680- @labelOperatorPow,
56815677 @labelOperatorNegative,
56825678 @labelOperatorLesser,
56835679 @labelOperatorLesserOrEqual,
@@ -6442,15 +6438,6 @@ procedure TSEVM.Exec;
64426438 Self.BinaryPtr := BinaryPtrLocal;
64436439 Exit;
64446440 end ;
6445- { $ifndef SE_COMPUTED_GOTO} opOperatorPow:{ $endif}
6446- begin
6447- labelOperatorPow:
6448- B := Pop;
6449- A := Pop;
6450- Push(Power(A^.VarNumber, B^.VarNumber));
6451- Inc(CodePtrLocal);
6452- DispatchGoto;
6453- end ;
64546441 { $ifndef SE_COMPUTED_GOTO} opHlt:{ $endif}
64556442 begin
64566443 labelHlt:
@@ -8839,14 +8826,23 @@ procedure TEvilC.Parse;
88398826 procedure Pow ;
88408827 var
88418828 Token: TSEToken;
8829+ FuncInfo: PSEFuncNativeInfo;
8830+ FuncIndex: Integer;
88428831 begin
88438832 SignedFactor;
88448833 while True do
88458834 begin
88468835 Token := PeekAtNextToken;
88478836 case Token.Kind of
88488837 tkPow:
8849- BinaryOp(opOperatorPow, @SignedFactor);
8838+ begin
8839+ // BinaryOp(opOperatorPow, @SignedFactor);
8840+ NextToken;
8841+ PeekAtNextTokenExpected([tkBracketOpen, tkSquareBracketOpen, tkDot, tkNumber, tkString, tkNegative, tkIdent]);
8842+ SignedFactor;
8843+ FuncInfo := FindFuncNative(' pow' , FuncIndex);
8844+ Emit([Pointer(opCallNative), Pointer(FuncIndex), Pointer(2 ), Pointer(0 )])
8845+ end ;
88508846 else
88518847 Exit;
88528848 end ;
0 commit comments