author Jan de Mooij <>
Sat, 12 Jan 2019 10:50:04 +0000
changeset 453631 cfa1c48c717048f00eb4811b5719cd716eb1e5b3
parent 440267 a3fa8bb51b3c4a1d3751fddf3db69bc770eb8aae
permissions -rw-r--r--
Bug 1518753 part 5 - Stop using JSProtoKey for initial shapes. r=tcampbell I added this optimization in bug 1299107 to share more shapes across compartments. Unfortunately this doesn't play well with same-compartment realms (ICs can misbehave) because it relies on compartments being isolated from each other. I think we should remove this optimization: * Fixing the IC issue is impossible without deoptimizing everything. * I added it mainly for chrome globals. The shared-JSM-global work has eliminated the need for this there. * Same-compartment realms win memory back by eliminating CCWs etc. * It's quite a lot of complicated code. Differential Revision:

diff --git jmorecfg.h jmorecfg.h
--- jmorecfg.h
+++ jmorecfg.h
@@ -13,8 +13,9 @@
  * JPEG software for special applications or support machine-dependent
  * optimizations.  Most users will not need to touch this file.
+#include <stdint.h>
  * Maximum number of components (color channels) allowed in JPEG image.
  * To meet the letter of Rec. ITU-T T.81 | ISO/IEC 10918-1, set this to 255.
@@ -122,31 +123,17 @@ typedef char JOCTET;
 /* UINT8 must hold at least the values 0..255. */
-typedef unsigned char UINT8;
-#else /* not HAVE_UNSIGNED_CHAR */
-#ifdef __CHAR_UNSIGNED__
-typedef char UINT8;
-#else /* not __CHAR_UNSIGNED__ */
-typedef short UINT8;
-#endif /* __CHAR_UNSIGNED__ */
-#endif /* HAVE_UNSIGNED_CHAR */
+typedef uint8_t UINT8;
 /* UINT16 must hold at least the values 0..65535. */
-typedef unsigned short UINT16;
-#else /* not HAVE_UNSIGNED_SHORT */
-typedef unsigned int UINT16;
+typedef uint16_t UINT16;
 /* INT16 must hold at least the values -32768..32767. */
-#ifndef XMD_H                   /* X11/xmd.h correctly defines INT16 */
-typedef short INT16;
+typedef int16_t INT16;
 /* INT32 must hold at least signed 32-bit values.
  * NOTE: The INT32 typedef dates back to libjpeg v5 (1994.)  Integers were
@@ -171,17 +158,9 @@ typedef short INT16;
  * for internal use, which ensures that internal behavior will always be the
  * same regardless of any external headers that may be included.
-#ifndef XMD_H                   /* X11/xmd.h correctly defines INT32 */
-#ifndef _BASETSD_H_             /* Microsoft defines it in basetsd.h */
-#ifndef _BASETSD_H              /* MinGW is slightly different */
-#ifndef QGLOBAL_H               /* Qt defines it in qglobal.h */
-typedef long INT32;
+typedef int32_t INT32;
 /* Datatype used for image dimensions.  The JPEG standard only supports
  * images up to 64K*64K due to 16-bit fields in SOF markers.  Therefore
  * "unsigned int" is sufficient on all machines.  However, if you need to