Граф коммитов

77 Коммитов

Автор SHA1 Сообщение Дата
Ting-Yu Chou 2a8c9b7ffd Bug 1348099 part 1 - Binary search property id when resolve DOM Xrays own property. r=bz
Currently we resolve a property by iterating every prefable and check whether it
is enabled.  If it is, we linear search the ids that it manages.  This patch
changes that to binary searching to find whether the id being resolved is
present first, and checking whether its prefable is enabled only when we find
it.  This improves the performance of property resolution, especially when the
property is not present.

The patch stores all the property ids a NativePropertiesN owns in a single array
of PropertyInfo structs.  Each struct contains an id and the information needed
to find the corresponding Prefable for the enabled check, as well as the
information needed to find the correct property descriptor in the Prefable.  We
also store an array of indices into the PropertyInfo array, sorted by bits of
the corresponding jsid.  Given a jsid, this allows us to binary search for the
index of the corresponding PropertyInfo, if any.  The index array requires 2
bytes for each property, which is ~20k across all our bindings.  The extra
information stored in each PropertyInfo requires 4 bytes for each property,
which is about 40k across all our bindings in 32-bit builds, or 80k in 64-bit
builds due to alignment requirements on PropertyInfo.  However we save a bit of
memory from changing NativePropertiesN's trios to duos.

The array of unsorted ids is kept because XrayOwnPropertyKeys() includes only
properties that are enabled.  Without it, we will need to check every single
property to know whether its prefable is enabled or not, which is inefficient.

With this patch, initializing property ids takes longer because of the sorting.
I measured also insertion sort because I thought the ids should be nearly sorted
as they are generated sequentially at run time, but that's not the case and
NS_QuickSort() runs faster.

MozReview-Commit-ID: Lc4Z1ui3t0o

--HG--
extra : rebase_source : 314efe467a14428c57f90af2ecc0ec5c47a31993
2017-06-12 12:13:38 +08:00
Andrea Marchesini 8524257019 Bug 1290021 - Implement a prototype version of Houdini "Worklets Level 1" spec - part 2 - WorkletGlobalScope, r=smaug 2016-11-06 09:54:29 +01:00
Boris Zbarsky 598f3f4180 Bug 1021289 part 4. Implement support for WebIDL deleters over Xrays. r=peterv 2016-11-04 12:41:26 -04:00
Boris Zbarsky bb0814b5d3 Bug 946906 part 4. Codegen Xray expando JSClasses for DOM objects with [Cached] or [StoreInSlot] members. r=bholley 2016-10-10 18:16:26 -04:00
Boris Zbarsky d7821950f4 Bug 1278583 part 5. Switch DOM code from using hasInstance class hooks to using Symbol.hasInstance. r=peterv 2016-08-03 18:32:07 -07:00
Boris Zbarsky 8e34004cf1 Bug 1288791 part 1. Rename the GetParentObject template bits to make it clearer what they're really doing: finding the associated global for an object's native. r=bkelly 2016-07-27 11:05:36 -04:00
Alexandre Lissy 6798f02654 Bug 1286530 - Clean AvailableIn, CheckAnyPermissions and CheckAllPermissions from WebIDL r=bz,fabrice
MozReview-Commit-ID: 6EQfBM09xUE

