100 Commits
Author SHA1 Message Date
Yves 9e4f0cc543 Properly shut down SpiderMonkey using JS_ShutDown.
This also adds some validation to ensure the correct order of JS_Init,
JS_NewRuntime, JS_DestroyRuntime and JS_ShutDown calls.

Refs #3708

This was SVN commit r18584.
2016-08-06 15:41:59 +00:00
Yves 199d38dfec Work around clang bug to fix compiling.
This was SVN commit r17703.
2016-01-24 10:34:38 +00:00
Yves 1a66f510d0 Use const T& for parameters of some types in script-exposed native functions
Using references matches the C++ coding style better and should improve
performance a bit in theory. It avoids 2 copies of T in case of the
functions registered with RegisterFunction (mainy used in the GUI). It
should also avoid one or two copies in case of
DEFINE_INTERFACE_METHOD_X, which is used in the simulation, but I
haven't bothered to count it there exactly.
It is now predefined which types have to be passed by const reference
and which are passed by value. Note that references can't be used as
out-parameters (to return multiple values to JS). This hasn't worked
before either and probably never will.

This was SVN commit r17696.
2016-01-23 15:17:56 +00:00
Yves 5f86beea6f Replace HandleWrapper and avoid repoint function
JS::Handle<T>::repoint gets removed with SpiderMonkey 38, so the
existing solution has to be replaced. The new approach should also be a
bit clearer. Named Return Value Optimization (NRVO) should avoid a
superfluous temporary for the return value in the generic template
function implementation of AssignOrFromJSVal.

Refs #3708

This was SVN commit r17695.
2016-01-23 14:42:59 +00:00
Yves 89aef0b6eb Cinematic camera core functionality. Patch by Vladislav Belov.
Based on existing code that was still around from an old(not working)
implementation.
Supports basic control from trigger scirpts (queue, start and stop
camera paths) and works in multiplayer.

This was SVN commit r17594.
2016-01-03 12:41:04 +00:00
Yves d313a1934a Code style cleanups for CinemaPath in preparation for the cinematic camera patch.
Refs #3301

This was SVN commit r17593.
2016-01-02 20:14:14 +00:00
Yves a144ec7e08 Indentation corrections and other code style fixes in preparation for the cinematic camera patch.
Refs #3301

This was SVN commit r17578.
2015-12-31 13:40:56 +00:00
Yves 8d9cfd66b8 Reorganize code in different files in prepartion for the cinematic camera patch (by Vladislav Belov).
Refs #3301

This was SVN commit r17575.
2015-12-30 21:16:35 +00:00
Yves a1a61be547 Also patch SpiderMonkey on OSX.
This was SVN commit r17067.
2015-09-24 12:04:15 +00:00
Yves a39aa76e62 These temporary roots aren't needed anymore with SpiderMonkey 31
This was SVN commit r16647.
2015-05-10 09:01:39 +00:00
Yves c229b46ac2 Move visibility component activation check to C++. Patch by Itms.
This improves performance quite a lot because it avoids a huge number of
calls from C++ to JS. Check the ticket for performance measurements.
Refs #2913

This was SVN commit r16337.
2015-02-14 17:13:50 +00:00
Yves c61981793c Fixes some missing replacements of mozjs24 with mozjs31
This has caused the bundled library to be built even if
--with-system-mozjs31 is specified (but actually it has still correctly
used the system library after building the bundled library).
Refs #2462

This was SVN commit r16235.
2015-01-26 18:19:24 +00:00
Yves 15e8637b67 Fix build with Visual Studio
I've reverted this workaround before the SM31 commit because I thought
it's only a problem with VS2010. Actually VS2013 still doesn't support
C++11 well enough and still requires the workaround.

Refs #2669, #2462

This was SVN commit r16215.
2015-01-24 16:33:27 +00:00
Yves c02a7e1a7b SpiderMonkey 31 upgrade
This upgrade also introduces exact stack rooting (see to the wiki:
JSRootingGuide) and fixes problems with moving GC. This allows us to
enable generational garbage collection (GGC).
Measurements a few months ago have shown a performance improvement of a
non-visual replay of around 13.5%. This probably varies quite a bit, but
it should be somewhere between 5-20%. Memory usage has also been
improved. Check the forum thread for details.

