author | Ms2ger <ms2ger@gmail.com> |
Fri, 05 Jun 2015 11:23:00 +0200 | |
changeset 247350 | d6bc54440554074f96d3370641e5fa5fea237cd8 |
parent 247349 | c5fad6c096e85122a4d7072c138e5bbb78794fbb |
child 247351 | bd2a987f66e323033edf9cd1eac850025351c54d |
push id | 28864 |
push user | kwierso@gmail.com |
push date | Fri, 05 Jun 2015 21:49:37 +0000 |
treeherder | mozilla-central@97a39c939c51 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jst |
bugs | 1171451 |
milestone | 41.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/base/nsDOMJSUtils.h +++ b/dom/base/nsDOMJSUtils.h @@ -29,20 +29,17 @@ GetScriptContextFromJSContext(JSContext // released, but that's ok here. return scx; } JSObject* GetDefaultScopeFromJSContext(JSContext *cx); // A factory function for turning a JS::Value argv into an nsIArray // but also supports an effecient way of extracting the original argv. -// Bug 312003 describes why this must be "void *", but argv will be cast to -// JS::Value* and the args are found at: -// ((JS::Value*)aArgv)[0], ..., ((JS::Value*)aArgv)[aArgc - 1] // The resulting object will take a copy of the array, and ensure each // element is rooted. // Optionally, aArgv may be nullptr, in which case the array is allocated and // rooted, but all items remain nullptr. This presumably means the caller // will then QI us for nsIJSArgArray, and set our array elements. -nsresult NS_CreateJSArgv(JSContext *aContext, uint32_t aArgc, void *aArgv, - nsIJSArgArray **aArray); +nsresult NS_CreateJSArgv(JSContext *aContext, uint32_t aArgc, + const JS::Value* aArgv, nsIJSArgArray **aArray); #endif // nsDOMJSUtils_h__
--- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -7839,17 +7839,17 @@ nsGlobalWindow::OpenDialog(JSContext* aC ErrorResult& aError) { FORWARD_TO_OUTER_OR_THROW(OpenDialog, (aCx, aUrl, aName, aOptions, aExtraArgument, aError), aError, nullptr); nsCOMPtr<nsIJSArgArray> argvArray; aError = NS_CreateJSArgv(aCx, aExtraArgument.Length(), - const_cast<JS::Value*>(aExtraArgument.Elements()), + aExtraArgument.Elements(), getter_AddRefs(argvArray)); if (aError.Failed()) { return nullptr; } nsCOMPtr<nsIDOMWindow> dialog; aError = OpenInternal(aUrl, aName, aOptions, true, // aDialog
--- a/dom/base/nsJSEnvironment.cpp +++ b/dom/base/nsJSEnvironment.cpp @@ -2863,17 +2863,17 @@ mozilla::dom::ShutdownJSEnvironment() // A fast-array class for JS. This class supports both nsIJSScriptArray and // nsIArray. If it is JS itself providing and consuming this class, all work // can be done via nsIJSScriptArray, and avoid the conversion of elements // to/from nsISupports. // When consumed by non-JS (eg, another script language), conversion is done // on-the-fly. class nsJSArgArray final : public nsIJSArgArray { public: - nsJSArgArray(JSContext *aContext, uint32_t argc, JS::Value *argv, + nsJSArgArray(JSContext *aContext, uint32_t argc, const JS::Value* argv, nsresult *prv); // nsISupports NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(nsJSArgArray, nsIJSArgArray) // nsIArray @@ -2886,21 +2886,21 @@ public: protected: ~nsJSArgArray(); JSContext *mContext; JS::Heap<JS::Value> *mArgv; uint32_t mArgc; }; -nsJSArgArray::nsJSArgArray(JSContext *aContext, uint32_t argc, JS::Value *argv, - nsresult *prv) : - mContext(aContext), - mArgv(nullptr), - mArgc(argc) +nsJSArgArray::nsJSArgArray(JSContext *aContext, uint32_t argc, + const JS::Value* argv, nsresult *prv) + : mContext(aContext) + , mArgv(nullptr) + , mArgc(argc) { // copy the array - we don't know its lifetime, and ours is tied to xpcom // refcounting. if (argc) { mArgv = new (fallible) JS::Heap<JS::Value>[argc]; if (!mArgv) { *prv = NS_ERROR_OUT_OF_MEMORY; return; @@ -3005,20 +3005,19 @@ NS_IMETHODIMP nsJSArgArray::IndexOf(uint /* nsISimpleEnumerator enumerate (); */ NS_IMETHODIMP nsJSArgArray::Enumerate(nsISimpleEnumerator **_retval) { return NS_ERROR_NOT_IMPLEMENTED; } // The factory function -nsresult NS_CreateJSArgv(JSContext *aContext, uint32_t argc, void *argv, - nsIJSArgArray **aArray) +nsresult NS_CreateJSArgv(JSContext *aContext, uint32_t argc, + const JS::Value* argv, nsIJSArgArray **aArray) { nsresult rv; - nsCOMPtr<nsIJSArgArray> ret = new nsJSArgArray(aContext, argc, - static_cast<JS::Value *>(argv), &rv); + nsCOMPtr<nsIJSArgArray> ret = new nsJSArgArray(aContext, argc, argv, &rv); if (NS_FAILED(rv)) { return rv; } ret.forget(aArray); return NS_OK; }