--HG--
rename : dom/contacts/tests/test_contacts_cache.xul => dom/contacts/tests/test_contacts_a_cache.xul
rename : dom/contacts/tests/test_contacts_shutdown.xul => dom/contacts/tests/test_contacts_a_shutdown.xul
rename : dom/contacts/tests/test_contacts_upgrade.xul => dom/contacts/tests/test_contacts_a_upgrade.xul
rename : dom/mobilemessage/tests/mochitest/mochitest.ini => dom/mobilemessage/tests/mochitest/chrome.ini
extra : rebase_source : 5f708f2a927fafff66626367ef07080785ba9f55
2016-04-21 15:48:59 +02:00
Boris Zbarsky efc4dcf284 Bug 1275315 part 2. Use the new Realm getters in binding code. r=peterv 2016-07-09 00:19:52 -04:00
Chris Peterson 43c2748f66 Bug 1277775 - Replace MOZ_CONSTEXPR{_VAR,_TMPL} with constexpr. r=froydnj 2016-07-08 14:39:53 -07:00
Jonathan Watt 1f58b22c60 Bug 177957, part 3 - Make the WebIDL code generator support the [SecureContext] extended attribute. r=bz
MozReview-Commit-ID: 3O3V4MTgLuR
2016-05-16 10:04:38 +01:00
Boris Zbarsky 3c3e4fad9c Bug 1272160. Fix XPCWrappedNativeScope::AddSizeOfIncludingThis to not blindly poke at non-DOM globals as if they were DOM globals. r=khuey
I did audit the XPConnect callers of TraceProtoAndIfaceCache and DestroyProtoAndIfaceCache, and they all check JSCLASS_DOM_GLOBAL.
2016-05-13 20:21:40 -04:00
Nicholas Nethercote 8d77da691d Bug 1260653 (follow-up) - Use |MOZ_CONSTEXPR| instead of |constexpr| to unbreak builds with VS 2013. r=birtles. 2016-04-01 13:51:18 +11:00
Nicholas Nethercote 358a6071d9 Bug 1260653 - Shrink NativeProperties. r=bz.
This patch makes NativeProperties variable-length and reduces static data by
110,336 bytes on 64-bit, and half that on 32-bit.

MozReview-Commit-ID: 2etZ5AnEhgO

--HG--
extra : rebase_source : 6a167b64df7da3c6940114782fe08337f04a694d
2016-03-31 09:57:20 +11:00
Nicholas Nethercote f80479d54a Bug 1011826 - Split Prefable into two pieces. r=bz.
The fields in Prefable relating to disabling are usually all zero. This patch
moves them into a new struct PrefableDisablers. This reduces static data size
by 92 KB, which applies to every process. It might also make isEnabled() faster
because the common case only involves one test instead of two.

--HG--
extra : rebase_source : 004eb8221e23b741c4837dd95af93e437edb4587
2016-03-24 06:09:24 +11:00
Nicholas Nethercote a299ce6d78 Bug 1258924 - Reorder DOMIfaceAndProtoJSClass fields to reduce padding. r=bz.
On 64-bit this reduces sizeof(DOMIfaceAndProtoJSClass) from 336 to 328, saving
20 KiB. On 32-bit it should save half that.
2016-03-24 05:54:38 +11:00
Tom Schuster 4d6aaf2f25 Bug 1242214 - Rename JSPropertyDescriptor JS::PropertyDescriptor everywhere else. r=smaug 2016-01-28 11:28:04 +01:00
Boris Zbarsky e4fd35820f Bug 1048695 part 2. Make interface members not be exposed based on their nonExposedGlobals. r=peterv 2015-12-01 12:02:36 -05:00
Boris Zbarsky 09e35c652a Bug 1048695 part 1. Pass the set of globals where a member should NOT be exposed to MemberCondition. r=peterv 2015-12-01 12:02:33 -05:00
Ms2ger a48fdcad15 Bug 1204501 - Update the documentation for DOMJSClass::mParticipant; r=peterv
Workers have cycle collection now, so they're no longer special.
2015-09-14 16:08:02 +02:00
Kan-Ru Chen 5c2f3fc74e Bug 1179718 - Rename CheckPermissions to CheckAnyPermissions. r=bz 2015-07-17 11:07:53 +08:00
Kan-Ru Chen a5886f19c7 Bug 1179718 - Add a CheckAllPermissions extended attribute to WebIDL. r=bz 2015-07-17 11:06:23 +08:00
Andrew McCreight 8b724f91b4 Bug 1174861 - Remove unnecessary Rooted from Prefable::isEnabled(). r=bholley
--HG--
extra : rebase_source : d4c6d8d9a1faabbc690377397e2b1ab3efa1768b
2015-06-15 17:22:00 -04:00
Andrew McCreight 9e8f4b219e Bug 1152551, part 2 - Fix mode lines in dom/. r=jst 2015-05-03 15:32:37 -04:00
Cameron McCormack 03ca266d1b Bug 1146235 - Part 2: Expose @@iterator aliases on XrayWrappers. r=peterv 2015-03-28 11:44:44 +11:00
Peter Van der Beken ebc693bfd7 Bug 787070 - Expandos on the xray of DOM prototypes should have effect on xrays of DOM nodes, make Xrays walk the prototype chain when resolving DOM properties. r=bholley.
* * *
Bug 787070 - Expandos on the xray of DOM prototypes should have effect on xrays of DOM nodes, remove obsolete code. r=bholley.

