mirror of https://github.com/OpenTTD/OpenTTD
Revert a2edf52: SQOpsLimiter does a more precise job (#11754)
parent
1101b04371
commit
28efa65e0c
|
@ -54,6 +54,9 @@ string(REPLACE "0x(nil)" "0x00000000" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
||||||
string(REPLACE "0x0000000000000000" "0x00000000" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
string(REPLACE "0x0000000000000000" "0x00000000" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
||||||
string(REPLACE "0x0x0" "0x00000000" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
string(REPLACE "0x0x0" "0x00000000" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
||||||
|
|
||||||
|
# Convert path separators
|
||||||
|
string(REPLACE "\\" "/" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
||||||
|
|
||||||
# Remove timestamps if any
|
# Remove timestamps if any
|
||||||
string(REGEX REPLACE "\[[0-9-]+ [0-9:]+\] " "" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
string(REGEX REPLACE "\[[0-9-]+ [0-9:]+\] " "" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
||||||
|
|
||||||
|
@ -62,6 +65,7 @@ string(REPLACE "\ndbg: [script]" "\n" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
||||||
string(REPLACE "\n " "\nERROR: " REGRESSION_RESULT "${REGRESSION_RESULT}")
|
string(REPLACE "\n " "\nERROR: " REGRESSION_RESULT "${REGRESSION_RESULT}")
|
||||||
string(REPLACE "\nERROR: [1] " "\n" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
string(REPLACE "\nERROR: [1] " "\n" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
||||||
string(REPLACE "\n[P] " "\n" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
string(REPLACE "\n[P] " "\n" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
||||||
|
string(REPLACE "\n[S] " "\n" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
||||||
string(REGEX REPLACE "dbg: ([^\n]*)\n?" "" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
string(REGEX REPLACE "dbg: ([^\n]*)\n?" "" REGRESSION_RESULT "${REGRESSION_RESULT}")
|
||||||
|
|
||||||
# Read the expected result
|
# Read the expected result
|
||||||
|
|
|
@ -2026,5 +2026,12 @@ function Regression::Start()
|
||||||
print(" IsEventWaiting: false");
|
print(" IsEventWaiting: false");
|
||||||
|
|
||||||
this.Math();
|
this.Math();
|
||||||
|
|
||||||
|
/* Check Valuate() is actually limited, MUST BE THE LAST TEST. */
|
||||||
|
print("--Valuate() with excessive CPU usage--")
|
||||||
|
local list = AIList();
|
||||||
|
list.AddItem(0, 0);
|
||||||
|
local Infinite = function(id) { while(true); }
|
||||||
|
list.Valuate(Infinite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9587,4 +9587,23 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||||
-1 > 2147483647: false
|
-1 > 2147483647: false
|
||||||
-2147483648 > 2147483647: false
|
-2147483648 > 2147483647: false
|
||||||
13725 > -2147483648: true
|
13725 > -2147483648: true
|
||||||
|
--Valuate() with excessive CPU usage--
|
||||||
|
Your script made an error: excessive CPU usage in valuator function
|
||||||
|
|
||||||
|
*FUNCTION [unknown()] regression/main.nut line [2034]
|
||||||
|
*FUNCTION [Valuate()] NATIVE line [-1]
|
||||||
|
*FUNCTION [Start()] regression/main.nut line [2035]
|
||||||
|
|
||||||
|
[id] 0
|
||||||
|
[this] TABLE
|
||||||
|
[Infinite] CLOSURE
|
||||||
|
[list] INSTANCE
|
||||||
|
[this] INSTANCE
|
||||||
|
Your script made an error: excessive CPU usage in valuator function
|
||||||
|
|
||||||
|
*FUNCTION [Start()] regression/main.nut line [2035]
|
||||||
|
|
||||||
|
[Infinite] CLOSURE
|
||||||
|
[list] INSTANCE
|
||||||
|
[this] INSTANCE
|
||||||
ERROR: The script died unexpectedly.
|
ERROR: The script died unexpectedly.
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
|
|
||||||
#include "../../stdafx.h"
|
#include "../../stdafx.h"
|
||||||
#include "script_list.hpp"
|
#include "script_list.hpp"
|
||||||
#include "script_controller.hpp"
|
|
||||||
#include "../../debug.h"
|
#include "../../debug.h"
|
||||||
#include "../../script/squirrel.hpp"
|
#include "../../script/squirrel.hpp"
|
||||||
|
|
||||||
|
@ -914,16 +913,6 @@ SQInteger ScriptList::Valuate(HSQUIRRELVM vm)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Kill the script when the valuator call takes way too long.
|
|
||||||
* Triggered by nesting valuators, which then take billions of iterations. */
|
|
||||||
if (ScriptController::GetOpsTillSuspend() < -1000000) {
|
|
||||||
/* See below for explanation. The extra pop is the return value. */
|
|
||||||
sq_pop(vm, nparam + 4);
|
|
||||||
|
|
||||||
ScriptObject::SetAllowDoCommand(backup_allow);
|
|
||||||
return sq_throwerror(vm, "excessive CPU usage in valuator function");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Was something changed? */
|
/* Was something changed? */
|
||||||
if (previous_modification_count != this->modifications) {
|
if (previous_modification_count != this->modifications) {
|
||||||
/* See below for explanation. The extra pop is the return value. */
|
/* See below for explanation. The extra pop is the return value. */
|
||||||
|
|
Loading…
Reference in New Issue