Thanks to everyone from the team who helped with this directly or
indirectly (review, finding and fixing issues, the required C++11
upgrade, the new autobuilder etc.)! Also thanks to the SpiderMonkey
developers who helped on the #jsapi channel or elsewhere!

Fixes #2462, #2415, #2428, #2684, #1374
Refs #2973, #2669

This was SVN commit r16214.
2015-01-24 14:46:52 +00:00
Yves 09bbc9c35c Enable C++11 by default.
Don't generate workspaces and remove checks for unsupported compier/IDE
version$

Refs #2669

This was SVN commit r16160.
2015-01-18 13:44:03 +00:00
Yves a72d490759 Fix Atlas compile problems with C++11 and clang. Thanks to trompetin17 for investigating this.
Refs #2669

This was SVN commit r16158.
2015-01-18 09:48:41 +00:00
Yves ba14819191 Use future-proof lib path in build-osx-libs.sh. Patch by trompetin17.
There are symbolic links to the library binaries in the directory
dist/lib. It's better to use these links rather than the location they
point to for the copy command (they point to a different location in
ESR31).

Refs #2462

This was SVN commit r16153.
2015-01-17 14:03:22 +00:00
Yves 95fa46304f Don't specify wxwidgets lib names in extern_libs4.lua
It works without specifying them and this way it builds with wxwidgets
2.8 and 3 on Windows

Refs #2891

This was SVN commit r16139.
2015-01-11 17:25:24 +00:00
Yves c681174fad Adds a notice about a known issue in premake4.lua with the icc compiler
Refs #2994

This was SVN commit r16132.
2015-01-09 12:48:42 +00:00
Yves 8e30410109 Improve PickEntitiesAtPoint
First, do a ray intersection test with the bounding-sphere for all
entities on the map and then check the more detailed selection shape for
the remaining candidates. Do checks that require component lookups after
the ray intersection tests because these are relatively expensive.
The old method for figuring out which entities are below the mouse
cursor was incorrect because it does a 2D check to filter out the first
candidates which can lead to incorrect results with lower camera angles
and high buildings or buildings with a large footprint. Such problems
were avoided with quite a large radius for this 2D test and resulted in
a large number of candiate entities after this first test (200-500).
Also rename PickEntitiesAtPoint to PickEntityAtPoint and make it return
only one (the closest) match.

I've tested performance with the tracelogger by starting a map and then
moving the mouse in circles for one minute. The results were relatively
stable. I've compared the total time percentage of input.js:836, which
spends nearly all of the time in PickEntityAtPoint.
Ardennes Forest - Normal size:       Original: 41.46%    Patched: 31.6%
Ardennes Forest - Giant size:        Original: 40.59%    Patched: 51.55%

As we see, it's faster on normal map sizes but slower on giant maps with
a lot of entities.
This approach can be further improved with some kind of spatial
subdivision for the culling (like an octree), which would help the unit
renderer too. This way it should be possible to make it faster (and
still correct) on all map sizes and with a large total numbers of
entities.

This was SVN commit r16098.
2015-01-01 23:05:26 +00:00
Yves 71ba68e3a3 Fix performance problem with unnecessary global message subscription
On my ESR31 branch, I've made two measurements with different replays
(both around 15000 turns).
In the first, I got around 3% performance improvement and in the second
about 7.5%. It mainly depends on how often aura changes related to the
female citizen aura happen.

This was SVN commit r16055.
2014-12-21 01:44:00 +00:00
Yves a9c6b7080a Fixes intermittent error messages caused by uninitialized variable
This was SVN commit r16049.
2014-12-14 17:43:40 +00:00
Yves 539046f750 Improves performance for the ResourceGatherer component
The tracelogger has shown one of the functions as 4.9% and one as 2.2%
before the patch. After the patch, both functions were below 0.5%. 100%
is the time for all JS code being executed during a non-visual replay,
including GC, overhead for the tracelogger and JIT code compiling.