--HG--
extra : rebase_source : 7a9aa81d3e9d74ed958374942020474147aa4f86
2014-09-15 16:51:40 +02:00
Peter Van der Beken 16b3a0fe7d Bug 787070 - Expandos on the xray of DOM prototypes should have effect on xrays of DOM nodes, add a named properties object type to DOMObjectType and how to get the parent prototype object in DOMIfaceAndProtoJSClass. r=bz, r=bholley.
--HG--
extra : rebase_source : fdd72f5027b365554ab0b986de685204c8030c58
2014-09-09 15:19:10 +02:00
Peter Van der Beken cbd064cb38 Bug 787070 - Expandos on the xray of DOM prototypes should have effect on xrays of DOM nodes, make CreateInterfaceObjects take a js::Class instead of a JSClass. r=bz.
--HG--
extra : rebase_source : 8b37d59b5f43215c5acef9f8219e631024ece207
2014-08-05 12:46:42 +02:00
Bobby Holley 3ee88775ff Bug 1041626 - Make NativeProperties naming more consistent. r=bz 2014-07-23 12:36:21 -07:00
Ms2ger 3b4a60ee80 Bug 1034204 - Implement unforgeable methods; r=bz 2014-07-04 15:02:10 +02:00
Eric Faust f9d65507e2 Bug 1011660 - Remove separate DOMClass struct. (r=bz) 2014-06-18 13:19:19 -07:00
Reuben Morais 978af66e3d Bug 952486 - Add a CheckPermissions extended attribute to WebIDL. r=bz 2014-05-25 15:31:07 -03:00
Fabrice Desré 2deb233e1d Bug 952486 - backout for breaking all device and emulator builds (keeping dom reviewer to land the backout...) r=bz 2014-05-26 12:11:52 -07:00
Reuben Morais 1d0db64ab8 Bug 952486 - Add a CheckPermissions extended attribute to WebIDL. r=bz 2014-05-25 15:31:07 -03:00
Jason Orendorff 4740c9dea6 Bug 547140, part 4 - Remove flags argument from resolve hooks. r=Waldo. 2014-04-25 16:11:02 -05:00
Nathan Froyd 9d5430fc7b Bug 987457 - rename ProtoAndIfaceArray to ProtoAndIfaceCache; r=bz 2014-03-22 13:04:09 -04:00
Boris Zbarsky 5f98263d40 Bug 958667 part 5. Hook up AvailableIn for interface members. r=peterv 2014-02-05 13:38:17 -05:00
Eric Faust 5bd518d6ef Bug 947487 - Part 1: Convert DOMJSClass::mBase from JSClass to js::Class. (r=bz) 2014-02-01 00:29:50 -08:00
Nathan Froyd 7b9a9d912c Bug 940573 - make the global's ProtoAndIfaceArray an actual object; r=bz 2013-11-19 14:28:09 -05:00
Dan Gohman a50084b38d Bug 910823 - Constify static js::Class/JSClass instances. r=waldo 2013-09-11 05:49:05 -07:00
Boris Zbarsky 5962434202 Bug 908351. Stop over-including DOMJSClass.h, so we don't rebuild as much when PrototypeList.h changes. We do this by factoring out the slot macros into a separate header and including that. r=khuey 2013-08-23 22:42:39 -04:00
Nicholas Nethercote 2585de9a07 Bug 905017 (part 1) - Minimize inclusions of JS engine headers in .h and .idl files. r=billm.
--HG--
extra : rebase_source : 984c61ab12f46be0509b1ce0d458d9a6e5841c64
2013-08-17 15:50:18 -07:00
Bobby Holley b0be1f6df6 Bug 907508 - Define the slot count for xpconnect and worker globals in terms of the slots defined in DOMJSClass.h. r=bz 2013-08-20 21:21:00 -07:00
Terrence Cole 09de524f1a Bug 862115 - Use Rooted<JSPropertyDescriptor> in favor of JSPropertyDescriptor::AutoRooter r=terrence r=smaug r=bholley 2013-04-30 10:29:40 -07:00
Ehsan Akhgari 2824b29025 Bug 895322 - Part 1: Replace the usages of MOZ_STATIC_ASSERT with C++11 static_assert; r=Waldo
This patch was mostly generated by running the following scripts on the codebase, with some
manual changes made afterwards:

