Bug 1028613 - Modify the x86 MSVC implementation of NS_InvokeByIndex to make it compatible with clang-cl; r=bsmedberg
Bug 1028633 - Use gcc inline assembly in xptcstubs.cpp for clang-cl; r=bsmedberg
Bug 1023748 - Allow NTLMv1 over SSL/TLS by default, r=jduell
Bug 956525 - Replace 'Lower lower' in log messages with 'Lower layer'. r=abr
Bug 1004376 - Remove reliance on legacy skia apis GETTOTALCLIP. r=gw280
Bug 1027157 - Make warnings reported with JSEXN_NONE so that they don't appear as errors in the console. r=Waldo
Bug 1028426 - Move check for unused speculative connections to where they are removed. r=hurley
Back out bug 1021248 for causing bug 1028271. r=backout
Bug 1028588 - Fix dangerous public destructors in gfx - r=jrmuizel
Bug 1028588 - Fix dangerous public destructors in image/ - r=jrmuizel
Bug 1028588 - Fix dangerous public destructors in js/xpconnect - r=bholley
Bug 1028588 - Fix dangerous public destructors in dom/bindings - r=bz
Bug 1028588 - Fix dangerous public destructors in docshell/ - r=smaug
Bug 1028588 - Fix dangerous public destructors in uriloader - r=smaug
Bug 1028420 - Non-unified build fails when using --enable-warnings-as-errors - bustage fix, no review
Bug 645416, part 1 - Add an enum for symbols to JSValueType. r=nbp.

JSVAL_TYPE_SYMBOL is inserted between STRING and NULL, rather than added at the
end, in order to preserve all the inequality relations on JSValueTypes used
throughout Value.h. (Search the header for the operators < > <= >=.)

Otherwise, this pretty much just works. Some details of Ion snapshot layout
had to change to accommodate 4-bit types.

--HG--
extra : rebase_source : e3141e6a9ee32ef563dab43a4942a9e67d234865
Bug 645416, part 2 - Add support for symbols to JS::Value. r=luke.

The API for symbol Values is much like the API for strings.

The implementation behind all this is in a later patch. Here, a class
JS::Symbol is declared, but not defined anywhere yet.

The constants being deleted from js/public/Value.h probably haven't been used
since Tracemonkey days.

--HG--
extra : rebase_source : 5b2d0cc4d99223483e850ee80913eef3854c427c
Bug 645416, part 3 - Symbol layout and GC support for allocating them. r=terrence.

Layout: js/src/vm/Symbol.h defines the new class JS::Symbol. JS::Symbol is the
same size as JSString on all platforms, because the allocator does not support
smaller allocations.

Allocation: Since the purpose of symbols is to serve as property keys, they are
always allocated in the atoms compartment.

We take a lock when allocating. This could probably be replaced with a
main-thread-only assertion. However, if atom allocation is not already a
bottleneck, symbol allocation probably never will be.

Symbols are given their own finalize-class in the GC. This means we allocate a
page per zone for symbols, even though they are only ever allocated in the
atoms zone. Terrence thought this could be easily fixed later. It should be; we
never touch the page, but a 32-bit virtual address space does not just have
infinite pages to spare.

A jsapi-test exercises the new symbol allocation code. A few oddities in
jsapi-tests are fixed in passing.

Discussion after review led to some new assertions about minimum object size in
AllocateObject and AllocateNonObject.

--HG--
extra : rebase_source : 45abb651d3b1b493d77a5dd0eb554f96b058c63a
Bug 645416, part 4 - Rename DefinePropertiesAndBrand -> DefinePropertiesAndFunctions. r=bhackett.

--HG--
extra : rebase_source : beadd475b66cb17c7fe6f74766a5d90767817cf0
Bug 645416, part 5 - Add the Symbol constructor and Symbol wrapper objects. r=efaust.

This exposes a new primitive type to scripts for the first time since
JavaScript first shipped in Netscape 2, over 13 years ago.

The tests focus on identity, equality, and being able to pass a symbol around
as a value. Of course the point of symbols is that they can be property keys,
but that will have to wait for a later patch in this series.

--HG--
extra : rebase_source : c22cf4b774cca8e7c9f6c757079e054a6eb0f307