This was SVN commit r16036.
2014-12-11 23:12:08 +00:00
Yves c385a88c88 Remove unused overload of GetSavedGameData
This was SVN commit r16001.
2014-11-22 19:46:24 +00:00
Yves 4d89820f1c Fixes build errors on Windows introduced in c813a11427 and 1a0f9b086e.
This was SVN commit r15964.
2014-11-13 22:37:43 +00:00
Yves c813a11427 Split ScriptRuntime and ScriptInterface code to separate files.
The runtime is becoming more and more important in the JSAPI. As a
result, we also have more functionality on the runtime level and having
the whole ScriptRuntime class hidden in ScriptInterface.cpp doesn't make
sense anymore. ScriptInterface.cpp also has become quite a large file
and pulling out the runtime part makes it a bit smaller.

Refs #2462

This was SVN commit r15961.
2014-11-13 11:19:28 +00:00
Yves 8b9847e007 Replace CScriptValRooted with JS::Heap<T> and custom tracer for CNetClient
Refs #2462

This was SVN commit r15946.
2014-11-09 15:16:00 +00:00
Yves 8e2d514228 Exact stack rooting for CParamNode
Refs #2415
Refs #2462

This was SVN commit r15944.
2014-11-09 11:08:53 +00:00
Yves 5a985e18f4 Modify GC scheduling and reduce VFS cache size.
It seems like there is a memory leak if we haven't finished with the
marking phase of an incremental GC and SpiderMonkey has to trigger a
full GC because it runs out of memory. With this patch we stop trying to
make incremental GCs if we are above 1/2 of the runtime size and do Full
GCs instead. This should make such low memory conditions even less
likely than they were already after the previous patch. Also reduce the
maximum VFS cache size to 400 MB.
Refs #2808

This was SVN commit r15831.
2014-10-04 00:43:04 +00:00
Yves 3b49576fa6 Tunes GC scheduling a bit to reduce memory usage.
The main problem was that GC was only called from the simulation before
this patch. This means when you were waiting in the multiplayer lobby or
just had the GUI open, it only called GC when getting close to the JS
runtime size limit (I assume). Another problem was the Net Server
runtime which didn't GC either. Here the runtime size limit is 16 MB
though, so it's not too terrible. These issues have both been addressed
and GC has been given a bit more time per incremental slice to make sure
it gets done in time. It's still far from perfect, but there are too
many changes in SpiderMonkey related to GC, so I don't want to spend too
much time on this yet.

Refs #2808

This was SVN commit r15787.
2014-09-22 20:13:04 +00:00
Yves a89d0190bd Use ES6 Maps in the AI API for applying tech and aura modification to entity templates.
This should improve performance a bit (check the ticket for details).

Refs #2475

This was SVN commit r15781.
2014-09-21 21:02:15 +00:00
Yves a8d8c6d101 Reverts the use of Set in f5336c42b8.
Sets don't support multiple elements with the same key which is required
here to fire timers multiple times per turn.
Refs #2475

This was SVN commit r15773.
2014-09-20 18:48:12 +00:00
Yves f5336c42b8 Adds Serialization support for ES6 Maps.
Also includes the patch from Sanderd17 to use Maps and Sets for the
Timer components. Sets can't be serialized yet, but in this case they
don't require serialization.
Refs #2475

