Index: ps/trunk/source/ps/Replay.cpp =================================================================== --- ps/trunk/source/ps/Replay.cpp +++ ps/trunk/source/ps/Replay.cpp @@ -54,7 +54,7 @@ void CReplayLogger::StartGame(JS::MutableHandleValue attribs) { // Add timestamp, since the file-modification-date can change - m_ScriptInterface.SetProperty(attribs, "timestamp", std::time(nullptr)); + m_ScriptInterface.SetProperty(attribs, "timestamp", (double)std::time(nullptr)); // Add engine version and currently loaded mods for sanity checks when replaying m_ScriptInterface.SetProperty(attribs, "engine_version", CStr(engine_version)); Index: ps/trunk/source/scriptinterface/ScriptConversions.cpp =================================================================== --- ps/trunk/source/scriptinterface/ScriptConversions.cpp +++ ps/trunk/source/scriptinterface/ScriptConversions.cpp @@ -116,53 +116,6 @@ return true; } -template<> bool ScriptInterface::FromJSVal(JSContext* cx, JS::HandleValue v, i64& out) -{ - JSAutoRequest rq(cx); - i64 tmp; - bool ok = JS::ToInt64(cx, v, &tmp); - out = (i64)tmp; - return ok; -} - -template<> bool ScriptInterface::FromJSVal(JSContext* cx, JS::HandleValue v, u64& out) -{ - JSAutoRequest rq(cx); - u64 tmp; - bool ok = JS::ToUint64(cx, v, &tmp); - out = (u64)tmp; - return ok; -} - -// see comment below (where the same preprocessor condition is used) -#if MSC_VERSION && ARCH_AMD64 - -template<> bool ScriptInterface::FromJSVal(JSContext* cx, JS::HandleValue v, size_t& out) -{ - JSAutoRequest rq(cx); - int tmp; - if(!FromJSVal(cx, v, tmp)) - return false; - if(temp < 0) - return false; - out = (size_t)tmp; - return true; -} - -template<> bool ScriptInterface::FromJSVal(JSContext* cx, JS::HandleValue v, ssize_t& out) -{ - JSAutoRequest rq(cx); - int tmp; - if(!FromJSVal(cx, v, tmp)) - return false; - if(tmp < 0) - return false; - out = (ssize_t)tmp; - return true; -} - -#endif - template<> bool ScriptInterface::FromJSVal(JSContext* cx, JS::HandleValue v, std::wstring& out) { JSAutoRequest rq(cx); @@ -294,35 +247,6 @@ ret.set(JS::NumberValue(val)); } -template<> void ScriptInterface::ToJSVal(JSContext* UNUSED(cx), JS::MutableHandleValue ret, const i64& val) -{ - ret.set(JS::NumberValue((int)val)); -} - -template<> void ScriptInterface::ToJSVal(JSContext* UNUSED(cx), JS::MutableHandleValue ret, const u64& val) -{ - ret.set(JS::NumberValue((int)val)); -} - -// (s)size_t are considered to be identical to (unsigned) int by GCC and -// their specializations would cause conflicts there. On x86_64 GCC, s/size_t -// is equivalent to (unsigned) long, but the same solution applies; use the -// long and unsigned long specializations instead of s/size_t. -// for some reason, x64 MSC treats size_t as distinct from unsigned long: -#if MSC_VERSION && ARCH_AMD64 - -template<> void ScriptInterface::ToJSVal(JSContext* UNUSED(cx), JS::MutableHandleValue ret, const size_t& val) -{ - ret.set(JS::NumberValue((int)val)); -} - -template<> void ScriptInterface::ToJSVal(JSContext* UNUSED(cx), JS::MutableHandleValue ret, const ssize_t& val) -{ - ret.set(JS::NumberValue((int)val)); -} - -#endif - template<> void ScriptInterface::ToJSVal(JSContext* cx, JS::MutableHandleValue ret, const std::wstring& val) { JSAutoRequest rq(cx); Index: ps/trunk/source/scriptinterface/tests/test_ScriptConversions.h =================================================================== --- ps/trunk/source/scriptinterface/tests/test_ScriptConversions.h +++ ps/trunk/source/scriptinterface/tests/test_ScriptConversions.h @@ -141,22 +141,6 @@ roundtrip(1073741824, "1073741824"); // JSVAL_INT_MAX+1 } - roundtrip(0, "0"); - roundtrip(123, "123"); - roundtrip(-123, "-123"); - roundtrip(1073741822, "1073741822"); // JSVAL_INT_MAX-1 - roundtrip(1073741823, "1073741823"); // JSVAL_INT_MAX - roundtrip(-1073741823, "-1073741823"); // JSVAL_INT_MIN+1 - roundtrip(-1073741824, "-1073741824"); // JSVAL_INT_MIN - roundtrip(1073741824, "1073741824"); // JSVAL_INT_MAX+1 - roundtrip(-1073741825, "-1073741825"); // JSVAL_INT_MIN-1 - - roundtrip(0, "0"); - roundtrip(123, "123"); - roundtrip(1073741822, "1073741822"); // JSVAL_INT_MAX-1 - roundtrip(1073741823, "1073741823"); // JSVAL_INT_MAX - roundtrip(1073741824, "1073741824"); // JSVAL_INT_MAX+1 - std::string s1 = "test"; s1[1] = '\0'; std::string s2 = "ั‚ะตัั‚"; @@ -218,27 +202,6 @@ TS_ASSERT(val6.isInt32()); TS_ASSERT(val7.isInt32()); TS_ASSERT(val8.isDouble()); - - JS::RootedValue val9(cx), val10(cx), val11(cx), val12(cx), val13(cx), val14(cx), val15(cx), val16(cx), val17(cx); - ScriptInterface::ToJSVal(cx, &val9, 0); - ScriptInterface::ToJSVal(cx, &val10, 2147483646); // JSVAL_INT_MAX-1 - ScriptInterface::ToJSVal(cx, &val11, 2147483647); // JSVAL_INT_MAX - ScriptInterface::ToJSVal(cx, &val12, -2147483647); // JSVAL_INT_MIN+1 - ScriptInterface::ToJSVal(cx, &val13, -(i64)2147483648u); // JSVAL_INT_MIN - TS_ASSERT(val9.isInt32()); - TS_ASSERT(val10.isInt32()); - TS_ASSERT(val11.isInt32()); - TS_ASSERT(val12.isInt32()); - TS_ASSERT(val13.isInt32()); - - ScriptInterface::ToJSVal(cx, &val14, 0); - ScriptInterface::ToJSVal(cx, &val15, 2147483646u); // JSVAL_INT_MAX-1 - ScriptInterface::ToJSVal(cx, &val16, 2147483647u); // JSVAL_INT_MAX - ScriptInterface::ToJSVal(cx, &val17, 2147483648u); // JSVAL_INT_MAX+1 - TS_ASSERT(val14.isInt32()); - TS_ASSERT(val15.isInt32()); - TS_ASSERT(val16.isInt32()); - TS_ASSERT(val17.isInt32()); } void test_nonfinite()