# static_assert.sh
#!/bin/bash
# Command to convert an NSPR integer type to the equivalent standard integer type

function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
       ! -wholename "*security/nss*" \
       ! -wholename "*/.hg*" \
       ! -wholename "obj-ff-dbg*" \
       ! -name nsXPCOMCID.h \
       ! -name prtypes.h \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.cc" \
         -o -iname "*.mm" \) | \
    xargs -n 1 `dirname $0`/assert_replacer.py #sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_STATIC_ASSERT static_assert
hg rev --no-backup mfbt/Assertions.h \
                   media/webrtc/signaling/src/sipcc/core/includes/ccapi.h \
                   modules/libmar/src/mar_private.h \
                   modules/libmar/src/mar.h


# assert_replacer.py
#!/usr/bin/python

import sys
import re

pattern = re.compile(r"\bMOZ_STATIC_ASSERT\b")

def replaceInPlace(fname):
  print fname
  f = open(fname, "rw+")
  lines = f.readlines()
  for i in range(0, len(lines)):
    while True:
      index = re.search(pattern, lines[i])
      if index != None:
        index = index.start()
        lines[i] = lines[i][0:index] + "static_assert" + lines[i][index+len("MOZ_STATIC_ASSERT"):]
        for j in range(i + 1, len(lines)):
          if lines[j].find("                 ", index) == index:
            lines[j] = lines[j][0:index] + lines[j][index+4:]
          else:
            break
      else:
        break
  f.seek(0, 0)
  f.truncate()
  f.write("".join(lines))
  f.close()

argc = len(sys.argv)
for i in range(1, argc):
  replaceInPlace(sys.argv[i])

--HG--
extra : rebase_source : 4b4a4047d82f2c205b9fad8d56dfc3f1afc0b045
2013-07-18 13:59:53 -04:00
Jon Coppeard a0056f5fa0 Bug 888338 - 6 - more browser post barriers r=mccr8 2013-07-23 10:58:27 +01:00
Boris Zbarsky 7640b170ac Bug 865969 part 6. Fix rooting hazards in BindingUtils.cpp. r=smaug 2013-05-03 19:29:08 -04:00
Boris Zbarsky 8766287733 Bug 861022 part 2. Root the global object in WebIDL prototype and interface object setup. r=peterv,terrence 2013-05-01 23:44:12 -04:00
Boris Zbarsky d975beea20 Bug 861022 part 1. Root the non-globals in WebIDL prototype and interface object setup. r=peterv,terrence 2013-05-01 23:44:11 -04:00
Boris Zbarsky 47de9d3ebe Bug 864727 part 4. Pass a handle for the scope object to all the various Wrap*Object stuff in BindingUtils. r=ms2ger
Note: The JS::Rooted in CGWrapWithCacheMethod is just there until we start passing a handle to Wrap().
2013-04-25 12:29:53 -04:00
Peter Van der Beken bfcf81990d Bug 852094 - Support Unforgeable on proxy-based DOM bindings. r=bz. 2012-12-20 10:56:11 +01:00