This was SVN commit r15770.
2014-09-20 17:14:53 +00:00
Yves 179162069e Updated cxxtestgen.exe for cxxtest4.4 (created as described in #2450).
This was SVN commit r15686.
2014-08-27 12:39:04 +00:00
Yves 8593825eee Modifies 23c708f72a to use the NONCOPYABLE macro as suggested by leper.
This was SVN commit r15626.
2014-08-09 21:16:25 +00:00
Yves 23c708f72a Prevent copying of ScriptInterface objects.
Copying a ScriptInterface is not allowed. The destructor destroys the
JSContext and if there's a copy around that still uses it, that causes
crashes which can be quite hard to debug. This change prevents copying
by of ScriptInterface objects by making the copy constructor private,
which will reveal such errors at compile time.

This was SVN commit r15625.
2014-08-09 20:20:32 +00:00
Yves 83aa817f71 Exact stack rooting for simulation message type conversions.
Also replaces some deprecated API (jsval typedef and OBJECT_TO_JSVAL) in
that part of the code.

Refs #2415

This was SVN commit r15624.
2014-08-09 20:02:49 +00:00
Yves 8ce8e6ba9a Exact stack rooting for IGUIObject.
Refs #2415
Refs #2462

This was SVN commit r15623.
2014-08-08 13:41:47 +00:00
Yves 9872f5741f Exact stack rooting for ScriptInterface::FreezeObject.
Refs #2415

This was SVN commit r15622.
2014-08-08 11:59:49 +00:00
Yves c662a4e9e9 Fixes #2713
This was SVN commit r15615.
2014-08-05 19:03:10 +00:00
Yves e41f010f91 Fixes crash when loading maps in Atlas.
The ScriptInterface pointer can be NULL there, so using it without
checking is not safe.
This fixes the problem by continuing with the exact stack rooting
changes, which makes the temporary solution unnecessary.

Fixes #2707
Refs #2415

This was SVN commit r15611.
2014-08-04 20:14:17 +00:00
Yves efb889b79a Exact stack rooting for WriteStructuredClone and functions that use it.
Refs #2415

This was SVN commit r15607.
2014-08-03 19:32:39 +00:00
Yves f4d62152e7 Exact stack rooting for GetClass and GetPrivate.
Refs #2415

This was SVN commit r15606.
2014-08-03 17:53:21 +00:00
Yves 169174824f Exact stack rooting for ScriptInterface::ToString.
I had to change a few other functions to take JS::MutableHandleValue
because JS::Stringify takes a JS::MutableHandleValue as input parameter.
That seems a bit strange because it should not change that value.
I assume it has historical reasons.

Refs #2415
Refs #2462

This was SVN commit r15605.
2014-08-03 17:29:49 +00:00
Yves a2bd44b23a Exact stack rooting for JSON related ScriptInterface functions.
Refs #2415
Refs #2462

This was SVN commit r15603.
2014-08-02 22:21:50 +00:00
Yves c818b8e475 Exact rooting for CallConstructor.
Refs #2415
Refs #2462

This was SVN commit r15601.
2014-08-02 16:30:15 +00:00
Yves 736d934107 Removes an unused codepath for AI deserialization and related ScriptInterface code.
It might actually be needed again in the future, but I think even then
it would be easier to rewrite it than having to update the code in the
meantime.

Refs #2462

This was SVN commit r15600.
2014-08-02 13:22:02 +00:00
Yves 608c27fe10 Exact stack rooting for structured cloning functions.
Refs #2415
Refs #2462

This was SVN commit r15597.
2014-08-01 20:55:16 +00:00
Yves 5c07a25ddc More exact stack rooting (CallFunction object).
Changes CallFunction and CallFunctionVoid to use a HandleValue as object
parameter. Also changes some JS serialization/deserialization functions
to only support the JSAPI rooted types (drop support for CScriptVal and
CScriptValRooted there). Some other functions got changed too because
they were closely related.

Refs #2415
Refs #2462

This was SVN commit r15592.
2014-07-31 19:18:40 +00:00
Yves d677a30c39 Adds support for passing JS::HandleValue and JS::RootedValue& to CallFunction.
Also adds tests for these cases.

Refs #2415

This was SVN commit r15591.
2014-07-31 16:34:15 +00:00
Yves 2ae74221c7 Fixes saving/loading problems introduced in 28bdd8540f.
* CGameLoader created a new JS::Value when assigning to m_Metadata.
This means it didn't actually update metadata in SavedGames::Load. The
new approach solves this problem and should work well if
CScriptValRooted gets replaced in the future.
 * The cloning in ScriptFunctions.cpp was required. Removing it caused
compartment mismatches.
 * Now CGameLoader loads the metadata unconditinally because we didn't
actually use the option to not load load it.

Ref #2415

This was SVN commit r15589.
2014-07-31 14:44:51 +00:00
Yves 2be86ef79e Fix crash when starting Atlas (introduced in 28bdd8540f).
This was SVN commit r15573.
2014-07-27 18:38:31 +00:00
Yves 07653c9a70 Fixes crash when generating random maps.
We must not be in a request when calling the ScriptInterface destructor.

This was SVN commit r15572.
2014-07-27 18:17:16 +00:00
Yves cef9e7d4f0 Fixes crash in replay mode introduced in 28bdd8540f.
This was SVN commit r15571.
2014-07-27 17:28:36 +00:00
Yves 64efbfeae3 Fixes small memory leak introduced in 28bdd8540f.
Thanks to leper for pointing it out.

This was SVN commit r15569.
2014-07-26 23:09:24 +00:00
Yves 28bdd8540f Quite a lot of stack rooting related changes.
Changes GetProperty, SetProperty and HasProperty and a few other
functions to take handles. The conversions to CScriptVal or
CScriptValRooted at some places should be removed in the future. I've
done that to avoid an even larger patch.

Refs #2415
Refs #2462

This was SVN commit r15568.
2014-07-26 22:33:16 +00:00
Yves e818b08344 Better support for SpiderMonkey rooted types in the ScriptInterface.
* Adds additional overloads/specializations which are required when
passing JS::Handle<T>/JS::MutableHandle<T> types to different functions.
* Replaces GetPropertyJS with a GetProperty specialization.
* Allows us to avoid the implementation of ToJSVal specializations for
JS::Value and JS::HandleValue. Such conversions should only happen if
there's no way around it and if you are aware of it.
* Adds test to make sure that all potentially required specializations
with custom implementations are instantiated. This should help prevent
introducing bugs in temporarily unused code.

Refs #2415

This was SVN commit r15567.
2014-07-26 20:31:29 +00:00
Yves e3888448c4 Removes rooting test.
Rooting works different now and the CScriptVal types are going to be
removed. We will need rooting tests again, but they will have to work
completely different than this test implementation.

Refs #2415

This was SVN commit r15562.
2014-07-26 14:07:56 +00:00
Yves f41d4fa48e Fixes compartment mismatch introduced in a5ebd8dafd.
Also modifies some related functions to use SpiderMonkey stack rooting
types instead of CScriptValRooted.

Refs #2415

This was SVN commit r15561.
2014-07-26 10:58:24 +00:00
Yves a9048fa43d Adds support for passing JS::HandleValue to SetProperty and CallFunctionVoid without using ugly casing.
Also includes one little "demo-usecase", but additional code will be
changed to use that in future commits.

Refs #2415
Refs #2462

This was SVN commit r15542.
2014-07-20 19:45:18 +00:00
Yves 31f9ca9ebf Implements CallFunction with JS::MutableHandle<T> return type.
Changes the CallFunction implementation to use macros because otherwise
we'd have to write twice as many functions manually.
Adapts GetSavedGameData to use the new function template. Additional
callers will be changed in future commits.

Refs #2415
Refs #2462

This was SVN commit r15541.
2014-07-20 15:08:28 +00:00
Yves 52f4cda439 Changes ToJSVal to take JS::MutableHandleValue instead of JS::Value&.
JS::MutableHandleValue is similar to JS::HandleValue, but the whole
JS::Value it points to can be replaced.
This change is needed for support of exact stack rooting and moving GC.
Contains a few other trivial API adjustments and style improvements too.

Refs #2462
Refs #2415

This was SVN commit r15534.
2014-07-14 19:52:35 +00:00
Yves 09e04cb741 Adds missing request (fixes tests in debug mode).
This was SVN commit r15530.
2014-07-13 22:08:29 +00:00
Yves 1b5ab8142e Makes custom JS objects compatible with SpiderMonkey ESR31.
In v24 you called JS_InitClass and passed in a definition of JSNative
functions. Later you could call JS_NewObject with this class and the
object would get a prototype with the specified JSNative functions.
In ESR31 you now have to explicitly store the prototype object returned
by JS_InitClass and pass it as prototype argument to JS_NewObject to
achieve the same.
This change modifies our existing ScriptInterface implementation for
custom object types a bit and uses it at places where the JSAPI was used
directly before.

Refs #2462

This was SVN commit r15524.
2014-07-13 15:31:48 +00:00
Yves 5a3f07b3d9 Forgot to use excnObj in db9c20e0a9. Also roots an additional jsval.
This was SVN commit r15518.
2014-07-12 19:46:12 +00:00
Yves db9c20e0a9 Changes FromJSVal to take a JS::HandleValue instead of JS::Value.
JS::HandleValue is basically a wrapper around a JS::Value that is safe
for exact stack rooting and moving GC.
I've tried to keep this changeset rather small and isolated and
therefore create additional JS::Rooted<T> values at some places where
the function should eventually directly take a JS::Handle<T>.
The functions "CallFunction" and "CallFunctionVoid" put their arguments
inside a JS::AutoValueVector because this will be passed directly to
"CallFunction_" with ESR31.

Refs #2462
Refs #2415

This was SVN commit r15517.
2014-07-12 19:08:39 +00:00
Yves cfa59fc4e1 Changes our JSNative functions to use JS::CallReceiver/JS::CallArgs.
This is the new way for working with arguments in JSNative functions.
JS_THIS_VALUE, JS_ARGV, JS_SET_RVAL and direct access to vp or argc are
deprecated and will probably be removed in future versions of
SpiderMonkey.
CallArgs also takes care of proper rooting and you can get the values as
Handles or MutableHandles. The interface changes a little bit for ESR
31, but commiting this now still makes it easier and the changes shout
be straigtforward (search and replace more or less).

Refs #2462
Refs #2415

This was SVN commit r15516.
2014-07-12 16:55:09 +00:00
Yves 334ba4b740 SpiderMonkey now supports default parameters!
I've just modified those places with TODO comments, but there are most
likely others that could benefit of the feature to make the code a bit
cleaner and easier to understand.
Thanks to Fabio for pointing it out.
Refs #1886

This was SVN commit r15496.
2014-07-05 13:58:51 +00:00
Yves 8b493c2739 Revert obsolete workaround for structured clones.
Reverts 8195e767ef because that workaround isn't needed anymore with
SpiderMonkey 24 (and 31).

Refs #2241
Refs #1886

This was SVN commit r15495.
2014-07-05 11:35:00 +00:00
Yves de6823d23f Makes tinygettext handle missing plural forms more sanely.
Print an error to the console and return the original (untranslated)
string instead of triggering an assertion in debug builds or a crash and
memory corruption in release builds.
Works around a crash on the history screen. Why the plural form is
missing is another topic and will have to be solved separately.

This was SVN commit r15493.
2014-07-05 10:29:24 +00:00
Yves ae93c02ba8 Fixes a bug that caused script filenames to be defined as properties of the global object.
This was SVN commit r15450.
2014-06-26 17:08:46 +00:00
Yves 3746d7c3d9 Adds a playable trigger demo mission for multiplayer and TreasureCollected events.
Search treasures on small islands and on water. Collect more treasures
than your opponent to win.
I've used the Cycladic Archipelago scenario map with some minor
adjustments, mainly treasure placement and civ preselection for even
chances (both need townphase to build trading boats that can collect
floating treasures).
There's still some room for improvement to make it more fun and add
additional triggers, but I'll leave that for modders. :)

This was SVN commit r15432.
2014-06-23 20:14:43 +00:00
Yves 7e9d6f8ebe Adds translation message extraction for map specific trigger scripts.
This was SVN commit r15431.
2014-06-23 19:59:37 +00:00
Yves bee865416b Fixes small issues in 81d1f5f71f.
This was SVN commit r15398.
2014-06-19 18:50:41 +00:00
Yves 8817bd394b Fix the check if the script is beeing exectued as root for sh (== comparision seems to work for bash but not for sh).
This was SVN commit r15396.
2014-06-19 15:19:08 +00:00
Yves 96c806841d Fixes the packaging script for some changes related to l10n and SpiderMonkey
This was SVN commit r15148.
2014-05-12 01:36:32 +00:00
Yves c1d5f6882c Also switch the button name to disable the correct one.
4e0a588456 only switched the label and the action.

This was SVN commit r15098.
2014-05-03 08:59:31 +00:00
Yves 122dae799b Don't allow returning an invalid locale from the advanced language menu.
This was SVN commit r15094.
2014-05-02 21:14:28 +00:00
Yves 210374d86d Fixes Aegis not training additional units when no starting units are around.
Patch by Teiresias.

Fixes #2460

This was SVN commit r15086.
2014-05-01 13:13:38 +00:00
Yves 8f53ddd6b9 Unifies some translatable strings on the gamesetup screen.
This was SVN commit r15042.
2014-04-27 19:03:15 +00:00
Yves 2f8487b84b Adds translation support for the "More options" window on the gamesetup screen.
This was SVN commit r15041.
2014-04-27 18:41:56 +00:00
Yves 7acdde5c86 Changes tests to use global g_ScriptRuntime instead of creating a new JSRuntime for each test.
The tests crashed on my Debian systems but not on my Ubuntu system.
The crash happened in line 142 of SpiderMonkey's ThreadLocal.h.

I know that I had to use a workarounnd for contexts to avoid destroying
the context that was created first. I also had in mind that in newer
versions a JS_Init function got introduced which presumably solves this
kind of issues.
Based on this experience I assumed runtimes could have a similar problem
and this patch indeed fixes the issues.
Unfortunately the correct usage of JSRuntimes in that regard is not
documented.
There's only a rater misterious comment in JSAPI.h which hasn't been
cleared up so far and is most likely completely outdated
(https://bugzilla.mozilla.org/show_bug.cgi?id=992641).

This was SVN commit r14995.
2014-04-25 21:19:51 +00:00
Yves fd3d335265 Sacrifices a goat to the gods of insanity.
Fixes random crashes on Windows due to differences of STL types on the
binary level between different static libraries.
The differences are caused by the definition of _HAS_ITERATOR_DEBUGGING
and _SECURE_SCL in lib/precompiled.h.
All our engine static libs use precompiled headers but we didn't use
them for tinygettext because they aren't needed (except for these two
defines).
I've decided to add precompiled headers to tinygettext too instead of
just copying these defines. That should cause less headaches in the
future.

This was SVN commit r14983.
2014-04-24 20:05:48 +00:00
Yves 510ad15e6c Adds missing libs, fixes some svn properties and a build-problem on Windows.
In 1b3261b8f4 empty text files were committed instead of the libs.
The text files had svn:eol-style properties set and the mime-type was
text.
This removes the eol-style properties, changes the mime type and addes
the content of the files.

This was SVN commit r14959.
2014-04-20 23:47:52 +00:00
Yves 5aab36670c Give some more space to the labels in the advanced localization menu.
This was SVN commit r14958.
2014-04-20 22:38:29 +00:00
Yves 30d5b572a6 Remove tinygettext from the build-osx-libs.sh file.
That's not needed anymore in the latest i18n branch. We build
tinygettext as a static library with the game now.

This was SVN commit r14952.
2014-04-20 19:30:01 +00:00
Yves e9e05f4efc Second (main) commit for the SpiderMonkey upgrade.
This commit contains all the required changes to our source files and
build scripts (hopefully).
A next commit will remove the old stuff of SpiderMonkey 1.8.5.

Spcial thanks to:
 - H4writer who helped a lot mainly with the performance issues we
had/have, but also with other problems or questions.
 - Leper for the review.
 - Historic_bruno for implementing the build scripts on Mac OS X and
testing on the Mac.
 - The people from the #jsapi channel and from
mozilla.dev.tech.js-engine who answered a lot of questions and helped
solving problems.
 - All the other people who helped

Refs #1886
Fixes #2442
Fixes #2416

This was SVN commit r14877.
2014-03-28 20:26:32 +00:00
Yves 0d9a7dab6b Works around infinite recursion problem.
This problems occurs with the new SpiderMonkey in debug mode, but it's
not a SpiderMonkey issue.
Unfortunately I couldn't find a clean solution, so I just documented the
problem in an extensive comment block and applied a workaround.
A clean solution would probably require changing the approach for
counting allocations completely.

This was SVN commit r14874.
2014-03-28 11:33:37 +00:00
Yves 90b9926ca1 Fixes warning showing up with the new SpiderMonkey.
The changed return value isn't related but returning false makes more
sense there IMO.

Refs #2372

This was SVN commit r14863.
2014-03-22 23:31:40 +00:00
Yves 5372b27142 Silences some warnings that show up on the gamesetup screen with the new SpiderMonkey without changing any behaviour.
Refs #2372

This was SVN commit r14862.
2014-03-22 13:54:10 +00:00
Yves 2eeb7c2ba1 Workaround to reduce the impact of AI performance problems when planning new bases.
When no free territory was left on the map, the AI tried to place a CC
every 10th AI turn.
That's about all 10 seconds and it freezed the game for about a second.
Now when you played against 4 players it freezed aobut 4 seconds every
10 seconds, which is very bad.
I wanted to solve this properly but realized that I'd have to change a
lot in the terrain analysis code that will probably be replaced anyway
when we have a new pathfinder with a proper interface.
Also removes an unused variable (creating a territory map and not using
it can't be good for performance either).

This was SVN commit r14859.
2014-03-20 14:26:15 +00:00
Yves 5c4282a21c Fixes a small memory leak in the profiler shutdown code.
This was SVN commit r14854.
2014-03-17 21:16:38 +00:00
Yves 0e7c92e1e6 Fixes behaviour change in Atlas' JSON serialization after the switch to JSON Spirit (#2434).
This caused problems setting the starting camera.

Refs #2434

This was SVN commit r14827.
2014-03-09 17:55:54 +00:00
Yves c8bdd993c0 Upgrades cxxtest.
Switches to the already committed new cxxtest sources and deletes the
old sources.
Applies the changes from 6374080b60 and 4a57fed5a7 to the updated
sources.
Replaces the cxxtestgen.exe for Windows. This file was created from
cxxtest's python script using pywin32.
Modifies update-workspace.sh to force a rebuild when cxxtest options
could have been changed during the premake step.
Adds an additional option (--jenkins-tests) to
premake4.lua/update-workspaces.sh to use cxxtest's XmlPrinter which
generates output than can be used by Jenkins.

Fixes #2450

This was SVN commit r14818.
2014-03-07 20:58:17 +00:00
Yves 1a2f889bb9 7cba43c9db changed the behaviour in case of undefined values which was not intended even if there's a warning now.
This should revert to correct behaviour for undefined values again (even
though this value should never be undefined).

Refs 2372

This was SVN commit r14803.
2014-03-03 23:01:49 +00:00
Yves 7cba43c9db Fixes warnings printed by the new SpiderMonkey.
Sets SelectableInGameSetup to true in all civ json files that didn't
have it set.
Having this value set to undefined (not set) was interpreted as true,
which is quite arbitrary.
With the new SpiderMonkey a warning will be printed if the value is
undefined.
This avoids ambiguity but makes the setting mandatory.

Refs #2372

This was SVN commit r14802.
2014-03-03 21:58:15 +00:00
Yves df43e32a59 Second try fixing the eol-styles
This was SVN commit r14801.
2014-03-03 21:36:24 +00:00
Yves 234f2003a3 Fix inconsistent line endings and add svn:eol-style property
This was SVN commit r14800.
2014-03-03 21:13:36 +00:00
Yves e290abc40f Should fix the Atlas build issues with the autobuilder.
For some reason the autobuilder does not know uint32_t but my Windows
system with VC2010 and my Linux system both do.

Refs #2434

This was SVN commit r14797.
2014-03-01 14:41:32 +00:00
Yves 17f8f09399 Removes the ScriptInterface and SpiderMonkey dependencies from Atlas.
Replaces the code for JSON parsing and writing with an implementation
using the JSON Spirit library.

Fixes #2434
Refs #1886

This was SVN commit r14783.
2014-02-24 20:22:02 +00:00