]> git.wh0rd.org - ICEs.git/blobdiff - 434452/ObjectImpl.ii.0
more
[ICEs.git] / 434452 / ObjectImpl.ii.0
diff --git a/434452/ObjectImpl.ii.0 b/434452/ObjectImpl.ii.0
new file mode 100644 (file)
index 0000000..d95c290
--- /dev/null
@@ -0,0 +1,63541 @@
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.cpp"
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/obj-armv7l-unknown-linux-gnueabi/js/src//"
+# 1 "<eingebaut>"
+#define __STDC__ 1
+#define __cplusplus 1
+#define __STDC_HOSTED__ 1
+#define __GNUC__ 4
+#define __GNUC_MINOR__ 5
+#define __GNUC_PATCHLEVEL__ 4
+#define __GNUG__ 4
+#define __SIZE_TYPE__ unsigned int
+#define __PTRDIFF_TYPE__ int
+#define __WCHAR_TYPE__ unsigned int
+#define __WINT_TYPE__ unsigned int
+#define __INTMAX_TYPE__ long long int
+#define __UINTMAX_TYPE__ long long unsigned int
+#define __CHAR16_TYPE__ short unsigned int
+#define __CHAR32_TYPE__ unsigned int
+#define __SIG_ATOMIC_TYPE__ int
+#define __INT8_TYPE__ signed char
+#define __INT16_TYPE__ short int
+#define __INT32_TYPE__ int
+#define __INT64_TYPE__ long long int
+#define __UINT8_TYPE__ unsigned char
+#define __UINT16_TYPE__ short unsigned int
+#define __UINT32_TYPE__ unsigned int
+#define __UINT64_TYPE__ long long unsigned int
+#define __INT_LEAST8_TYPE__ signed char
+#define __INT_LEAST16_TYPE__ short int
+#define __INT_LEAST32_TYPE__ int
+#define __INT_LEAST64_TYPE__ long long int
+#define __UINT_LEAST8_TYPE__ unsigned char
+#define __UINT_LEAST16_TYPE__ short unsigned int
+#define __UINT_LEAST32_TYPE__ unsigned int
+#define __UINT_LEAST64_TYPE__ long long unsigned int
+#define __INT_FAST8_TYPE__ signed char
+#define __INT_FAST16_TYPE__ int
+#define __INT_FAST32_TYPE__ int
+#define __INT_FAST64_TYPE__ long long int
+#define __UINT_FAST8_TYPE__ unsigned char
+#define __UINT_FAST16_TYPE__ unsigned int
+#define __UINT_FAST32_TYPE__ unsigned int
+#define __UINT_FAST64_TYPE__ long long unsigned int
+#define __INTPTR_TYPE__ int
+#define __UINTPTR_TYPE__ unsigned int
+#define __GXX_WEAK__ 1
+#define __DEPRECATED 1
+#define __EXCEPTIONS 1
+#define __GXX_ABI_VERSION 1002
+#define __SCHAR_MAX__ 127
+#define __SHRT_MAX__ 32767
+#define __INT_MAX__ 2147483647
+#define __LONG_MAX__ 2147483647L
+#define __LONG_LONG_MAX__ 9223372036854775807LL
+#define __WCHAR_MAX__ 4294967295U
+#define __WCHAR_MIN__ 0U
+#define __WINT_MAX__ 4294967295U
+#define __WINT_MIN__ 0U
+#define __PTRDIFF_MAX__ 2147483647
+#define __SIZE_MAX__ 4294967295U
+#define __CHAR_BIT__ 8
+#define __INTMAX_MAX__ 9223372036854775807LL
+#define __INTMAX_C(c) c ## LL
+#define __UINTMAX_MAX__ 18446744073709551615ULL
+#define __UINTMAX_C(c) c ## ULL
+#define __SIG_ATOMIC_MAX__ 2147483647
+#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
+#define __INT8_MAX__ 127
+#define __INT16_MAX__ 32767
+#define __INT32_MAX__ 2147483647
+#define __INT64_MAX__ 9223372036854775807LL
+#define __UINT8_MAX__ 255
+#define __UINT16_MAX__ 65535
+#define __UINT32_MAX__ 4294967295U
+#define __UINT64_MAX__ 18446744073709551615ULL
+#define __INT_LEAST8_MAX__ 127
+#define __INT8_C(c) c
+#define __INT_LEAST16_MAX__ 32767
+#define __INT16_C(c) c
+#define __INT_LEAST32_MAX__ 2147483647
+#define __INT32_C(c) c
+#define __INT_LEAST64_MAX__ 9223372036854775807LL
+#define __INT64_C(c) c ## LL
+#define __UINT_LEAST8_MAX__ 255
+#define __UINT8_C(c) c
+#define __UINT_LEAST16_MAX__ 65535
+#define __UINT16_C(c) c
+#define __UINT_LEAST32_MAX__ 4294967295U
+#define __UINT32_C(c) c ## U
+#define __UINT_LEAST64_MAX__ 18446744073709551615ULL
+#define __UINT64_C(c) c ## ULL
+#define __INT_FAST8_MAX__ 127
+#define __INT_FAST16_MAX__ 2147483647
+#define __INT_FAST32_MAX__ 2147483647
+#define __INT_FAST64_MAX__ 9223372036854775807LL
+#define __UINT_FAST8_MAX__ 255
+#define __UINT_FAST16_MAX__ 4294967295U
+#define __UINT_FAST32_MAX__ 4294967295U
+#define __UINT_FAST64_MAX__ 18446744073709551615ULL
+#define __INTPTR_MAX__ 2147483647
+#define __UINTPTR_MAX__ 4294967295U
+#define __FLT_EVAL_METHOD__ 0
+#define __DEC_EVAL_METHOD__ 2
+#define __FLT_RADIX__ 2
+#define __FLT_MANT_DIG__ 24
+#define __FLT_DIG__ 6
+#define __FLT_MIN_EXP__ (-125)
+#define __FLT_MIN_10_EXP__ (-37)
+#define __FLT_MAX_EXP__ 128
+#define __FLT_MAX_10_EXP__ 38
+#define __FLT_MAX__ 3.4028234663852886e+38F
+#define __FLT_MIN__ 1.1754943508222875e-38F
+#define __FLT_EPSILON__ 1.1920928955078125e-7F
+#define __FLT_DENORM_MIN__ 1.4012984643248171e-45F
+#define __FLT_HAS_DENORM__ 1
+#define __FLT_HAS_INFINITY__ 1
+#define __FLT_HAS_QUIET_NAN__ 1
+#define __DBL_MANT_DIG__ 53
+#define __DBL_DIG__ 15
+#define __DBL_MIN_EXP__ (-1021)
+#define __DBL_MIN_10_EXP__ (-307)
+#define __DBL_MAX_EXP__ 1024
+#define __DBL_MAX_10_EXP__ 308
+#define __DBL_MAX__ ((double)1.7976931348623157e+308L)
+#define __DBL_MIN__ ((double)2.2250738585072014e-308L)
+#define __DBL_EPSILON__ ((double)2.2204460492503131e-16L)
+#define __DBL_DENORM_MIN__ ((double)4.9406564584124654e-324L)
+#define __DBL_HAS_DENORM__ 1
+#define __DBL_HAS_INFINITY__ 1
+#define __DBL_HAS_QUIET_NAN__ 1
+#define __LDBL_MANT_DIG__ 53
+#define __LDBL_DIG__ 15
+#define __LDBL_MIN_EXP__ (-1021)
+#define __LDBL_MIN_10_EXP__ (-307)
+#define __LDBL_MAX_EXP__ 1024
+#define __LDBL_MAX_10_EXP__ 308
+#define __DECIMAL_DIG__ 17
+#define __LDBL_MAX__ 1.7976931348623157e+308L
+#define __LDBL_MIN__ 2.2250738585072014e-308L
+#define __LDBL_EPSILON__ 2.2204460492503131e-16L
+#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
+#define __LDBL_HAS_DENORM__ 1
+#define __LDBL_HAS_INFINITY__ 1
+#define __LDBL_HAS_QUIET_NAN__ 1
+#define __DEC32_MANT_DIG__ 7
+#define __DEC32_MIN_EXP__ (-94)
+#define __DEC32_MAX_EXP__ 97
+#define __DEC32_MIN__ 1E-95DF
+#define __DEC32_MAX__ 9.999999E96DF
+#define __DEC32_EPSILON__ 1E-6DF
+#define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF
+#define __DEC64_MANT_DIG__ 16
+#define __DEC64_MIN_EXP__ (-382)
+#define __DEC64_MAX_EXP__ 385
+#define __DEC64_MIN__ 1E-383DD
+#define __DEC64_MAX__ 9.999999999999999E384DD
+#define __DEC64_EPSILON__ 1E-15DD
+#define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD
+#define __DEC128_MANT_DIG__ 34
+#define __DEC128_MIN_EXP__ (-6142)
+#define __DEC128_MAX_EXP__ 6145
+#define __DEC128_MIN__ 1E-6143DL
+#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
+#define __DEC128_EPSILON__ 1E-33DL
+#define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL
+#define __REGISTER_PREFIX__ 
+#define __USER_LABEL_PREFIX__ 
+#define __VERSION__ "4.5.4"
+#define __GNUC_GNU_INLINE__ 1
+#define __OPTIMIZE__ 1
+#define __FINITE_MATH_ONLY__ 0
+#define __pic__ 2
+#define __PIC__ 2
+#define __CHAR_UNSIGNED__ 1
+#define __WCHAR_UNSIGNED__ 1
+#define __GCC_HAVE_DWARF2_CFI_ASM 1
+#define __PRAGMA_REDEFINE_EXTNAME 1
+#define __SIZEOF_INT__ 4
+#define __SIZEOF_LONG__ 4
+#define __SIZEOF_LONG_LONG__ 8
+#define __SIZEOF_SHORT__ 2
+#define __SIZEOF_FLOAT__ 4
+#define __SIZEOF_DOUBLE__ 8
+#define __SIZEOF_LONG_DOUBLE__ 8
+#define __SIZEOF_SIZE_T__ 4
+#define __SIZEOF_WCHAR_T__ 4
+#define __SIZEOF_WINT_T__ 4
+#define __SIZEOF_PTRDIFF_T__ 4
+#define __SIZEOF_POINTER__ 4
+#define __arm__ 1
+#define __APCS_32__ 1
+#define __ARMEL__ 1
+#define __VFP_FP__ 1
+#define __THUMB_INTERWORK__ 1
+#define __ARM_ARCH_7A__ 1
+#define __ARM_PCS_VFP 1
+#define __ARM_EABI__ 1
+#define __GXX_TYPEINFO_EQUALITY_INLINE 0
+#define __gnu_linux__ 1
+#define __linux 1
+#define __linux__ 1
+#define linux 1
+#define __unix 1
+#define __unix__ 1
+#define unix 1
+#define __ELF__ 1
+#define __BIGGEST_ALIGNMENT__ 8
+# 1 "<Kommandozeile>"
+#define _GNU_SOURCE 1
+#define _REENTRANT 1
+#define MOZ_GLUE_IN_PROGRAM 1
+#define EXPORT_JS_API 1
+#define JS_HAS_CTYPES 1
+#define DLL_PREFIX "lib"
+#define DLL_SUFFIX ".so"
+#define NO_NSPR_10_SUPPORT 1
+#define NDEBUG 1
+#define TRIMMED 1
+#define USE_SYSTEM_MALLOC 1
+#define ENABLE_ASSEMBLER 1
+#define ENABLE_JIT 1
+#define MOZILLA_CLIENT 1
+#define _FORTIFY_SOURCE 2
+# 1 "././js-confdefs.h" 1
+
+
+
+
+
+
+#define _JS_CONFDEFS_H_ 
+
+#define CPP_THROW_NEW throw()
+#define CROSS_COMPILE 1
+#define D_INO d_ino
+#define EDITLINE 1
+#define HAVE_ARM_NEON 1
+#define HAVE_ARM_SIMD 1
+#define HAVE_CPP_AMBIGUITY_RESOLVING_USING 1
+#define HAVE_CPP_DYNAMIC_CAST_TO_VOID_PTR 1
+#define HAVE_CPP_PARTIAL_SPECIALIZATION 1
+#define HAVE_DIRENT_H 1
+#define HAVE_DLADDR 1
+#define HAVE_DLOPEN 1
+#define HAVE_ENDIAN_H 1
+#define HAVE_FCHMOD 1
+#define HAVE_FLOCKFILE 1
+#define HAVE_GETC_UNLOCKED 1
+#define HAVE_GETOPT_H 1
+#define HAVE_GETPAGESIZE 1
+#define HAVE_GNU_GET_LIBC_VERSION 1
+#define HAVE_GNU_LIBC_VERSION_H 1
+#define HAVE_I18N_LC_MESSAGES 1
+#define HAVE_ICONV 1
+#define HAVE_LCHOWN 1
+#define HAVE_LINUX_QUOTA_H 1
+#define HAVE_LOCALECONV 1
+#define HAVE_LOCALECONV 1
+#define HAVE_LOCALTIME_R 1
+#define HAVE_LSTAT64 1
+#define HAVE_MALLOC_H 1
+#define HAVE_MBRTOWC 1
+#define HAVE_MEMALIGN 1
+#define HAVE_MEMMOVE 1
+#define HAVE_MEMORY_H 1
+#define HAVE_MMINTRIN_H 1
+#define HAVE_NL_TYPES_H 1
+#define HAVE_POSIX_FALLOCATE 1
+#define HAVE_POSIX_MEMALIGN 1
+#define HAVE_RANDOM 1
+#define HAVE_RES_NINIT 1
+#define HAVE_SBRK 1
+#define HAVE_SETLOCALE 1
+#define HAVE_SIGINFO_T 1
+#define HAVE_SNPRINTF 1
+#define HAVE_SSIZE_T 1
+#define HAVE_STAT64 1
+#define HAVE_STATVFS 1
+#define HAVE_STATVFS64 1
+#define HAVE_STRERROR 1
+#define HAVE_STRNDUP 1
+#define HAVE_STRTOK_R 1
+#define HAVE_ST_BLKSIZE 1
+#define HAVE_SYS_BITYPES_H 1
+#define HAVE_SYS_CDEFS_H 1
+#define HAVE_SYS_MOUNT_H 1
+#define HAVE_SYS_QUOTA_H 1
+#define HAVE_SYS_STATFS_H 1
+#define HAVE_SYS_STATVFS_H 1
+#define HAVE_SYS_VFS_H 1
+#define HAVE_THREAD_TLS_KEYWORD 1
+#define HAVE_TM_ZONE_TM_GMTOFF 1
+#define HAVE_TRUNCATE64 1
+#define HAVE_UINT 1
+#define HAVE_UNAME_DOMAINNAME_FIELD 1
+#define HAVE_UNISTD_H 1
+#define HAVE_VALLOC 1
+#define HAVE_VA_COPY 1
+#define HAVE_VISIBILITY_ATTRIBUTE 1
+#define HAVE_VISIBILITY_HIDDEN_ATTRIBUTE 1
+#define HAVE_WCRTOMB 1
+#define HAVE_X11_XKBLIB_H 1
+#define HAVE__UNWIND_BACKTRACE 1
+#define HAVE___CXA_DEMANGLE 1
+#define JSGC_INCREMENTAL 1
+#define JS_ALIGN_OF_POINTER 4
+#define JS_BITS_PER_WORD_LOG2 5
+#define JS_BYTES_PER_DOUBLE 8
+#define JS_BYTES_PER_WORD 4
+#define JS_CPU_ARM 1
+#define JS_DEFAULT_JITREPORT_GRANULARITY 3
+#define JS_HAS_CTYPES 1
+#define JS_HAS_XML_SUPPORT 1
+#define JS_HAVE_ENDIAN_H 1
+#define JS_METHODJIT 1
+#define JS_MONOIC 1
+#define JS_NUNBOX32 1
+#define JS_POLYIC 1
+#define JS_THREADSAFE 1
+#define MALLOC_H <malloc.h>
+#define MOZ_DEBUG_SYMBOLS 1
+#define MOZ_DLL_SUFFIX ".so"
+#define MOZ_MEMORY 1
+#define MOZ_MEMORY_LINUX 1
+#define MOZ_MEMORY_SIZEOF_PTR_2POW 2
+#define NEED_CPP_UNUSED_IMPLEMENTATIONS 1
+#define NEW_H <new>
+#define NS_ALWAYS_INLINE __attribute__((always_inline))
+#define NS_ATTR_MALLOC __attribute__((malloc))
+#define NS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
+#define SIZEOF_INT_P 4
+#define STATIC_EXPORTABLE_JS_API 1
+#define STDC_HEADERS 1
+#define UNIX_ASYNC_DNS 1
+#define VA_COPY va_copy
+#define XP_UNIX 1
+#define _REENTRANT 1
+
+
+
+
+#define __STDC_LIMIT_MACROS 
+# 1 "<Kommandozeile>" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.cpp"
+
+
+
+
+
+
+
+# 1 "./../../dist/include/mozilla/Assertions.h" 1
+# 11 "./../../dist/include/mozilla/Assertions.h"
+#define mozilla_Assertions_h_ 
+
+# 1 "./../../dist/include/mozilla/Attributes.h" 1
+# 11 "./../../dist/include/mozilla/Attributes.h"
+#define mozilla_Attributes_h_ 
+# 25 "./../../dist/include/mozilla/Attributes.h"
+#define MOZ_INLINE inline
+# 46 "./../../dist/include/mozilla/Attributes.h"
+#define MOZ_ALWAYS_INLINE __attribute__((always_inline)) MOZ_INLINE
+# 106 "./../../dist/include/mozilla/Attributes.h"
+#define MOZ_HAVE_NEVER_INLINE __attribute__((noinline))
+#define MOZ_HAVE_NORETURN __attribute__((noreturn))
+# 125 "./../../dist/include/mozilla/Attributes.h"
+#define MOZ_NEVER_INLINE MOZ_HAVE_NEVER_INLINE
+# 145 "./../../dist/include/mozilla/Attributes.h"
+#define MOZ_NORETURN MOZ_HAVE_NORETURN
+# 159 "./../../dist/include/mozilla/Attributes.h"
+#define MOZ_ASAN_BLACKLIST 
+# 190 "./../../dist/include/mozilla/Attributes.h"
+#define MOZ_DELETE 
+# 231 "./../../dist/include/mozilla/Attributes.h"
+#define MOZ_OVERRIDE 
+# 300 "./../../dist/include/mozilla/Attributes.h"
+#define MOZ_FINAL 
+# 317 "./../../dist/include/mozilla/Attributes.h"
+#define MOZ_WARN_UNUSED_RESULT __attribute__ ((warn_unused_result))
+# 14 "./../../dist/include/mozilla/Assertions.h" 2
+# 1 "./../../dist/include/mozilla/Types.h" 1
+# 11 "./../../dist/include/mozilla/Types.h"
+#define mozilla_Types_h_ 
+# 24 "./../../dist/include/mozilla/Types.h"
+# 1 "./../../dist/include/mozilla/StandardInteger.h" 1
+# 11 "./../../dist/include/mozilla/StandardInteger.h"
+#define mozilla_StandardInteger_h_ 
+# 42 "./../../dist/include/mozilla/StandardInteger.h"
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stdint.h" 1 3 4
+
+
+# 1 "/usr/include/stdint.h" 1 3 4
+# 24 "/usr/include/stdint.h" 3 4
+#define _STDINT_H 1
+
+# 1 "/usr/include/features.h" 1 3 4
+# 21 "/usr/include/features.h" 3 4
+#define _FEATURES_H 1
+# 98 "/usr/include/features.h" 3 4
+#undef __USE_ISOC99
+#undef __USE_ISOC95
+#undef __USE_POSIX
+#undef __USE_POSIX2
+#undef __USE_POSIX199309
+#undef __USE_POSIX199506
+#undef __USE_XOPEN
+#undef __USE_XOPEN_EXTENDED
+#undef __USE_UNIX98
+#undef __USE_XOPEN2K
+#undef __USE_XOPEN2KXSI
+#undef __USE_XOPEN2K8
+#undef __USE_XOPEN2K8XSI
+#undef __USE_LARGEFILE
+#undef __USE_LARGEFILE64
+#undef __USE_FILE_OFFSET64
+#undef __USE_BSD
+#undef __USE_SVID
+#undef __USE_MISC
+#undef __USE_ATFILE
+#undef __USE_GNU
+#undef __USE_REENTRANT
+#undef __USE_FORTIFY_LEVEL
+#undef __FAVOR_BSD
+#undef __KERNEL_STRICT_NAMES
+
+
+
+
+#define __KERNEL_STRICT_NAMES 
+
+
+
+#define __USE_ANSI 1
+# 141 "/usr/include/features.h" 3 4
+#define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+# 157 "/usr/include/features.h" 3 4
+#undef _ISOC95_SOURCE
+#define _ISOC95_SOURCE 1
+#undef _ISOC99_SOURCE
+#define _ISOC99_SOURCE 1
+#undef _POSIX_SOURCE
+#define _POSIX_SOURCE 1
+#undef _POSIX_C_SOURCE
+#define _POSIX_C_SOURCE 200809L
+#undef _XOPEN_SOURCE
+#define _XOPEN_SOURCE 700
+#undef _XOPEN_SOURCE_EXTENDED
+#define _XOPEN_SOURCE_EXTENDED 1
+#undef _LARGEFILE64_SOURCE
+#define _LARGEFILE64_SOURCE 1
+#undef _BSD_SOURCE
+#define _BSD_SOURCE 1
+#undef _SVID_SOURCE
+#define _SVID_SOURCE 1
+#undef _ATFILE_SOURCE
+#define _ATFILE_SOURCE 1
+# 194 "/usr/include/features.h" 3 4
+#define __USE_ISOC99 1
+
+
+
+
+
+#define __USE_ISOC95 1
+# 221 "/usr/include/features.h" 3 4
+#define __USE_POSIX 1
+
+
+
+#define __USE_POSIX2 1
+
+
+
+#define __USE_POSIX199309 1
+
+
+
+#define __USE_POSIX199506 1
+
+
+
+#define __USE_XOPEN2K 1
+#undef __USE_ISOC95
+#define __USE_ISOC95 1
+#undef __USE_ISOC99
+#define __USE_ISOC99 1
+
+
+
+#define __USE_XOPEN2K8 1
+#undef _ATFILE_SOURCE
+#define _ATFILE_SOURCE 1
+
+
+
+#define __USE_XOPEN 1
+
+#define __USE_XOPEN_EXTENDED 1
+#define __USE_UNIX98 1
+#undef _LARGEFILE_SOURCE
+#define _LARGEFILE_SOURCE 1
+
+
+#define __USE_XOPEN2K8 1
+#define __USE_XOPEN2K8XSI 1
+
+#define __USE_XOPEN2K 1
+#define __USE_XOPEN2KXSI 1
+#undef __USE_ISOC95
+#define __USE_ISOC95 1
+#undef __USE_ISOC99
+#define __USE_ISOC99 1
+# 277 "/usr/include/features.h" 3 4
+#define __USE_LARGEFILE 1
+
+
+
+#define __USE_LARGEFILE64 1
+
+
+
+
+
+
+
+#define __USE_MISC 1
+
+
+
+#define __USE_BSD 1
+
+
+
+#define __USE_SVID 1
+
+
+
+#define __USE_ATFILE 1
+
+
+
+#define __USE_GNU 1
+
+
+
+#define __USE_REENTRANT 1
+
+
+
+
+
+#define __USE_FORTIFY_LEVEL 2
+# 324 "/usr/include/features.h" 3 4
+#define __STDC_IEC_559__ 1
+#define __STDC_IEC_559_COMPLEX__ 1
+
+
+#define __STDC_ISO_10646__ 200009L
+
+
+
+
+
+
+
+#undef __GNU_LIBRARY__
+#define __GNU_LIBRARY__ 6
+
+
+
+#define __GLIBC__ 2
+#define __GLIBC_MINOR__ 15
+
+#define __GLIBC_PREREQ(maj,min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
+
+
+
+
+
+
+
+#define __GLIBC_HAVE_LONG_LONG 1
+
+
+
+
+
+# 1 "/usr/include/sys/cdefs.h" 1 3 4
+# 21 "/usr/include/sys/cdefs.h" 3 4
+#define _SYS_CDEFS_H 1
+# 36 "/usr/include/sys/cdefs.h" 3 4
+#undef __P
+#undef __PMT
+# 47 "/usr/include/sys/cdefs.h" 3 4
+#define __LEAF 
+#define __LEAF_ATTR 
+# 62 "/usr/include/sys/cdefs.h" 3 4
+#define __THROW throw ()
+#define __THROWNL throw ()
+#define __NTH(fct) __LEAF_ATTR fct throw ()
+# 88 "/usr/include/sys/cdefs.h" 3 4
+#define __P(args) args
+#define __PMT(args) args
+
+
+
+
+#define __CONCAT(x,y) x ## y
+#define __STRING(x) #x
+
+
+#define __ptr_t void *
+#define __long_double_t long double
+
+
+
+
+#define __BEGIN_DECLS extern "C" {
+#define __END_DECLS }
+# 128 "/usr/include/sys/cdefs.h" 3 4
+#define __BEGIN_NAMESPACE_STD 
+#define __END_NAMESPACE_STD 
+#define __USING_NAMESPACE_STD(name) 
+#define __BEGIN_NAMESPACE_C99 
+#define __END_NAMESPACE_C99 
+#define __USING_NAMESPACE_C99(name) 
+
+
+
+
+
+#define __bounded 
+#define __unbounded 
+#define __ptrvalue 
+
+
+
+
+#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
+#define __bos0(ptr) __builtin_object_size (ptr, 0)
+
+
+#define __warndecl(name,msg) extern void name (void) __attribute__((__warning__ (msg)))
+
+#define __warnattr(msg) __attribute__((__warning__ (msg)))
+#define __errordecl(name,msg) extern void name (void) __attribute__((__error__ (msg)))
+# 164 "/usr/include/sys/cdefs.h" 3 4
+#define __flexarr []
+# 191 "/usr/include/sys/cdefs.h" 3 4
+#define __REDIRECT(name,proto,alias) name proto __asm__ (__ASMNAME (#alias))
+
+#define __REDIRECT_NTH(name,proto,alias) name proto __THROW __asm__ (__ASMNAME (#alias))
+
+#define __REDIRECT_NTHNL(name,proto,alias) name proto __THROWNL __asm__ (__ASMNAME (#alias))
+
+
+
+
+
+
+
+#define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+#define __ASMNAME2(prefix,cname) __STRING (prefix) cname
+# 225 "/usr/include/sys/cdefs.h" 3 4
+#define __attribute_malloc__ __attribute__ ((__malloc__))
+# 234 "/usr/include/sys/cdefs.h" 3 4
+#define __attribute_pure__ __attribute__ ((__pure__))
+
+
+
+
+
+
+#define __attribute_const__ __attribute__ ((__const__))
+# 250 "/usr/include/sys/cdefs.h" 3 4
+#define __attribute_used__ __attribute__ ((__used__))
+#define __attribute_noinline__ __attribute__ ((__noinline__))
+
+
+
+
+
+
+
+#define __attribute_deprecated__ __attribute__ ((__deprecated__))
+# 271 "/usr/include/sys/cdefs.h" 3 4
+#define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
+# 281 "/usr/include/sys/cdefs.h" 3 4
+#define __attribute_format_strfmon__(a,b) __attribute__ ((__format__ (__strfmon__, a, b)))
+# 290 "/usr/include/sys/cdefs.h" 3 4
+#define __nonnull(params) __attribute__ ((__nonnull__ params))
+
+
+
+
+
+
+
+#define __attribute_warn_unused_result__ __attribute__ ((__warn_unused_result__))
+
+
+#define __wur __attribute_warn_unused_result__
+# 312 "/usr/include/sys/cdefs.h" 3 4
+#define __always_inline __inline __attribute__ ((__always_inline__))
+# 321 "/usr/include/sys/cdefs.h" 3 4
+#define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
+
+#define __extern_always_inline extern __always_inline __attribute__ ((__gnu_inline__, __artificial__))
+# 343 "/usr/include/sys/cdefs.h" 3 4
+#define __va_arg_pack() __builtin_va_arg_pack ()
+#define __va_arg_pack_len() __builtin_va_arg_pack_len ()
+# 367 "/usr/include/sys/cdefs.h" 3 4
+#define __restrict_arr 
+# 378 "/usr/include/sys/cdefs.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 19 "/usr/include/bits/wordsize.h" 3 4
+#define __WORDSIZE 32
+# 379 "/usr/include/sys/cdefs.h" 2 3 4
+# 400 "/usr/include/sys/cdefs.h" 3 4
+#define __LDBL_REDIR1(name,proto,alias) name proto
+#define __LDBL_REDIR(name,proto) name proto
+#define __LDBL_REDIR1_NTH(name,proto,alias) name proto __THROW
+#define __LDBL_REDIR_NTH(name,proto) name proto __THROW
+#define __LDBL_REDIR_DECL(name) 
+
+#define __REDIRECT_LDBL(name,proto,alias) __REDIRECT (name, proto, alias)
+#define __REDIRECT_NTH_LDBL(name,proto,alias) __REDIRECT_NTH (name, proto, alias)
+# 359 "/usr/include/features.h" 2 3 4
+# 374 "/usr/include/features.h" 3 4
+#define __USE_EXTERN_INLINES 1
+
+
+
+
+
+
+
+# 1 "/usr/include/gnu/stubs.h" 1 3 4
+# 10 "/usr/include/gnu/stubs.h" 3 4
+#define __stub_chflags 
+#define __stub_create_module 
+#define __stub_fattach 
+#define __stub_fchflags 
+#define __stub_fdetach 
+#define __stub_get_kernel_syms 
+#define __stub_getcontext 
+#define __stub_getmsg 
+#define __stub_getpmsg 
+#define __stub_gtty 
+#define __stub_lchmod 
+#define __stub_makecontext 
+#define __stub_putmsg 
+#define __stub_putpmsg 
+#define __stub_query_module 
+#define __stub_revoke 
+#define __stub_setcontext 
+#define __stub_setlogin 
+#define __stub_sigreturn 
+#define __stub_sstk 
+#define __stub_stty 
+#define __stub_swapcontext 
+# 383 "/usr/include/features.h" 2 3 4
+# 27 "/usr/include/stdint.h" 2 3 4
+# 1 "/usr/include/bits/wchar.h" 1 3 4
+# 21 "/usr/include/bits/wchar.h" 3 4
+#define _BITS_WCHAR_H 1
+
+#define __WCHAR_MIN (-2147483647 - 1)
+#define __WCHAR_MAX (2147483647)
+# 28 "/usr/include/stdint.h" 2 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 19 "/usr/include/bits/wordsize.h" 3 4
+#define __WORDSIZE 32
+# 29 "/usr/include/stdint.h" 2 3 4
+
+
+
+
+
+
+
+#define __int8_t_defined 
+typedef signed char int8_t;
+typedef short int int16_t;
+typedef int int32_t;
+
+
+
+__extension__
+typedef long long int int64_t;
+
+
+
+
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+
+typedef unsigned int uint32_t;
+#define __uint32_t_defined 
+
+
+
+
+__extension__
+typedef unsigned long long int uint64_t;
+
+
+
+
+
+
+typedef signed char int_least8_t;
+typedef short int int_least16_t;
+typedef int int_least32_t;
+
+
+
+__extension__
+typedef long long int int_least64_t;
+
+
+
+typedef unsigned char uint_least8_t;
+typedef unsigned short int uint_least16_t;
+typedef unsigned int uint_least32_t;
+
+
+
+__extension__
+typedef unsigned long long int uint_least64_t;
+
+
+
+
+
+
+typedef signed char int_fast8_t;
+
+
+
+
+
+typedef int int_fast16_t;
+typedef int int_fast32_t;
+__extension__
+typedef long long int int_fast64_t;
+
+
+
+typedef unsigned char uint_fast8_t;
+
+
+
+
+
+typedef unsigned int uint_fast16_t;
+typedef unsigned int uint_fast32_t;
+__extension__
+typedef unsigned long long int uint_fast64_t;
+# 126 "/usr/include/stdint.h" 3 4
+typedef int intptr_t;
+#define __intptr_t_defined 
+
+typedef unsigned int uintptr_t;
+# 138 "/usr/include/stdint.h" 3 4
+__extension__
+typedef long long int intmax_t;
+__extension__
+typedef unsigned long long int uintmax_t;
+# 153 "/usr/include/stdint.h" 3 4
+#define __INT64_C(c) c ## LL
+#define __UINT64_C(c) c ## ULL
+
+
+
+
+
+#define INT8_MIN (-128)
+#define INT16_MIN (-32767-1)
+#define INT32_MIN (-2147483647-1)
+#define INT64_MIN (-__INT64_C(9223372036854775807)-1)
+
+#define INT8_MAX (127)
+#define INT16_MAX (32767)
+#define INT32_MAX (2147483647)
+#define INT64_MAX (__INT64_C(9223372036854775807))
+
+
+#define UINT8_MAX (255)
+#define UINT16_MAX (65535)
+#define UINT32_MAX (4294967295U)
+#define UINT64_MAX (__UINT64_C(18446744073709551615))
+
+
+
+#define INT_LEAST8_MIN (-128)
+#define INT_LEAST16_MIN (-32767-1)
+#define INT_LEAST32_MIN (-2147483647-1)
+#define INT_LEAST64_MIN (-__INT64_C(9223372036854775807)-1)
+
+#define INT_LEAST8_MAX (127)
+#define INT_LEAST16_MAX (32767)
+#define INT_LEAST32_MAX (2147483647)
+#define INT_LEAST64_MAX (__INT64_C(9223372036854775807))
+
+
+#define UINT_LEAST8_MAX (255)
+#define UINT_LEAST16_MAX (65535)
+#define UINT_LEAST32_MAX (4294967295U)
+#define UINT_LEAST64_MAX (__UINT64_C(18446744073709551615))
+
+
+
+#define INT_FAST8_MIN (-128)
+
+
+
+
+#define INT_FAST16_MIN (-2147483647-1)
+#define INT_FAST32_MIN (-2147483647-1)
+
+#define INT_FAST64_MIN (-__INT64_C(9223372036854775807)-1)
+
+#define INT_FAST8_MAX (127)
+
+
+
+
+#define INT_FAST16_MAX (2147483647)
+#define INT_FAST32_MAX (2147483647)
+
+#define INT_FAST64_MAX (__INT64_C(9223372036854775807))
+
+
+#define UINT_FAST8_MAX (255)
+
+
+
+
+#define UINT_FAST16_MAX (4294967295U)
+#define UINT_FAST32_MAX (4294967295U)
+
+#define UINT_FAST64_MAX (__UINT64_C(18446744073709551615))
+# 234 "/usr/include/stdint.h" 3 4
+#define INTPTR_MIN (-2147483647-1)
+#define INTPTR_MAX (2147483647)
+#define UINTPTR_MAX (4294967295U)
+
+
+
+
+#define INTMAX_MIN (-__INT64_C(9223372036854775807)-1)
+
+#define INTMAX_MAX (__INT64_C(9223372036854775807))
+
+
+#define UINTMAX_MAX (__UINT64_C(18446744073709551615))
+# 256 "/usr/include/stdint.h" 3 4
+#define PTRDIFF_MIN (-2147483647-1)
+#define PTRDIFF_MAX (2147483647)
+
+
+
+#define SIG_ATOMIC_MIN (-2147483647-1)
+#define SIG_ATOMIC_MAX (2147483647)
+
+
+
+
+
+#define SIZE_MAX (4294967295U)
+
+
+
+
+
+#define WCHAR_MIN __WCHAR_MIN
+#define WCHAR_MAX __WCHAR_MAX
+
+
+
+#define WINT_MIN (0u)
+#define WINT_MAX (4294967295u)
+# 4 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stdint.h" 2 3 4
+
+
+
+#define _GCC_WRAP_STDINT_H 
+# 43 "./../../dist/include/mozilla/StandardInteger.h" 2
+# 25 "./../../dist/include/mozilla/Types.h" 2
+
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 40 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#define _STDDEF_H 
+#define _STDDEF_H_ 
+
+#define _ANSI_STDDEF_H 
+
+#define __STDDEF_H__ 
+# 138 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#define _PTRDIFF_T 
+#define _T_PTRDIFF_ 
+#define _T_PTRDIFF 
+#define __PTRDIFF_T 
+#define _PTRDIFF_T_ 
+#define _BSD_PTRDIFF_T_ 
+#define ___int_ptrdiff_t_h 
+#define _GCC_PTRDIFF_T 
+
+
+
+typedef int ptrdiff_t;
+# 160 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 186 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#define __size_t__ 
+#define __SIZE_T__ 
+#define _SIZE_T 
+#define _SYS_SIZE_T_H 
+#define _T_SIZE_ 
+#define _T_SIZE 
+#define __SIZE_T 
+#define _SIZE_T_ 
+#define _BSD_SIZE_T_ 
+#define _SIZE_T_DEFINED_ 
+#define _SIZE_T_DEFINED 
+#define _BSD_SIZE_T_DEFINED_ 
+#define _SIZE_T_DECLARED 
+#define ___int_size_t_h 
+#define _GCC_SIZE_T 
+#define _SIZET_ 
+
+
+
+#define __size_t 
+
+
+
+
+
+typedef unsigned int size_t;
+# 233 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 262 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#define __wchar_t__ 
+#define __WCHAR_T__ 
+#define _WCHAR_T 
+#define _T_WCHAR_ 
+#define _T_WCHAR 
+#define __WCHAR_T 
+#define _WCHAR_T_ 
+#define _BSD_WCHAR_T_ 
+#define _WCHAR_T_DEFINED_ 
+#define _WCHAR_T_DEFINED 
+#define _WCHAR_T_H 
+#define ___int_wchar_t_h 
+#define __INT_WCHAR_T_H 
+#define _GCC_WCHAR_T 
+#define _WCHAR_T_DECLARED 
+# 289 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef _BSD_WCHAR_T_
+# 342 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 395 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 406 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 28 "./../../dist/include/mozilla/Types.h" 2
+# 54 "./../../dist/include/mozilla/Types.h"
+#define MOZ_EXTERNAL_VIS __attribute__((visibility("default")))
+
+
+
+
+
+#define MOZ_EXPORT_API(type) MOZ_EXTERNAL_VIS type
+#define MOZ_EXPORT_DATA(type) MOZ_EXTERNAL_VIS type
+# 80 "./../../dist/include/mozilla/Types.h"
+#define MOZ_IMPORT_API(x) MOZ_EXPORT_API(x)
+
+
+
+
+
+
+
+#define MOZ_IMPORT_DATA(x) MOZ_EXPORT_DATA(x)
+# 105 "./../../dist/include/mozilla/Types.h"
+#define MFBT_API(type) __attribute__((weak)) MOZ_IMPORT_API(type)
+#define MFBT_DATA(type) __attribute__((weak)) MOZ_IMPORT_DATA(type)
+# 131 "./../../dist/include/mozilla/Types.h"
+#define MOZ_BEGIN_EXTERN_C extern "C" {
+#define MOZ_END_EXTERN_C }
+# 15 "./../../dist/include/mozilla/Assertions.h" 2
+
+# 1 "/usr/include/stdio.h" 1 3 4
+# 27 "/usr/include/stdio.h" 3 4
+#define _STDIO_H 1
+
+
+extern "C" {
+
+#define __need_size_t 
+#define __need_NULL 
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 160 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 233 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 342 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 395 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 406 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 35 "/usr/include/stdio.h" 2 3 4
+
+# 1 "/usr/include/bits/types.h" 1 3 4
+# 25 "/usr/include/bits/types.h" 3 4
+#define _BITS_TYPES_H 1
+
+
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 19 "/usr/include/bits/wordsize.h" 3 4
+#define __WORDSIZE 32
+# 29 "/usr/include/bits/types.h" 2 3 4
+
+
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+
+
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+
+
+
+
+__extension__ typedef signed long long int __int64_t;
+__extension__ typedef unsigned long long int __uint64_t;
+
+
+
+
+
+
+
+__extension__ typedef long long int __quad_t;
+__extension__ typedef unsigned long long int __u_quad_t;
+# 99 "/usr/include/bits/types.h" 3 4
+#define __S16_TYPE short int
+#define __U16_TYPE unsigned short int
+#define __S32_TYPE int
+#define __U32_TYPE unsigned int
+#define __SLONGWORD_TYPE long int
+#define __ULONGWORD_TYPE unsigned long int
+
+#define __SQUAD_TYPE __quad_t
+#define __UQUAD_TYPE __u_quad_t
+#define __SWORD_TYPE int
+#define __UWORD_TYPE unsigned int
+#define __SLONG32_TYPE long int
+#define __ULONG32_TYPE unsigned long int
+#define __S64_TYPE __quad_t
+#define __U64_TYPE __u_quad_t
+
+
+#define __STD_TYPE __extension__ typedef
+# 131 "/usr/include/bits/types.h" 3 4
+# 1 "/usr/include/bits/typesizes.h" 1 3 4
+# 25 "/usr/include/bits/typesizes.h" 3 4
+#define _BITS_TYPESIZES_H 1
+
+
+
+
+#define __DEV_T_TYPE __UQUAD_TYPE
+#define __UID_T_TYPE __U32_TYPE
+#define __GID_T_TYPE __U32_TYPE
+#define __INO_T_TYPE __ULONGWORD_TYPE
+#define __INO64_T_TYPE __UQUAD_TYPE
+#define __MODE_T_TYPE __U32_TYPE
+#define __NLINK_T_TYPE __UWORD_TYPE
+#define __OFF_T_TYPE __SLONGWORD_TYPE
+#define __OFF64_T_TYPE __SQUAD_TYPE
+#define __PID_T_TYPE __S32_TYPE
+#define __RLIM_T_TYPE __ULONGWORD_TYPE
+#define __RLIM64_T_TYPE __UQUAD_TYPE
+#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
+#define __BLKCNT64_T_TYPE __SQUAD_TYPE
+#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
+#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
+#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
+#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
+#define __ID_T_TYPE __U32_TYPE
+#define __CLOCK_T_TYPE __SLONGWORD_TYPE
+#define __TIME_T_TYPE __SLONGWORD_TYPE
+#define __USECONDS_T_TYPE __U32_TYPE
+#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
+#define __DADDR_T_TYPE __S32_TYPE
+#define __SWBLK_T_TYPE __SLONGWORD_TYPE
+#define __KEY_T_TYPE __S32_TYPE
+#define __CLOCKID_T_TYPE __S32_TYPE
+#define __TIMER_T_TYPE void *
+#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
+#define __FSID_T_TYPE struct { int __val[2]; }
+#define __SSIZE_T_TYPE __SWORD_TYPE
+
+
+#define __FD_SETSIZE 1024
+# 132 "/usr/include/bits/types.h" 2 3 4
+
+
+__extension__ typedef __u_quad_t __dev_t;
+__extension__ typedef unsigned int __uid_t;
+__extension__ typedef unsigned int __gid_t;
+__extension__ typedef unsigned long int __ino_t;
+__extension__ typedef __u_quad_t __ino64_t;
+__extension__ typedef unsigned int __mode_t;
+__extension__ typedef unsigned int __nlink_t;
+__extension__ typedef long int __off_t;
+__extension__ typedef __quad_t __off64_t;
+__extension__ typedef int __pid_t;
+__extension__ typedef struct { int __val[2]; } __fsid_t;
+__extension__ typedef long int __clock_t;
+__extension__ typedef unsigned long int __rlim_t;
+__extension__ typedef __u_quad_t __rlim64_t;
+__extension__ typedef unsigned int __id_t;
+__extension__ typedef long int __time_t;
+__extension__ typedef unsigned int __useconds_t;
+__extension__ typedef long int __suseconds_t;
+
+__extension__ typedef int __daddr_t;
+__extension__ typedef long int __swblk_t;
+__extension__ typedef int __key_t;
+
+
+__extension__ typedef int __clockid_t;
+
+
+__extension__ typedef void * __timer_t;
+
+
+__extension__ typedef long int __blksize_t;
+
+
+
+
+__extension__ typedef long int __blkcnt_t;
+__extension__ typedef __quad_t __blkcnt64_t;
+
+
+__extension__ typedef unsigned long int __fsblkcnt_t;
+__extension__ typedef __u_quad_t __fsblkcnt64_t;
+
+
+__extension__ typedef unsigned long int __fsfilcnt_t;
+__extension__ typedef __u_quad_t __fsfilcnt64_t;
+
+__extension__ typedef int __ssize_t;
+
+
+
+typedef __off64_t __loff_t;
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+
+
+__extension__ typedef int __intptr_t;
+
+
+__extension__ typedef unsigned int __socklen_t;
+
+
+#undef __STD_TYPE
+# 37 "/usr/include/stdio.h" 2 3 4
+#define __need_FILE 
+#define __need___FILE 
+
+
+
+
+
+
+struct _IO_FILE;
+
+
+
+typedef struct _IO_FILE FILE;
+
+
+
+
+
+
+
+#define __FILE_defined 1
+
+#undef __need_FILE
+
+
+
+
+
+typedef struct _IO_FILE __FILE;
+
+#define ____FILE_defined 1
+
+#undef __need___FILE
+
+
+
+#define _STDIO_USES_IOSTREAM 
+
+# 1 "/usr/include/libio.h" 1 3 4
+# 30 "/usr/include/libio.h" 3 4
+#define _IO_STDIO_H 
+
+# 1 "/usr/include/_G_config.h" 1 3 4
+
+
+
+
+#define _G_config_h 1
+
+
+
+
+#define __need_size_t 
+
+
+
+#define __need_NULL 
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 160 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 233 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 342 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 395 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 406 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 16 "/usr/include/_G_config.h" 2 3 4
+#define __need_mbstate_t 
+
+
+
+# 1 "/usr/include/wchar.h" 1 3 4
+# 81 "/usr/include/wchar.h" 3 4
+#define __mbstate_t_defined 1
+
+typedef struct
+{
+  int __count;
+  union
+  {
+
+    unsigned int __wch;
+
+
+
+    char __wchb[4];
+  } __value;
+} __mbstate_t;
+
+#undef __need_mbstate_t
+# 896 "/usr/include/wchar.h" 3 4
+#undef __need_mbstate_t
+#undef __need_wint_t
+# 21 "/usr/include/_G_config.h" 2 3 4
+#define _G_size_t size_t
+typedef struct
+{
+  __off_t __pos;
+  __mbstate_t __state;
+} _G_fpos_t;
+typedef struct
+{
+  __off64_t __pos;
+  __mbstate_t __state;
+} _G_fpos64_t;
+#define _G_ssize_t __ssize_t
+#define _G_off_t __off_t
+#define _G_off64_t __off64_t
+#define _G_pid_t __pid_t
+#define _G_uid_t __uid_t
+#define _G_wchar_t wchar_t
+#define _G_wint_t wint_t
+#define _G_stat64 stat64
+# 53 "/usr/include/_G_config.h" 3 4
+typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
+
+#define _G_HAVE_BOOL 1
+
+
+
+#define _G_HAVE_ATEXIT 1
+#define _G_HAVE_SYS_CDEFS 1
+#define _G_HAVE_SYS_WAIT 1
+#define _G_NEED_STDARG_H 1
+#define _G_va_list __gnuc_va_list
+
+#define _G_HAVE_PRINTF_FP 1
+#define _G_HAVE_MMAP 1
+#define _G_HAVE_MREMAP 1
+#define _G_HAVE_LONG_DOUBLE_IO 1
+#define _G_HAVE_IO_FILE_OPEN 1
+#define _G_HAVE_IO_GETLINE_INFO 1
+
+#define _G_IO_IO_FILE_VERSION 0x20001
+
+#define _G_OPEN64 __open64
+#define _G_LSEEK64 __lseek64
+#define _G_MMAP64 __mmap64
+#define _G_FSTAT64(fd,buf) __fxstat64 (_STAT_VER, fd, buf)
+
+
+#define _G_HAVE_ST_BLKSIZE defined (_STATBUF_ST_BLKSIZE)
+
+#define _G_BUFSIZ 8192
+
+
+#define _G_NAMES_HAVE_UNDERSCORE 0
+#define _G_VTABLE_LABEL_HAS_LENGTH 1
+#define _G_USING_THUNKS 1
+#define _G_VTABLE_LABEL_PREFIX "__vt_"
+#define _G_VTABLE_LABEL_PREFIX_ID __vt_
+
+
+
+#define _G_ARGS(ARGLIST) ARGLIST
+# 33 "/usr/include/libio.h" 2 3 4
+
+#define _IO_pos_t _G_fpos_t
+#define _IO_fpos_t _G_fpos_t
+#define _IO_fpos64_t _G_fpos64_t
+#define _IO_size_t _G_size_t
+#define _IO_ssize_t _G_ssize_t
+#define _IO_off_t _G_off_t
+#define _IO_off64_t _G_off64_t
+#define _IO_pid_t _G_pid_t
+#define _IO_uid_t _G_uid_t
+#define _IO_iconv_t _G_iconv_t
+#define _IO_HAVE_SYS_WAIT _G_HAVE_SYS_WAIT
+#define _IO_HAVE_ST_BLKSIZE _G_HAVE_ST_BLKSIZE
+#define _IO_BUFSIZ _G_BUFSIZ
+#define _IO_va_list _G_va_list
+#define _IO_wint_t _G_wint_t
+
+
+
+#define __need___va_list 
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stdarg.h" 1 3 4
+# 34 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stdarg.h" 3 4
+#undef __need___va_list
+
+
+
+
+#define __GNUC_VA_LIST 
+typedef __builtin_va_list __gnuc_va_list;
+# 54 "/usr/include/libio.h" 2 3 4
+
+#undef _IO_va_list
+#define _IO_va_list __gnuc_va_list
+# 76 "/usr/include/libio.h" 3 4
+#define _PARAMS(protos) __P(protos)
+
+
+
+
+
+
+
+#define _IO_UNIFIED_JUMPTABLES 1
+
+
+
+
+
+#define EOF (-1)
+# 105 "/usr/include/libio.h" 3 4
+#define _IOS_INPUT 1
+#define _IOS_OUTPUT 2
+#define _IOS_ATEND 4
+#define _IOS_APPEND 8
+#define _IOS_TRUNC 16
+#define _IOS_NOCREATE 32
+#define _IOS_NOREPLACE 64
+#define _IOS_BIN 128
+
+
+
+
+
+
+
+#define _IO_MAGIC 0xFBAD0000
+#define _OLD_STDIO_MAGIC 0xFABC0000
+#define _IO_MAGIC_MASK 0xFFFF0000
+#define _IO_USER_BUF 1
+#define _IO_UNBUFFERED 2
+#define _IO_NO_READS 4
+#define _IO_NO_WRITES 8
+#define _IO_EOF_SEEN 0x10
+#define _IO_ERR_SEEN 0x20
+#define _IO_DELETE_DONT_CLOSE 0x40
+#define _IO_LINKED 0x80
+#define _IO_IN_BACKUP 0x100
+#define _IO_LINE_BUF 0x200
+#define _IO_TIED_PUT_GET 0x400
+#define _IO_CURRENTLY_PUTTING 0x800
+#define _IO_IS_APPENDING 0x1000
+#define _IO_IS_FILEBUF 0x2000
+#define _IO_BAD_SEEN 0x4000
+#define _IO_USER_LOCK 0x8000
+
+#define _IO_FLAGS2_MMAP 1
+#define _IO_FLAGS2_NOTCANCEL 2
+
+
+
+#define _IO_FLAGS2_USER_WBUF 8
+
+
+
+
+
+
+
+#define _IO_SKIPWS 01
+#define _IO_LEFT 02
+#define _IO_RIGHT 04
+#define _IO_INTERNAL 010
+#define _IO_DEC 020
+#define _IO_OCT 040
+#define _IO_HEX 0100
+#define _IO_SHOWBASE 0200
+#define _IO_SHOWPOINT 0400
+#define _IO_UPPERCASE 01000
+#define _IO_SHOWPOS 02000
+#define _IO_SCIENTIFIC 04000
+#define _IO_FIXED 010000
+#define _IO_UNITBUF 020000
+#define _IO_STDIO 040000
+#define _IO_DONT_CLOSE 0100000
+#define _IO_BOOLALPHA 0200000
+
+
+struct _IO_jump_t; struct _IO_FILE;
+# 182 "/usr/include/libio.h" 3 4
+typedef void _IO_lock_t;
+
+
+
+
+
+struct _IO_marker {
+  struct _IO_marker *_next;
+  struct _IO_FILE *_sbuf;
+
+
+
+  int _pos;
+# 205 "/usr/include/libio.h" 3 4
+};
+
+
+enum __codecvt_result
+{
+  __codecvt_ok,
+  __codecvt_partial,
+  __codecvt_error,
+  __codecvt_noconv
+};
+# 273 "/usr/include/libio.h" 3 4
+struct _IO_FILE {
+  int _flags;
+#define _IO_file_flags _flags
+
+
+
+  char* _IO_read_ptr;
+  char* _IO_read_end;
+  char* _IO_read_base;
+  char* _IO_write_base;
+  char* _IO_write_ptr;
+  char* _IO_write_end;
+  char* _IO_buf_base;
+  char* _IO_buf_end;
+
+  char *_IO_save_base;
+  char *_IO_backup_base;
+  char *_IO_save_end;
+
+  struct _IO_marker *_markers;
+
+  struct _IO_FILE *_chain;
+
+  int _fileno;
+
+
+
+  int _flags2;
+
+  __off_t _old_offset;
+
+#define __HAVE_COLUMN 
+
+  unsigned short _cur_column;
+  signed char _vtable_offset;
+  char _shortbuf[1];
+
+
+
+  _IO_lock_t *_lock;
+# 321 "/usr/include/libio.h" 3 4
+  __off64_t _offset;
+# 330 "/usr/include/libio.h" 3 4
+  void *__pad1;
+  void *__pad2;
+  void *__pad3;
+  void *__pad4;
+  size_t __pad5;
+
+  int _mode;
+
+  char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
+
+};
+
+
+
+
+
+struct _IO_FILE_plus;
+
+extern struct _IO_FILE_plus _IO_2_1_stdin_;
+extern struct _IO_FILE_plus _IO_2_1_stdout_;
+extern struct _IO_FILE_plus _IO_2_1_stderr_;
+
+#define _IO_stdin ((_IO_FILE*)(&_IO_2_1_stdin_))
+#define _IO_stdout ((_IO_FILE*)(&_IO_2_1_stdout_))
+#define _IO_stderr ((_IO_FILE*)(&_IO_2_1_stderr_))
+# 366 "/usr/include/libio.h" 3 4
+typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
+
+
+
+
+
+
+
+typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
+     size_t __n);
+
+
+
+
+
+
+
+typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
+
+
+typedef int __io_close_fn (void *__cookie);
+
+
+
+
+typedef __io_read_fn cookie_read_function_t;
+typedef __io_write_fn cookie_write_function_t;
+typedef __io_seek_fn cookie_seek_function_t;
+typedef __io_close_fn cookie_close_function_t;
+
+
+typedef struct
+{
+  __io_read_fn *read;
+  __io_write_fn *write;
+  __io_seek_fn *seek;
+  __io_close_fn *close;
+} _IO_cookie_io_functions_t;
+typedef _IO_cookie_io_functions_t cookie_io_functions_t;
+
+struct _IO_cookie_file;
+
+
+extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
+        void *__cookie, _IO_cookie_io_functions_t __fns);
+
+
+
+
+extern "C" {
+
+
+extern int __underflow (_IO_FILE *);
+extern int __uflow (_IO_FILE *);
+extern int __overflow (_IO_FILE *, int);
+
+
+
+
+
+
+
+#define _IO_BE(expr,res) __builtin_expect ((expr), res)
+
+
+
+
+#define _IO_getc_unlocked(_fp) (_IO_BE ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end, 0) ? __uflow (_fp) : *(unsigned char *) (_fp)->_IO_read_ptr++)
+
+
+#define _IO_peekc_unlocked(_fp) (_IO_BE ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end, 0) && __underflow (_fp) == EOF ? EOF : *(unsigned char *) (_fp)->_IO_read_ptr)
+
+
+
+#define _IO_putc_unlocked(_ch,_fp) (_IO_BE ((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end, 0) ? __overflow (_fp, (unsigned char) (_ch)) : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch)))
+# 459 "/usr/include/libio.h" 3 4
+#define _IO_feof_unlocked(__fp) (((__fp)->_flags & _IO_EOF_SEEN) != 0)
+#define _IO_ferror_unlocked(__fp) (((__fp)->_flags & _IO_ERR_SEEN) != 0)
+
+extern int _IO_getc (_IO_FILE *__fp);
+extern int _IO_putc (int __c, _IO_FILE *__fp);
+extern int _IO_feof (_IO_FILE *__fp) throw ();
+extern int _IO_ferror (_IO_FILE *__fp) throw ();
+
+extern int _IO_peekc_locked (_IO_FILE *__fp);
+
+
+#define _IO_PENDING_OUTPUT_COUNT(_fp) ((_fp)->_IO_write_ptr - (_fp)->_IO_write_base)
+
+
+extern void _IO_flockfile (_IO_FILE *) throw ();
+extern void _IO_funlockfile (_IO_FILE *) throw ();
+extern int _IO_ftrylockfile (_IO_FILE *) throw ();
+# 484 "/usr/include/libio.h" 3 4
+#define _IO_peekc(_fp) _IO_peekc_unlocked (_fp)
+#define _IO_flockfile(_fp) 
+#define _IO_funlockfile(_fp) 
+#define _IO_ftrylockfile(_fp) 
+#define _IO_cleanup_region_start(_fct,_fp) 
+#define _IO_cleanup_region_end(_Doit) 
+
+
+extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
+   __gnuc_va_list, int *__restrict);
+extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
+    __gnuc_va_list);
+extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
+extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
+
+extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
+extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
+
+extern void _IO_free_backup_area (_IO_FILE *) throw ();
+# 554 "/usr/include/libio.h" 3 4
+}
+# 76 "/usr/include/stdio.h" 2 3 4
+
+
+
+
+typedef __gnuc_va_list va_list;
+#define _VA_LIST_DEFINED 
+# 91 "/usr/include/stdio.h" 3 4
+typedef __off_t off_t;
+
+
+
+#define __off_t_defined 
+
+
+typedef __off64_t off64_t;
+#define __off64_t_defined 
+
+
+
+typedef __ssize_t ssize_t;
+#define __ssize_t_defined 
+
+
+
+
+
+
+typedef _G_fpos_t fpos_t;
+
+
+
+
+
+typedef _G_fpos64_t fpos64_t;
+
+
+
+#define _IOFBF 0
+#define _IOLBF 1
+#define _IONBF 2
+
+
+
+
+#define BUFSIZ _IO_BUFSIZ
+# 141 "/usr/include/stdio.h" 3 4
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+
+#define SEEK_DATA 3
+#define SEEK_HOLE 4
+
+
+
+
+
+#define P_tmpdir "/tmp"
+# 165 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
+# 24 "/usr/include/bits/stdio_lim.h" 3 4
+#define L_tmpnam 20
+#define TMP_MAX 238328
+#define FILENAME_MAX 4096
+
+
+#define L_ctermid 9
+
+#define L_cuserid 9
+
+
+
+
+
+#undef FOPEN_MAX
+#define FOPEN_MAX 16
+# 166 "/usr/include/stdio.h" 2 3 4
+
+
+
+extern struct _IO_FILE *stdin;
+extern struct _IO_FILE *stdout;
+extern struct _IO_FILE *stderr;
+
+#define stdin stdin
+#define stdout stdout
+#define stderr stderr
+
+
+
+extern int remove (__const char *__filename) throw ();
+
+extern int rename (__const char *__old, __const char *__new) throw ();
+
+
+
+
+extern int renameat (int __oldfd, __const char *__old, int __newfd,
+       __const char *__new) throw ();
+
+
+
+
+
+
+
+
+extern FILE *tmpfile (void) __attribute__ ((__warn_unused_result__));
+# 206 "/usr/include/stdio.h" 3 4
+extern FILE *tmpfile64 (void) __attribute__ ((__warn_unused_result__));
+
+
+
+extern char *tmpnam (char *__s) throw () __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern char *tmpnam_r (char *__s) throw () __attribute__ ((__warn_unused_result__));
+# 228 "/usr/include/stdio.h" 3 4
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+     throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+extern int fclose (FILE *__stream);
+
+
+
+
+extern int fflush (FILE *__stream);
+
+# 253 "/usr/include/stdio.h" 3 4
+extern int fflush_unlocked (FILE *__stream);
+# 263 "/usr/include/stdio.h" 3 4
+extern int fcloseall (void);
+
+
+
+
+
+
+
+
+
+extern FILE *fopen (__const char *__restrict __filename,
+      __const char *__restrict __modes) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern FILE *freopen (__const char *__restrict __filename,
+        __const char *__restrict __modes,
+        FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+# 296 "/usr/include/stdio.h" 3 4
+
+
+extern FILE *fopen64 (__const char *__restrict __filename,
+        __const char *__restrict __modes) __attribute__ ((__warn_unused_result__));
+extern FILE *freopen64 (__const char *__restrict __filename,
+   __const char *__restrict __modes,
+   FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern FILE *fdopen (int __fd, __const char *__modes) throw () __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern FILE *fopencookie (void *__restrict __magic_cookie,
+     __const char *__restrict __modes,
+     _IO_cookie_io_functions_t __io_funcs) throw () __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
+  throw () __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw ();
+
+
+
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+      int __modes, size_t __n) throw ();
+
+
+
+
+
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+         size_t __size) throw ();
+
+
+extern void setlinebuf (FILE *__stream) throw ();
+
+
+
+
+
+
+
+
+extern int fprintf (FILE *__restrict __stream,
+      __const char *__restrict __format, ...);
+
+
+
+
+extern int printf (__const char *__restrict __format, ...);
+
+extern int sprintf (char *__restrict __s,
+      __const char *__restrict __format, ...) throw ();
+
+
+
+
+
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+       __gnuc_va_list __arg);
+
+
+
+
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+       __gnuc_va_list __arg) throw ();
+
+
+
+
+
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+       __const char *__restrict __format, ...)
+     throw () __attribute__ ((__format__ (__printf__, 3, 4)));
+
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+        __const char *__restrict __format, __gnuc_va_list __arg)
+     throw () __attribute__ ((__format__ (__printf__, 3, 0)));
+
+
+
+
+
+
+extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
+        __gnuc_va_list __arg)
+     throw () __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__));
+extern int __asprintf (char **__restrict __ptr,
+         __const char *__restrict __fmt, ...)
+     throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
+extern int asprintf (char **__restrict __ptr,
+       __const char *__restrict __fmt, ...)
+     throw () __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
+# 418 "/usr/include/stdio.h" 3 4
+extern int vdprintf (int __fd, __const char *__restrict __fmt,
+       __gnuc_va_list __arg)
+     __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+     __attribute__ ((__format__ (__printf__, 2, 3)));
+
+
+
+
+
+
+
+
+extern int fscanf (FILE *__restrict __stream,
+     __const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int scanf (__const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
+
+extern int sscanf (__const char *__restrict __s,
+     __const char *__restrict __format, ...) throw ();
+# 469 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+
+
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+      __gnuc_va_list __arg)
+     __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
+     __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__));
+
+
+extern int vsscanf (__const char *__restrict __s,
+      __const char *__restrict __format, __gnuc_va_list __arg)
+     throw () __attribute__ ((__format__ (__scanf__, 2, 0)));
+# 528 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+
+
+
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+
+
+
+
+
+extern int getchar (void);
+
+
+
+
+#define getc(_fp) _IO_getc (_fp)
+
+
+
+
+
+
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+# 567 "/usr/include/stdio.h" 3 4
+extern int fgetc_unlocked (FILE *__stream);
+
+
+
+
+
+
+
+
+
+
+
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+
+
+
+
+
+extern int putchar (int __c);
+
+
+
+
+#define putc(_ch,_fp) _IO_putc (_ch, _fp)
+# 600 "/usr/include/stdio.h" 3 4
+extern int fputc_unlocked (int __c, FILE *__stream);
+
+
+
+
+
+
+
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+
+
+
+
+
+
+extern int getw (FILE *__stream);
+
+
+extern int putw (int __w, FILE *__stream);
+
+
+
+
+
+
+
+
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+     __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern char *gets (char *__s) __attribute__ ((__warn_unused_result__));
+
+# 646 "/usr/include/stdio.h" 3 4
+extern char *fgets_unlocked (char *__restrict __s, int __n,
+        FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+# 662 "/usr/include/stdio.h" 3 4
+extern __ssize_t __getdelim (char **__restrict __lineptr,
+          size_t *__restrict __n, int __delimiter,
+          FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern __ssize_t getdelim (char **__restrict __lineptr,
+        size_t *__restrict __n, int __delimiter,
+        FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+extern __ssize_t getline (char **__restrict __lineptr,
+       size_t *__restrict __n,
+       FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+
+
+
+
+
+extern int puts (__const char *__s);
+
+
+
+
+
+
+extern int ungetc (int __c, FILE *__stream);
+
+
+
+
+
+
+extern size_t fread (void *__restrict __ptr, size_t __size,
+       size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+        size_t __n, FILE *__restrict __s) __attribute__ ((__warn_unused_result__));
+
+# 723 "/usr/include/stdio.h" 3 4
+extern int fputs_unlocked (__const char *__restrict __s,
+      FILE *__restrict __stream);
+# 734 "/usr/include/stdio.h" 3 4
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+         size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+          size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+extern int fseek (FILE *__stream, long int __off, int __whence);
+
+
+
+
+extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern void rewind (FILE *__stream);
+
+# 770 "/usr/include/stdio.h" 3 4
+extern int fseeko (FILE *__stream, __off_t __off, int __whence);
+
+
+
+
+extern __off_t ftello (FILE *__stream) __attribute__ ((__warn_unused_result__));
+# 789 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
+
+
+
+
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
+# 812 "/usr/include/stdio.h" 3 4
+
+
+
+extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
+extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__));
+extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
+extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
+
+
+
+
+extern void clearerr (FILE *__stream) throw ();
+
+extern int feof (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
+
+extern int ferror (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern void clearerr_unlocked (FILE *__stream) throw ();
+extern int feof_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
+extern int ferror_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+extern void perror (__const char *__s);
+
+
+
+
+
+
+# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
+# 27 "/usr/include/bits/sys_errlist.h" 3 4
+extern int sys_nerr;
+extern __const char *__const sys_errlist[];
+
+
+extern int _sys_nerr;
+extern __const char *__const _sys_errlist[];
+# 851 "/usr/include/stdio.h" 2 3 4
+
+
+
+
+extern int fileno (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int fileno_unlocked (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
+# 870 "/usr/include/stdio.h" 3 4
+extern FILE *popen (__const char *__command, __const char *__modes) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern int pclose (FILE *__stream);
+
+
+
+
+
+extern char *ctermid (char *__s) throw ();
+
+
+
+
+
+extern char *cuserid (char *__s);
+
+
+
+
+struct obstack;
+
+
+extern int obstack_printf (struct obstack *__restrict __obstack,
+      __const char *__restrict __format, ...)
+     throw () __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int obstack_vprintf (struct obstack *__restrict __obstack,
+       __const char *__restrict __format,
+       __gnuc_va_list __args)
+     throw () __attribute__ ((__format__ (__printf__, 2, 0)));
+
+
+
+
+
+
+
+extern void flockfile (FILE *__stream) throw ();
+
+
+
+extern int ftrylockfile (FILE *__stream) throw () __attribute__ ((__warn_unused_result__));
+
+
+extern void funlockfile (FILE *__stream) throw ();
+# 931 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/bits/stdio.h" 1 3 4
+# 27 "/usr/include/bits/stdio.h" 3 4
+#define __STDIO_INLINE __extern_inline
+# 44 "/usr/include/bits/stdio.h" 3 4
+extern __inline __attribute__ ((__gnu_inline__)) int
+getchar (void)
+{
+  return _IO_getc (stdin);
+}
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+fgetc_unlocked (FILE *__fp)
+{
+  return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+getc_unlocked (FILE *__fp)
+{
+  return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+getchar_unlocked (void)
+{
+  return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
+}
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+putchar (int __c)
+{
+  return _IO_putc (__c, stdout);
+}
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+fputc_unlocked (int __c, FILE *__stream)
+{
+  return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+putc_unlocked (int __c, FILE *__stream)
+{
+  return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+putchar_unlocked (int __c)
+{
+  return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
+}
+
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) __ssize_t
+getline (char **__lineptr, size_t *__n, FILE *__stream)
+{
+  return __getdelim (__lineptr, __n, '\n', __stream);
+}
+
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+ feof_unlocked (FILE *__stream) throw ()
+{
+  return (((__stream)->_flags & 0x10) != 0);
+}
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+ ferror_unlocked (FILE *__stream) throw ()
+{
+  return (((__stream)->_flags & 0x20) != 0);
+}
+# 191 "/usr/include/bits/stdio.h" 3 4
+#undef __STDIO_INLINE
+# 932 "/usr/include/stdio.h" 2 3 4
+
+
+# 1 "/usr/include/bits/stdio2.h" 1 3 4
+# 24 "/usr/include/bits/stdio2.h" 3 4
+extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen,
+     __const char *__restrict __format, ...) throw ();
+extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen,
+      __const char *__restrict __format,
+      __gnuc_va_list __ap) throw ();
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+ sprintf (char *__restrict __s, __const char *__restrict __fmt, ...) throw ()
+{
+  return __builtin___sprintf_chk (__s, 2 - 1,
+      __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ());
+}
+
+
+
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+ vsprintf (char *__restrict __s, __const char *__restrict __fmt, __gnuc_va_list __ap) throw ()
+
+{
+  return __builtin___vsprintf_chk (__s, 2 - 1,
+       __builtin_object_size (__s, 2 > 1), __fmt, __ap);
+}
+
+
+
+extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag,
+      size_t __slen, __const char *__restrict __format,
+      ...) throw ();
+extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag,
+       size_t __slen, __const char *__restrict __format,
+       __gnuc_va_list __ap) throw ();
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+ snprintf (char *__restrict __s, size_t __n, __const char *__restrict __fmt, ...) throw ()
+
+{
+  return __builtin___snprintf_chk (__s, __n, 2 - 1,
+       __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ());
+}
+
+
+
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+ vsnprintf (char *__restrict __s, size_t __n, __const char *__restrict __fmt, __gnuc_va_list __ap) throw ()
+
+{
+  return __builtin___vsnprintf_chk (__s, __n, 2 - 1,
+        __builtin_object_size (__s, 2 > 1), __fmt, __ap);
+}
+
+
+
+
+
+extern int __fprintf_chk (FILE *__restrict __stream, int __flag,
+     __const char *__restrict __format, ...);
+extern int __printf_chk (int __flag, __const char *__restrict __format, ...);
+extern int __vfprintf_chk (FILE *__restrict __stream, int __flag,
+      __const char *__restrict __format, __gnuc_va_list __ap);
+extern int __vprintf_chk (int __flag, __const char *__restrict __format,
+     __gnuc_va_list __ap);
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+fprintf (FILE *__restrict __stream, __const char *__restrict __fmt, ...)
+{
+  return __fprintf_chk (__stream, 2 - 1, __fmt,
+   __builtin_va_arg_pack ());
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+printf (__const char *__restrict __fmt, ...)
+{
+  return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ());
+}
+
+
+
+
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+vprintf (__const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+
+  return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap);
+
+
+
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+vfprintf (FILE *__restrict __stream,
+   __const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+  return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap);
+}
+
+
+
+extern int __asprintf_chk (char **__restrict __ptr, int __flag,
+      __const char *__restrict __fmt, ...)
+     throw () __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__));
+extern int __vasprintf_chk (char **__restrict __ptr, int __flag,
+       __const char *__restrict __fmt, __gnuc_va_list __arg)
+     throw () __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__));
+extern int __dprintf_chk (int __fd, int __flag, __const char *__restrict __fmt,
+     ...) __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int __vdprintf_chk (int __fd, int __flag,
+      __const char *__restrict __fmt, __gnuc_va_list __arg)
+     __attribute__ ((__format__ (__printf__, 3, 0)));
+extern int __obstack_printf_chk (struct obstack *__restrict __obstack,
+     int __flag, __const char *__restrict __format,
+     ...)
+     throw () __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack,
+      int __flag,
+      __const char *__restrict __format,
+      __gnuc_va_list __args)
+     throw () __attribute__ ((__format__ (__printf__, 3, 0)));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+ asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) throw ()
+{
+  return __asprintf_chk (__ptr, 2 - 1, __fmt,
+    __builtin_va_arg_pack ());
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+ __asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) throw ()
+
+{
+  return __asprintf_chk (__ptr, 2 - 1, __fmt,
+    __builtin_va_arg_pack ());
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+dprintf (int __fd, __const char *__restrict __fmt, ...)
+{
+  return __dprintf_chk (__fd, 2 - 1, __fmt,
+   __builtin_va_arg_pack ());
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+ obstack_printf (struct obstack *__restrict __obstack, __const char *__restrict __fmt, ...) throw ()
+
+{
+  return __obstack_printf_chk (__obstack, 2 - 1, __fmt,
+          __builtin_va_arg_pack ());
+}
+# 195 "/usr/include/bits/stdio2.h" 3 4
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+ vasprintf (char **__restrict __ptr, __const char *__restrict __fmt, __gnuc_va_list __ap) throw ()
+
+{
+  return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap);
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+vdprintf (int __fd, __const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+  return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap);
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+ obstack_vprintf (struct obstack *__restrict __obstack, __const char *__restrict __fmt, __gnuc_va_list __ap) throw ()
+
+{
+  return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt,
+    __ap);
+}
+
+
+
+
+
+extern char *__gets_chk (char *__str, size_t) __attribute__ ((__warn_unused_result__));
+extern char *__gets_warn (char *__str) __asm__ ("" "gets")
+     __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use fgets or getline instead, gets can't " "specify buffer size")))
+                               ;
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+gets (char *__str)
+{
+  if (__builtin_object_size (__str, 2 > 1) != (size_t) -1)
+    return __gets_chk (__str, __builtin_object_size (__str, 2 > 1));
+  return __gets_warn (__str);
+}
+
+extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n,
+     FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets")
+
+                                        __attribute__ ((__warn_unused_result__));
+extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk")
+
+
+     __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer")))
+                                 ;
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+{
+  if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
+    {
+      if (!__builtin_constant_p (__n) || __n <= 0)
+ return __fgets_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+
+      if ((size_t) __n > __builtin_object_size (__s, 2 > 1))
+ return __fgets_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+    }
+  return __fgets_alias (__s, __n, __stream);
+}
+
+extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen,
+      size_t __size, size_t __n,
+      FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread")
+
+
+            __attribute__ ((__warn_unused_result__));
+extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk")
+
+
+
+
+     __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer")))
+                                 ;
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) size_t
+fread (void *__restrict __ptr, size_t __size, size_t __n,
+       FILE *__restrict __stream)
+{
+  if (__builtin_object_size (__ptr, 0) != (size_t) -1)
+    {
+      if (!__builtin_constant_p (__size)
+   || !__builtin_constant_p (__n)
+   || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
+ return __fread_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream);
+
+      if (__size * __n > __builtin_object_size (__ptr, 0))
+ return __fread_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream);
+    }
+  return __fread_alias (__ptr, __size, __n, __stream);
+}
+
+
+extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size,
+       int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked")
+
+                                                 __attribute__ ((__warn_unused_result__));
+extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk")
+
+
+     __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer")))
+                                 ;
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
+{
+  if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
+    {
+      if (!__builtin_constant_p (__n) || __n <= 0)
+ return __fgets_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+
+      if ((size_t) __n > __builtin_object_size (__s, 2 > 1))
+ return __fgets_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+    }
+  return __fgets_unlocked_alias (__s, __n, __stream);
+}
+
+
+
+#undef fread_unlocked
+extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen,
+        size_t __size, size_t __n,
+        FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked")
+
+
+                     __attribute__ ((__warn_unused_result__));
+extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk")
+
+
+
+
+     __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer")))
+                                        ;
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) size_t
+fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
+  FILE *__restrict __stream)
+{
+  if (__builtin_object_size (__ptr, 0) != (size_t) -1)
+    {
+      if (!__builtin_constant_p (__size)
+   || !__builtin_constant_p (__n)
+   || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
+ return __fread_unlocked_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n,
+         __stream);
+
+      if (__size * __n > __builtin_object_size (__ptr, 0))
+ return __fread_unlocked_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n,
+       __stream);
+    }
+
+
+  if (__builtin_constant_p (__size)
+      && __builtin_constant_p (__n)
+      && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2))
+      && __size * __n <= 8)
+    {
+      size_t __cnt = __size * __n;
+      char *__cptr = (char *) __ptr;
+      if (__cnt == 0)
+ return 0;
+
+      for (; __cnt > 0; --__cnt)
+ {
+   int __c = (__builtin_expect (((__stream)->_IO_read_ptr >= (__stream)->_IO_read_end), 0) ? __uflow (__stream) : *(unsigned char *) (__stream)->_IO_read_ptr++);
+   if (__c == (-1))
+     break;
+   *__cptr++ = __c;
+ }
+      return (__cptr - (char *) __ptr) / __size;
+    }
+
+  return __fread_unlocked_alias (__ptr, __size, __n, __stream);
+}
+# 935 "/usr/include/stdio.h" 2 3 4
+
+
+
+
+
+}
+# 17 "./../../dist/include/mozilla/Assertions.h" 2
+# 1 "/usr/include/stdlib.h" 1 3 4
+# 28 "/usr/include/stdlib.h" 3 4
+#define __need_size_t 
+
+#define __need_wchar_t 
+#define __need_NULL 
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 160 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 233 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 342 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 395 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 406 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 34 "/usr/include/stdlib.h" 2 3 4
+
+extern "C" {
+
+
+#define _STDLIB_H 1
+
+
+
+# 1 "/usr/include/bits/waitflags.h" 1 3 4
+# 26 "/usr/include/bits/waitflags.h" 3 4
+#define WNOHANG 1
+#define WUNTRACED 2
+
+
+#define WSTOPPED 2
+#define WEXITED 4
+#define WCONTINUED 8
+#define WNOWAIT 0x01000000
+
+#define __WNOTHREAD 0x20000000
+
+#define __WALL 0x40000000
+#define __WCLONE 0x80000000
+# 43 "/usr/include/stdlib.h" 2 3 4
+# 1 "/usr/include/bits/waitstatus.h" 1 3 4
+# 29 "/usr/include/bits/waitstatus.h" 3 4
+#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
+
+
+#define __WTERMSIG(status) ((status) & 0x7f)
+
+
+#define __WSTOPSIG(status) __WEXITSTATUS(status)
+
+
+#define __WIFEXITED(status) (__WTERMSIG(status) == 0)
+
+
+#define __WIFSIGNALED(status) (((signed char) (((status) & 0x7f) + 1) >> 1) > 0)
+
+
+
+#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
+
+
+
+
+#define __WIFCONTINUED(status) ((status) == __W_CONTINUED)
+
+
+
+#define __WCOREDUMP(status) ((status) & __WCOREFLAG)
+
+
+#define __W_EXITCODE(ret,sig) ((ret) << 8 | (sig))
+#define __W_STOPCODE(sig) ((sig) << 8 | 0x7f)
+#define __W_CONTINUED 0xffff
+#define __WCOREFLAG 0x80
+
+
+
+
+# 1 "/usr/include/endian.h" 1 3 4
+# 20 "/usr/include/endian.h" 3 4
+#define _ENDIAN_H 1
+# 32 "/usr/include/endian.h" 3 4
+#define __LITTLE_ENDIAN 1234
+#define __BIG_ENDIAN 4321
+#define __PDP_ENDIAN 3412
+
+
+# 1 "/usr/include/bits/endian.h" 1 3 4
+# 9 "/usr/include/bits/endian.h" 3 4
+#define __BYTE_ORDER __LITTLE_ENDIAN
+
+
+
+
+
+
+#define __FLOAT_WORD_ORDER __BYTE_ORDER
+# 38 "/usr/include/endian.h" 2 3 4
+# 46 "/usr/include/endian.h" 3 4
+#define LITTLE_ENDIAN __LITTLE_ENDIAN
+#define BIG_ENDIAN __BIG_ENDIAN
+#define PDP_ENDIAN __PDP_ENDIAN
+#define BYTE_ORDER __BYTE_ORDER
+
+
+
+#define __LONG_LONG_PAIR(HI,LO) LO, HI
+
+
+
+
+
+
+
+# 1 "/usr/include/bits/byteswap.h" 1 3 4
+# 26 "/usr/include/bits/byteswap.h" 3 4
+#define _BITS_BYTESWAP_H 1
+
+
+#define __bswap_constant_16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8))
+
+
+
+#define __bswap_16(x) (__extension__ ({ unsigned short int __bsx = (x); __bswap_constant_16 (__bsx); }))
+# 45 "/usr/include/bits/byteswap.h" 3 4
+#define __bswap_constant_32(x) ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
+
+
+
+
+#define __bswap_32(x) (__extension__ ({ register unsigned int __bsx = (x); __bswap_constant_32 (__bsx); }))
+# 63 "/usr/include/bits/byteswap.h" 3 4
+#define __bswap_constant_64(x) (__extension__ ((((x) & 0xff00000000000000ull) >> 56) | (((x) & 0x00ff000000000000ull) >> 40) | (((x) & 0x0000ff0000000000ull) >> 24) | (((x) & 0x000000ff00000000ull) >> 8) | (((x) & 0x00000000ff000000ull) << 8) | (((x) & 0x0000000000ff0000ull) << 24) | (((x) & 0x000000000000ff00ull) << 40) | (((x) & 0x00000000000000ffull) << 56)))
+# 73 "/usr/include/bits/byteswap.h" 3 4
+#define __bswap_64(x) (__extension__ ({ union { __extension__ unsigned long long int __ll; unsigned int __l[2]; } __w, __r; if (__builtin_constant_p (x)) __r.__ll = __bswap_constant_64 (x); else { __w.__ll = (x); __r.__l[0] = __bswap_32 (__w.__l[1]); __r.__l[1] = __bswap_32 (__w.__l[0]); } __r.__ll; }))
+# 62 "/usr/include/endian.h" 2 3 4
+
+
+#define htobe16(x) __bswap_16 (x)
+#define htole16(x) (x)
+#define be16toh(x) __bswap_16 (x)
+#define le16toh(x) (x)
+
+#define htobe32(x) __bswap_32 (x)
+#define htole32(x) (x)
+#define be32toh(x) __bswap_32 (x)
+#define le32toh(x) (x)
+
+#define htobe64(x) __bswap_64 (x)
+#define htole64(x) (x)
+#define be64toh(x) __bswap_64 (x)
+#define le64toh(x) (x)
+# 66 "/usr/include/bits/waitstatus.h" 2 3 4
+
+union wait
+  {
+    int w_status;
+    struct
+      {
+
+ unsigned int __w_termsig:7;
+ unsigned int __w_coredump:1;
+ unsigned int __w_retcode:8;
+ unsigned int:16;
+
+
+
+
+
+
+
+      } __wait_terminated;
+    struct
+      {
+
+ unsigned int __w_stopval:8;
+ unsigned int __w_stopsig:8;
+ unsigned int:16;
+
+
+
+
+
+
+      } __wait_stopped;
+  };
+
+#define w_termsig __wait_terminated.__w_termsig
+#define w_coredump __wait_terminated.__w_coredump
+#define w_retcode __wait_terminated.__w_retcode
+#define w_stopsig __wait_stopped.__w_stopsig
+#define w_stopval __wait_stopped.__w_stopval
+# 44 "/usr/include/stdlib.h" 2 3 4
+# 55 "/usr/include/stdlib.h" 3 4
+#define __WAIT_INT(status) (*(int *) &(status))
+# 64 "/usr/include/stdlib.h" 3 4
+#define __WAIT_STATUS void *
+#define __WAIT_STATUS_DEFN void *
+# 85 "/usr/include/stdlib.h" 3 4
+#define WEXITSTATUS(status) __WEXITSTATUS (__WAIT_INT (status))
+#define WTERMSIG(status) __WTERMSIG (__WAIT_INT (status))
+#define WSTOPSIG(status) __WSTOPSIG (__WAIT_INT (status))
+#define WIFEXITED(status) __WIFEXITED (__WAIT_INT (status))
+#define WIFSIGNALED(status) __WIFSIGNALED (__WAIT_INT (status))
+#define WIFSTOPPED(status) __WIFSTOPPED (__WAIT_INT (status))
+
+#define WIFCONTINUED(status) __WIFCONTINUED (__WAIT_INT (status))
+
+
+
+
+
+typedef struct
+  {
+    int quot;
+    int rem;
+  } div_t;
+
+
+
+typedef struct
+  {
+    long int quot;
+    long int rem;
+  } ldiv_t;
+#define __ldiv_t_defined 1
+
+
+
+
+
+
+__extension__ typedef struct
+  {
+    long long int quot;
+    long long int rem;
+  } lldiv_t;
+#define __lldiv_t_defined 1
+
+
+
+
+
+#define RAND_MAX 2147483647
+
+
+
+
+#define EXIT_FAILURE 1
+#define EXIT_SUCCESS 0
+
+
+
+#define MB_CUR_MAX (__ctype_get_mb_cur_max ())
+extern size_t __ctype_get_mb_cur_max (void) throw () __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern double atof (__const char *__nptr)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern int atoi (__const char *__nptr)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern long int atol (__const char *__nptr)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+__extension__ extern long long int atoll (__const char *__nptr)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern double strtod (__const char *__restrict __nptr,
+        char **__restrict __endptr)
+     throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern float strtof (__const char *__restrict __nptr,
+       char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern long double strtold (__const char *__restrict __nptr,
+       char **__restrict __endptr)
+     throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern long int strtol (__const char *__restrict __nptr,
+   char **__restrict __endptr, int __base)
+     throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+      char **__restrict __endptr, int __base)
+     throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+        char **__restrict __endptr, int __base)
+     throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+           char **__restrict __endptr, int __base)
+     throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+         char **__restrict __endptr, int __base)
+     throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+     char **__restrict __endptr, int __base)
+     throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+# 236 "/usr/include/stdlib.h" 3 4
+# 1 "/usr/include/xlocale.h" 1 3 4
+# 22 "/usr/include/xlocale.h" 3 4
+#define _XLOCALE_H 1
+
+
+
+
+
+typedef struct __locale_struct
+{
+
+  struct __locale_data *__locales[13];
+
+
+  const unsigned short int *__ctype_b;
+  const int *__ctype_tolower;
+  const int *__ctype_toupper;
+
+
+  const char *__names[13];
+} *__locale_t;
+
+
+typedef __locale_t locale_t;
+# 237 "/usr/include/stdlib.h" 2 3 4
+
+
+
+extern long int strtol_l (__const char *__restrict __nptr,
+     char **__restrict __endptr, int __base,
+     __locale_t __loc) throw () __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+
+extern unsigned long int strtoul_l (__const char *__restrict __nptr,
+        char **__restrict __endptr,
+        int __base, __locale_t __loc)
+     throw () __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+
+__extension__
+extern long long int strtoll_l (__const char *__restrict __nptr,
+    char **__restrict __endptr, int __base,
+    __locale_t __loc)
+     throw () __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+
+__extension__
+extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
+       char **__restrict __endptr,
+       int __base, __locale_t __loc)
+     throw () __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+
+extern double strtod_l (__const char *__restrict __nptr,
+   char **__restrict __endptr, __locale_t __loc)
+     throw () __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+
+extern float strtof_l (__const char *__restrict __nptr,
+         char **__restrict __endptr, __locale_t __loc)
+     throw () __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+
+extern long double strtold_l (__const char *__restrict __nptr,
+         char **__restrict __endptr,
+         __locale_t __loc)
+     throw () __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) double
+ atof (__const char *__nptr) throw ()
+{
+  return strtod (__nptr, (char **) __null);
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+ atoi (__const char *__nptr) throw ()
+{
+  return (int) strtol (__nptr, (char **) __null, 10);
+}
+extern __inline __attribute__ ((__gnu_inline__)) long int
+ atol (__const char *__nptr) throw ()
+{
+  return strtol (__nptr, (char **) __null, 10);
+}
+
+
+
+
+__extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int
+ atoll (__const char *__nptr) throw ()
+{
+  return strtoll (__nptr, (char **) __null, 10);
+}
+
+# 311 "/usr/include/stdlib.h" 3 4
+extern char *l64a (long int __n) throw () __attribute__ ((__warn_unused_result__));
+
+
+extern long int a64l (__const char *__s)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+# 1 "/usr/include/sys/types.h" 1 3 4
+# 24 "/usr/include/sys/types.h" 3 4
+#define _SYS_TYPES_H 1
+
+
+
+extern "C" {
+
+
+
+
+
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+#define __u_char_defined 
+
+
+
+typedef __loff_t loff_t;
+
+
+
+typedef __ino_t ino_t;
+
+
+
+#define __ino_t_defined 
+
+
+typedef __ino64_t ino64_t;
+#define __ino64_t_defined 
+
+
+
+typedef __dev_t dev_t;
+#define __dev_t_defined 
+
+
+
+typedef __gid_t gid_t;
+#define __gid_t_defined 
+
+
+
+typedef __mode_t mode_t;
+#define __mode_t_defined 
+
+
+
+typedef __nlink_t nlink_t;
+#define __nlink_t_defined 
+
+
+
+typedef __uid_t uid_t;
+#define __uid_t_defined 
+# 99 "/usr/include/sys/types.h" 3 4
+typedef __pid_t pid_t;
+#define __pid_t_defined 
+
+
+
+
+typedef __id_t id_t;
+#define __id_t_defined 
+# 116 "/usr/include/sys/types.h" 3 4
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+#define __daddr_t_defined 
+
+
+
+
+typedef __key_t key_t;
+#define __key_t_defined 
+
+
+
+#define __need_clock_t 
+
+#define __need_time_t 
+#define __need_timer_t 
+#define __need_clockid_t 
+# 1 "/usr/include/time.h" 1 3 4
+# 54 "/usr/include/time.h" 3 4
+#define __clock_t_defined 1
+
+
+
+
+
+typedef __clock_t clock_t;
+
+
+
+
+
+
+#undef __need_clock_t
+
+
+#define __time_t_defined 1
+
+
+
+
+
+typedef __time_t time_t;
+
+
+
+
+
+
+#undef __need_time_t
+
+
+
+#define __clockid_t_defined 1
+
+
+
+
+typedef __clockid_t clockid_t;
+
+
+#undef __clockid_time_t
+
+
+
+#define __timer_t_defined 1
+
+
+
+
+typedef __timer_t timer_t;
+
+
+#undef __need_timer_t
+# 127 "/usr/include/time.h" 3 4
+#undef __need_timespec
+# 134 "/usr/include/sys/types.h" 2 3 4
+
+
+
+typedef __useconds_t useconds_t;
+#define __useconds_t_defined 
+
+
+typedef __suseconds_t suseconds_t;
+#define __suseconds_t_defined 
+
+
+
+#define __need_size_t 
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 160 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 233 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 342 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 395 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 406 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 148 "/usr/include/sys/types.h" 2 3 4
+
+
+
+typedef unsigned long int ulong;
+typedef unsigned short int ushort;
+typedef unsigned int uint;
+# 188 "/usr/include/sys/types.h" 3 4
+#define __intN_t(N,MODE) typedef int int ##N ##_t __attribute__ ((__mode__ (MODE)))
+
+#define __u_intN_t(N,MODE) typedef unsigned int u_int ##N ##_t __attribute__ ((__mode__ (MODE)))
+# 201 "/usr/include/sys/types.h" 3 4
+typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
+
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+
+
+
+
+
+#define __BIT_TYPES_DEFINED__ 1
+
+
+
+
+
+
+
+# 1 "/usr/include/sys/select.h" 1 3 4
+# 23 "/usr/include/sys/select.h" 3 4
+#define _SYS_SELECT_H 1
+
+
+
+
+
+
+
+# 1 "/usr/include/bits/select.h" 1 3 4
+# 26 "/usr/include/bits/select.h" 3 4
+#define __FD_ZERO(s) do { unsigned int __i; fd_set *__arr = (s); for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) __FDS_BITS (__arr)[__i] = 0; } while (0)
+
+
+
+
+
+
+#define __FD_SET(d,s) ((void) (__FDS_BITS (s)[__FD_ELT(d)] |= __FD_MASK(d)))
+
+#define __FD_CLR(d,s) ((void) (__FDS_BITS (s)[__FD_ELT(d)] &= ~__FD_MASK(d)))
+
+#define __FD_ISSET(d,s) ((__FDS_BITS (s)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
+# 32 "/usr/include/sys/select.h" 2 3 4
+
+
+# 1 "/usr/include/bits/sigset.h" 1 3 4
+# 22 "/usr/include/bits/sigset.h" 3 4
+#define _SIGSET_H_types 1
+
+typedef int __sig_atomic_t;
+
+
+
+#define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
+typedef struct
+  {
+    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+  } __sigset_t;
+# 35 "/usr/include/sys/select.h" 2 3 4
+
+
+#define __sigset_t_defined 
+typedef __sigset_t sigset_t;
+
+
+
+#define __need_time_t 
+#define __need_timespec 
+# 1 "/usr/include/time.h" 1 3 4
+# 67 "/usr/include/time.h" 3 4
+#undef __need_clock_t
+# 83 "/usr/include/time.h" 3 4
+#undef __need_time_t
+# 95 "/usr/include/time.h" 3 4
+#undef __clockid_time_t
+# 107 "/usr/include/time.h" 3 4
+#undef __need_timer_t
+
+
+
+
+
+
+#define __timespec_defined 1
+
+
+
+
+
+struct timespec
+  {
+    __time_t tv_sec;
+    long int tv_nsec;
+  };
+
+
+#undef __need_timespec
+# 45 "/usr/include/sys/select.h" 2 3 4
+#define __need_timeval 
+# 1 "/usr/include/bits/time.h" 1 3 4
+# 26 "/usr/include/bits/time.h" 3 4
+#define _STRUCT_TIMEVAL 1
+
+
+
+
+struct timeval
+  {
+    __time_t tv_sec;
+    __suseconds_t tv_usec;
+  };
+# 99 "/usr/include/bits/time.h" 3 4
+#undef __need_timeval
+# 47 "/usr/include/sys/select.h" 2 3 4
+# 55 "/usr/include/sys/select.h" 3 4
+typedef long int __fd_mask;
+
+
+#undef __NFDBITS
+
+#define __NFDBITS (8 * (int) sizeof (__fd_mask))
+#define __FD_ELT(d) ((d) / __NFDBITS)
+#define __FD_MASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
+
+
+typedef struct
+  {
+
+
+
+    __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))];
+#define __FDS_BITS(set) ((set)->fds_bits)
+
+
+
+
+  } fd_set;
+
+
+#define FD_SETSIZE __FD_SETSIZE
+
+
+
+typedef __fd_mask fd_mask;
+
+
+#define NFDBITS __NFDBITS
+
+
+
+
+#define FD_SET(fd,fdsetp) __FD_SET (fd, fdsetp)
+#define FD_CLR(fd,fdsetp) __FD_CLR (fd, fdsetp)
+#define FD_ISSET(fd,fdsetp) __FD_ISSET (fd, fdsetp)
+#define FD_ZERO(fdsetp) __FD_ZERO (fdsetp)
+
+
+extern "C" {
+# 107 "/usr/include/sys/select.h" 3 4
+extern int select (int __nfds, fd_set *__restrict __readfds,
+     fd_set *__restrict __writefds,
+     fd_set *__restrict __exceptfds,
+     struct timeval *__restrict __timeout);
+# 119 "/usr/include/sys/select.h" 3 4
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+      fd_set *__restrict __writefds,
+      fd_set *__restrict __exceptfds,
+      const struct timespec *__restrict __timeout,
+      const __sigset_t *__restrict __sigmask);
+
+
+
+
+
+# 1 "/usr/include/bits/select2.h" 1 3 4
+# 25 "/usr/include/bits/select2.h" 3 4
+extern long int __fdelt_chk (long int __d);
+extern long int __fdelt_warn (long int __d)
+  __attribute__((__warning__ ("bit outside of fd_set selected")));
+#undef __FD_ELT
+#define __FD_ELT(d) __extension__ ({ long int __d = (d); (__builtin_constant_p (__d) ? (0 <= __d && __d < __FD_SETSIZE ? (__d / __NFDBITS) : __fdelt_warn (__d)) : __fdelt_chk (__d)); })
+# 130 "/usr/include/sys/select.h" 2 3 4
+
+
+}
+# 221 "/usr/include/sys/types.h" 2 3 4
+
+
+# 1 "/usr/include/sys/sysmacros.h" 1 3 4
+# 22 "/usr/include/sys/sysmacros.h" 3 4
+#define _SYS_SYSMACROS_H 1
+
+
+
+
+
+
+
+extern "C" {
+
+__extension__
+extern unsigned int gnu_dev_major (unsigned long long int __dev)
+     throw () __attribute__ ((__const__));
+__extension__
+extern unsigned int gnu_dev_minor (unsigned long long int __dev)
+     throw () __attribute__ ((__const__));
+__extension__
+extern unsigned long long int gnu_dev_makedev (unsigned int __major,
+            unsigned int __minor)
+     throw () __attribute__ ((__const__));
+
+
+__extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) unsigned int
+ gnu_dev_major (unsigned long long int __dev) throw ()
+{
+  return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
+}
+
+__extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) unsigned int
+ gnu_dev_minor (unsigned long long int __dev) throw ()
+{
+  return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
+}
+
+__extension__ extern __inline __attribute__ ((__gnu_inline__)) __attribute__ ((__const__)) unsigned long long int
+ gnu_dev_makedev (unsigned int __major, unsigned int __minor) throw ()
+{
+  return ((__minor & 0xff) | ((__major & 0xfff) << 8)
+   | (((unsigned long long int) (__minor & ~0xff)) << 12)
+   | (((unsigned long long int) (__major & ~0xfff)) << 32));
+}
+
+}
+
+
+#define major(dev) gnu_dev_major (dev)
+#define minor(dev) gnu_dev_minor (dev)
+#define makedev(maj,min) gnu_dev_makedev (maj, min)
+# 224 "/usr/include/sys/types.h" 2 3 4
+
+
+
+
+
+typedef __blksize_t blksize_t;
+#define __blksize_t_defined 
+
+
+
+
+
+typedef __blkcnt_t blkcnt_t;
+#define __blkcnt_t_defined 
+
+
+typedef __fsblkcnt_t fsblkcnt_t;
+#define __fsblkcnt_t_defined 
+
+
+typedef __fsfilcnt_t fsfilcnt_t;
+#define __fsfilcnt_t_defined 
+# 263 "/usr/include/sys/types.h" 3 4
+typedef __blkcnt64_t blkcnt64_t;
+typedef __fsblkcnt64_t fsblkcnt64_t;
+typedef __fsfilcnt64_t fsfilcnt64_t;
+
+
+
+
+
+# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
+# 20 "/usr/include/bits/pthreadtypes.h" 3 4
+#define _BITS_PTHREADTYPES_H 1
+
+
+
+#define __SIZEOF_PTHREAD_ATTR_T 36
+#define __SIZEOF_PTHREAD_MUTEX_T 24
+#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
+#define __SIZEOF_PTHREAD_COND_T 48
+#define __SIZEOF_PTHREAD_COND_COMPAT_T 12
+#define __SIZEOF_PTHREAD_CONDATTR_T 4
+#define __SIZEOF_PTHREAD_RWLOCK_T 32
+#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
+#define __SIZEOF_PTHREAD_BARRIER_T 20
+#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
+
+
+
+
+typedef unsigned long int pthread_t;
+
+
+typedef union
+{
+  char __size[36];
+  long int __align;
+} pthread_attr_t;
+
+
+typedef struct __pthread_internal_slist
+{
+  struct __pthread_internal_slist *__next;
+} __pthread_slist_t;
+
+
+
+
+typedef union
+{
+  struct __pthread_mutex_s
+  {
+    int __lock;
+    unsigned int __count;
+    int __owner;
+
+
+    int __kind;
+    unsigned int __nusers;
+    __extension__ union
+    {
+      int __spins;
+      __pthread_slist_t __list;
+    };
+  } __data;
+  char __size[24];
+  long int __align;
+} pthread_mutex_t;
+
+typedef union
+{
+  char __size[4];
+  long int __align;
+} pthread_mutexattr_t;
+
+
+
+
+typedef union
+{
+  struct
+  {
+    int __lock;
+    unsigned int __futex;
+    __extension__ unsigned long long int __total_seq;
+    __extension__ unsigned long long int __wakeup_seq;
+    __extension__ unsigned long long int __woken_seq;
+    void *__mutex;
+    unsigned int __nwaiters;
+    unsigned int __broadcast_seq;
+  } __data;
+  char __size[48];
+  __extension__ long long int __align;
+} pthread_cond_t;
+
+typedef union
+{
+  char __size[4];
+  long int __align;
+} pthread_condattr_t;
+
+
+
+typedef unsigned int pthread_key_t;
+
+
+
+typedef int pthread_once_t;
+
+
+
+
+
+typedef union
+{
+  struct
+  {
+    int __lock;
+    unsigned int __nr_readers;
+    unsigned int __readers_wakeup;
+    unsigned int __writer_wakeup;
+    unsigned int __nr_readers_queued;
+    unsigned int __nr_writers_queued;
+# 141 "/usr/include/bits/pthreadtypes.h" 3 4
+    unsigned char __flags;
+    unsigned char __shared;
+    unsigned char __pad1;
+    unsigned char __pad2;
+
+    int __writer;
+  } __data;
+  char __size[32];
+  long int __align;
+} pthread_rwlock_t;
+
+typedef union
+{
+  char __size[8];
+  long int __align;
+} pthread_rwlockattr_t;
+
+
+
+
+
+typedef volatile int pthread_spinlock_t;
+
+
+
+
+typedef union
+{
+  char __size[20];
+  long int __align;
+} pthread_barrier_t;
+
+typedef union
+{
+  char __size[4];
+  int __align;
+} pthread_barrierattr_t;
+# 272 "/usr/include/sys/types.h" 2 3 4
+
+
+}
+# 321 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+
+
+extern long int random (void) throw ();
+
+
+extern void srandom (unsigned int __seed) throw ();
+
+
+
+
+
+extern char *initstate (unsigned int __seed, char *__statebuf,
+   size_t __statelen) throw () __attribute__ ((__nonnull__ (2)));
+
+
+
+extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+struct random_data
+  {
+    int32_t *fptr;
+    int32_t *rptr;
+    int32_t *state;
+    int rand_type;
+    int rand_deg;
+    int rand_sep;
+    int32_t *end_ptr;
+  };
+
+extern int random_r (struct random_data *__restrict __buf,
+       int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
+
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+     throw () __attribute__ ((__nonnull__ (2)));
+
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+   size_t __statelen,
+   struct random_data *__restrict __buf)
+     throw () __attribute__ ((__nonnull__ (2, 4)));
+
+extern int setstate_r (char *__restrict __statebuf,
+         struct random_data *__restrict __buf)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern int rand (void) throw ();
+
+extern void srand (unsigned int __seed) throw ();
+
+
+
+
+extern int rand_r (unsigned int *__seed) throw ();
+
+
+
+
+
+
+
+extern double drand48 (void) throw ();
+extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern long int lrand48 (void) throw ();
+extern long int nrand48 (unsigned short int __xsubi[3])
+     throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern long int mrand48 (void) throw ();
+extern long int jrand48 (unsigned short int __xsubi[3])
+     throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern void srand48 (long int __seedval) throw ();
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+     throw () __attribute__ ((__nonnull__ (1)));
+extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+struct drand48_data
+  {
+    unsigned short int __x[3];
+    unsigned short int __old_x[3];
+    unsigned short int __c;
+    unsigned short int __init;
+    unsigned long long int __a;
+  };
+
+
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+        double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int erand48_r (unsigned short int __xsubi[3],
+        struct drand48_data *__restrict __buffer,
+        double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+        long int *__restrict __result)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int nrand48_r (unsigned short int __xsubi[3],
+        struct drand48_data *__restrict __buffer,
+        long int *__restrict __result)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+        long int *__restrict __result)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int jrand48_r (unsigned short int __xsubi[3],
+        struct drand48_data *__restrict __buffer,
+        long int *__restrict __result)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+     throw () __attribute__ ((__nonnull__ (2)));
+
+extern int seed48_r (unsigned short int __seed16v[3],
+       struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2)));
+
+extern int lcong48_r (unsigned short int __param[7],
+        struct drand48_data *__buffer)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+#define __malloc_and_calloc_defined 
+
+
+extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+extern void *calloc (size_t __nmemb, size_t __size)
+     throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+
+
+extern void *realloc (void *__ptr, size_t __size)
+     throw () __attribute__ ((__warn_unused_result__));
+
+extern void free (void *__ptr) throw ();
+
+
+
+
+extern void cfree (void *__ptr) throw ();
+
+
+
+# 1 "/usr/include/alloca.h" 1 3 4
+# 20 "/usr/include/alloca.h" 3 4
+#define _ALLOCA_H 1
+
+
+
+#define __need_size_t 
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 160 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 233 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 342 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 395 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 406 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 26 "/usr/include/alloca.h" 2 3 4
+
+extern "C" {
+
+
+#undef alloca
+
+
+extern void *alloca (size_t __size) throw ();
+
+
+#define alloca(size) __builtin_alloca (size)
+
+
+}
+# 498 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+
+extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+     throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern void abort (void) throw () __attribute__ ((__noreturn__));
+
+
+
+extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern "C++" int at_quick_exit (void (*__func) (void))
+     throw () __asm ("at_quick_exit") __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+
+
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+     throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern void exit (int __status) throw () __attribute__ ((__noreturn__));
+
+
+
+
+
+
+
+extern void quick_exit (int __status) throw () __attribute__ ((__noreturn__));
+
+
+
+
+
+
+
+extern void _Exit (int __status) throw () __attribute__ ((__noreturn__));
+
+
+
+
+
+
+extern char *getenv (__const char *__name) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern char *__secure_getenv (__const char *__name)
+     throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+     throw () __attribute__ ((__nonnull__ (2)));
+
+
+extern int unsetenv (__const char *__name) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int clearenv (void) throw ();
+# 606 "/usr/include/stdlib.h" 3 4
+extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 620 "/usr/include/stdlib.h" 3 4
+extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 630 "/usr/include/stdlib.h" 3 4
+extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 642 "/usr/include/stdlib.h" 3 4
+extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 652 "/usr/include/stdlib.h" 3 4
+extern int mkstemps64 (char *__template, int __suffixlen)
+     __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 663 "/usr/include/stdlib.h" 3 4
+extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 674 "/usr/include/stdlib.h" 3 4
+extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 684 "/usr/include/stdlib.h" 3 4
+extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 694 "/usr/include/stdlib.h" 3 4
+extern int mkostemps (char *__template, int __suffixlen, int __flags)
+     __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 706 "/usr/include/stdlib.h" 3 4
+extern int mkostemps64 (char *__template, int __suffixlen, int __flags)
+     __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+
+extern int system (__const char *__command) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern char *canonicalize_file_name (__const char *__name)
+     throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 734 "/usr/include/stdlib.h" 3 4
+extern char *realpath (__const char *__restrict __name,
+         char *__restrict __resolved) throw () __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+#define __COMPAR_FN_T 
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+
+
+typedef __compar_fn_t comparison_fn_t;
+
+
+
+typedef int (*__compar_d_fn_t) (__const void *, __const void *, void *);
+
+
+
+
+
+extern void *bsearch (__const void *__key, __const void *__base,
+        size_t __nmemb, size_t __size, __compar_fn_t __compar)
+     __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+     __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
+
+extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
+       __compar_d_fn_t __compar, void *__arg)
+  __attribute__ ((__nonnull__ (1, 4)));
+
+
+
+
+extern int abs (int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+extern long int labs (long int __x) throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+
+
+
+__extension__ extern long long int llabs (long long int __x)
+     throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+extern div_t div (int __numer, int __denom)
+     throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+extern ldiv_t ldiv (long int __numer, long int __denom)
+     throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+__extension__ extern lldiv_t lldiv (long long int __numer,
+        long long int __denom)
+     throw () __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+
+# 808 "/usr/include/stdlib.h" 3 4
+extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
+     int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
+     int *__restrict __sign) throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+     throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern char *qecvt (long double __value, int __ndigit,
+      int *__restrict __decpt, int *__restrict __sign)
+     throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+extern char *qfcvt (long double __value, int __ndigit,
+      int *__restrict __decpt, int *__restrict __sign)
+     throw () __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+extern char *qgcvt (long double __value, int __ndigit, char *__buf)
+     throw () __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
+     int *__restrict __sign, char *__restrict __buf,
+     size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
+     int *__restrict __sign, char *__restrict __buf,
+     size_t __len) throw () __attribute__ ((__nonnull__ (3, 4, 5)));
+
+extern int qecvt_r (long double __value, int __ndigit,
+      int *__restrict __decpt, int *__restrict __sign,
+      char *__restrict __buf, size_t __len)
+     throw () __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qfcvt_r (long double __value, int __ndigit,
+      int *__restrict __decpt, int *__restrict __sign,
+      char *__restrict __buf, size_t __len)
+     throw () __attribute__ ((__nonnull__ (3, 4, 5)));
+
+
+
+
+
+
+
+extern int mblen (__const char *__s, size_t __n) throw () __attribute__ ((__warn_unused_result__));
+
+
+extern int mbtowc (wchar_t *__restrict __pwc,
+     __const char *__restrict __s, size_t __n) throw () __attribute__ ((__warn_unused_result__));
+
+
+extern int wctomb (char *__s, wchar_t __wchar) throw () __attribute__ ((__warn_unused_result__));
+
+
+
+extern size_t mbstowcs (wchar_t *__restrict __pwcs,
+   __const char *__restrict __s, size_t __n) throw ();
+
+extern size_t wcstombs (char *__restrict __s,
+   __const wchar_t *__restrict __pwcs, size_t __n)
+     throw ();
+
+
+
+
+
+
+
+
+extern int rpmatch (__const char *__response) throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 896 "/usr/include/stdlib.h" 3 4
+extern int getsubopt (char **__restrict __optionp,
+        char *__const *__restrict __tokens,
+        char **__restrict __valuep)
+     throw () __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern void setkey (__const char *__key) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+extern int grantpt (int __fd) throw ();
+
+
+
+extern int unlockpt (int __fd) throw ();
+
+
+
+
+extern char *ptsname (int __fd) throw () __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
+     throw () __attribute__ ((__nonnull__ (2)));
+
+
+extern int getpt (void);
+
+
+
+
+
+
+extern int getloadavg (double __loadavg[], int __nelem)
+     throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+# 1 "/usr/include/bits/stdlib.h" 1 3 4
+# 24 "/usr/include/bits/stdlib.h" 3 4
+extern char *__realpath_chk (__const char *__restrict __name,
+        char *__restrict __resolved,
+        size_t __resolvedlen) throw () __attribute__ ((__warn_unused_result__));
+extern char *__realpath_alias (__const char *__restrict __name, char *__restrict __resolved) throw () __asm__ ("" "realpath")
+
+                                                 __attribute__ ((__warn_unused_result__));
+extern char *__realpath_chk_warn (__const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) throw () __asm__ ("" "__realpath_chk")
+
+
+                                                __attribute__ ((__warn_unused_result__))
+     __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer")))
+                                      ;
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+ realpath (__const char *__restrict __name, char *__restrict __resolved) throw ()
+{
+  if (__builtin_object_size (__resolved, 2 > 1) != (size_t) -1)
+    {
+
+
+
+
+      return __realpath_chk (__name, __resolved, __builtin_object_size (__resolved, 2 > 1));
+    }
+
+  return __realpath_alias (__name, __resolved);
+}
+
+
+extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
+       size_t __nreal) throw () __attribute__ ((__nonnull__ (2)));
+extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) throw () __asm__ ("" "ptsname_r")
+
+     __attribute__ ((__nonnull__ (2)));
+extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) throw () __asm__ ("" "__ptsname_r_chk")
+
+
+     __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf")))
+                   ;
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+ ptsname_r (int __fd, char *__buf, size_t __buflen) throw ()
+{
+  if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+    {
+      if (!__builtin_constant_p (__buflen))
+ return __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+      if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+    }
+  return __ptsname_r_alias (__fd, __buf, __buflen);
+}
+
+
+extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen)
+  throw () __attribute__ ((__warn_unused_result__));
+extern int __wctomb_alias (char *__s, wchar_t __wchar) throw () __asm__ ("" "wctomb")
+              __attribute__ ((__warn_unused_result__));
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) int
+ wctomb (char *__s, wchar_t __wchar) throw ()
+{
+
+
+
+#define __STDLIB_MB_LEN_MAX 16
+
+
+
+  if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1))
+    return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1));
+  return __wctomb_alias (__s, __wchar);
+}
+
+
+extern size_t __mbstowcs_chk (wchar_t *__restrict __dst,
+         __const char *__restrict __src,
+         size_t __len, size_t __dstlen) throw ();
+extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len) throw () __asm__ ("" "mbstowcs")
+
+
+                                  ;
+extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__mbstowcs_chk")
+
+
+
+     __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)")))
+                        ;
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
+ mbstowcs (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len) throw ()
+
+{
+  if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
+    {
+      if (!__builtin_constant_p (__len))
+ return __mbstowcs_chk (__dst, __src, __len,
+          __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
+
+      if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t))
+ return __mbstowcs_chk_warn (__dst, __src, __len,
+         __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
+    }
+  return __mbstowcs_alias (__dst, __src, __len);
+}
+
+
+extern size_t __wcstombs_chk (char *__restrict __dst,
+         __const wchar_t *__restrict __src,
+         size_t __len, size_t __dstlen) throw ();
+extern size_t __wcstombs_alias (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len) throw () __asm__ ("" "wcstombs")
+
+
+                                  ;
+extern size_t __wcstombs_chk_warn (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len, size_t __dstlen) throw () __asm__ ("" "__wcstombs_chk")
+
+
+
+     __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len")));
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
+ wcstombs (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len) throw ()
+
+{
+  if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
+    {
+      if (!__builtin_constant_p (__len))
+ return __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
+      if (__len > __builtin_object_size (__dst, 2 > 1))
+ return __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
+    }
+  return __wcstombs_alias (__dst, __src, __len);
+}
+# 956 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+
+
+#undef __need_malloc_and_calloc
+
+}
+# 18 "./../../dist/include/mozilla/Assertions.h" 2
+
+# 1 "/usr/include/signal.h" 1 3 4
+# 26 "/usr/include/signal.h" 3 4
+#define _SIGNAL_H 
+
+
+
+
+extern "C" {
+
+# 1 "/usr/include/bits/sigset.h" 1 3 4
+# 44 "/usr/include/bits/sigset.h" 3 4
+#define _SIGSET_H_fns 1
+
+
+#define _EXTERN_INLINE __extern_inline
+
+
+
+#define __sigmask(sig) (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int))))
+
+
+
+#define __sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int)))
+
+
+#define __sigemptyset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__set = (set); while (--__cnt >= 0) __set->__val[__cnt] = 0; 0; }))
+
+
+
+
+#define __sigfillset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__set = (set); while (--__cnt >= 0) __set->__val[__cnt] = ~0UL; 0; }))
+# 73 "/usr/include/bits/sigset.h" 3 4
+#define __sigisemptyset(set) (__extension__ ({ int __cnt = _SIGSET_NWORDS; const sigset_t *__set = (set); int __ret = __set->__val[--__cnt]; while (!__ret && --__cnt >= 0) __ret = __set->__val[__cnt]; __ret == 0; }))
+
+
+
+
+
+
+#define __sigandset(dest,left,right) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__dest = (dest); const sigset_t *__left = (left); const sigset_t *__right = (right); while (--__cnt >= 0) __dest->__val[__cnt] = (__left->__val[__cnt] & __right->__val[__cnt]); 0; }))
+# 89 "/usr/include/bits/sigset.h" 3 4
+#define __sigorset(dest,left,right) (__extension__ ({ int __cnt = _SIGSET_NWORDS; sigset_t *__dest = (dest); const sigset_t *__left = (left); const sigset_t *__right = (right); while (--__cnt >= 0) __dest->__val[__cnt] = (__left->__val[__cnt] | __right->__val[__cnt]); 0; }))
+# 104 "/usr/include/bits/sigset.h" 3 4
+extern int __sigismember (__const __sigset_t *, int);
+extern int __sigaddset (__sigset_t *, int);
+extern int __sigdelset (__sigset_t *, int);
+
+
+#define __SIGSETFN(NAME,BODY,CONST) _EXTERN_INLINE int NAME (CONST __sigset_t *__set, int __sig) { unsigned long int __mask = __sigmask (__sig); unsigned long int __word = __sigword (__sig); return BODY; }
+# 118 "/usr/include/bits/sigset.h" 3 4
+extern __inline __attribute__ ((__gnu_inline__)) int __sigismember (__const __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return (__set->__val[__word] & __mask) ? 1 : 0; }
+extern __inline __attribute__ ((__gnu_inline__)) int __sigaddset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] |= __mask), 0); }
+extern __inline __attribute__ ((__gnu_inline__)) int __sigdelset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] &= ~__mask), 0); }
+
+#undef __SIGSETFN
+# 34 "/usr/include/signal.h" 2 3 4
+
+
+
+
+
+#define __sig_atomic_t_defined 
+
+typedef __sig_atomic_t sig_atomic_t;
+
+
+#undef __need_sig_atomic_t
+
+
+
+
+
+
+
+#undef __need_sigset_t
+
+
+
+
+
+# 1 "/usr/include/bits/signum.h" 1 3 4
+# 23 "/usr/include/bits/signum.h" 3 4
+#define SIG_ERR ((__sighandler_t) -1)
+#define SIG_DFL ((__sighandler_t) 0)
+#define SIG_IGN ((__sighandler_t) 1)
+
+
+#define SIG_HOLD ((__sighandler_t) 2)
+
+
+
+
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT 6
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGSTKFLT 16
+#define SIGCLD SIGCHLD
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
+#define SIGVTALRM 26
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGPOLL SIGIO
+#define SIGIO 29
+#define SIGPWR 30
+#define SIGSYS 31
+#define SIGUNUSED 31
+
+#define _NSIG 65
+
+
+#define SIGRTMIN (__libc_current_sigrtmin ())
+#define SIGRTMAX (__libc_current_sigrtmax ())
+
+
+
+#define __SIGRTMIN 32
+#define __SIGRTMAX (_NSIG - 1)
+# 59 "/usr/include/signal.h" 2 3 4
+# 75 "/usr/include/signal.h" 3 4
+#define __need_timespec 
+# 1 "/usr/include/time.h" 1 3 4
+# 67 "/usr/include/time.h" 3 4
+#undef __need_clock_t
+# 83 "/usr/include/time.h" 3 4
+#undef __need_time_t
+# 95 "/usr/include/time.h" 3 4
+#undef __clockid_time_t
+# 107 "/usr/include/time.h" 3 4
+#undef __need_timer_t
+# 127 "/usr/include/time.h" 3 4
+#undef __need_timespec
+# 77 "/usr/include/signal.h" 2 3 4
+
+
+# 1 "/usr/include/bits/siginfo.h" 1 3 4
+# 25 "/usr/include/bits/siginfo.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 19 "/usr/include/bits/wordsize.h" 3 4
+#define __WORDSIZE 32
+# 26 "/usr/include/bits/siginfo.h" 2 3 4
+
+
+
+
+#define __have_sigval_t 1
+
+
+typedef union sigval
+  {
+    int sival_int;
+    void *sival_ptr;
+  } sigval_t;
+
+
+
+
+#define __have_siginfo_t 1
+
+#define __SI_MAX_SIZE 128
+
+
+
+#define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
+
+
+typedef struct siginfo
+  {
+    int si_signo;
+    int si_errno;
+
+    int si_code;
+
+    union
+      {
+ int _pad[((128 / sizeof (int)) - 3)];
+
+
+ struct
+   {
+     __pid_t si_pid;
+     __uid_t si_uid;
+   } _kill;
+
+
+ struct
+   {
+     int si_tid;
+     int si_overrun;
+     sigval_t si_sigval;
+   } _timer;
+
+
+ struct
+   {
+     __pid_t si_pid;
+     __uid_t si_uid;
+     sigval_t si_sigval;
+   } _rt;
+
+
+ struct
+   {
+     __pid_t si_pid;
+     __uid_t si_uid;
+     int si_status;
+     __clock_t si_utime;
+     __clock_t si_stime;
+   } _sigchld;
+
+
+ struct
+   {
+     void *si_addr;
+   } _sigfault;
+
+
+ struct
+   {
+     long int si_band;
+     int si_fd;
+   } _sigpoll;
+      } _sifields;
+  } siginfo_t;
+
+
+
+#define si_pid _sifields._kill.si_pid
+#define si_uid _sifields._kill.si_uid
+#define si_timerid _sifields._timer.si_tid
+#define si_overrun _sifields._timer.si_overrun
+#define si_status _sifields._sigchld.si_status
+#define si_utime _sifields._sigchld.si_utime
+#define si_stime _sifields._sigchld.si_stime
+#define si_value _sifields._rt.si_sigval
+#define si_int _sifields._rt.si_sigval.sival_int
+#define si_ptr _sifields._rt.si_sigval.sival_ptr
+#define si_addr _sifields._sigfault.si_addr
+#define si_band _sifields._sigpoll.si_band
+#define si_fd _sifields._sigpoll.si_fd
+
+
+
+
+enum
+{
+  SI_ASYNCNL = -60,
+#define SI_ASYNCNL SI_ASYNCNL
+  SI_TKILL = -6,
+#define SI_TKILL SI_TKILL
+  SI_SIGIO,
+#define SI_SIGIO SI_SIGIO
+  SI_ASYNCIO,
+#define SI_ASYNCIO SI_ASYNCIO
+  SI_MESGQ,
+#define SI_MESGQ SI_MESGQ
+  SI_TIMER,
+#define SI_TIMER SI_TIMER
+  SI_QUEUE,
+#define SI_QUEUE SI_QUEUE
+  SI_USER,
+#define SI_USER SI_USER
+  SI_KERNEL = 0x80
+#define SI_KERNEL SI_KERNEL
+};
+
+
+
+enum
+{
+  ILL_ILLOPC = 1,
+#define ILL_ILLOPC ILL_ILLOPC
+  ILL_ILLOPN,
+#define ILL_ILLOPN ILL_ILLOPN
+  ILL_ILLADR,
+#define ILL_ILLADR ILL_ILLADR
+  ILL_ILLTRP,
+#define ILL_ILLTRP ILL_ILLTRP
+  ILL_PRVOPC,
+#define ILL_PRVOPC ILL_PRVOPC
+  ILL_PRVREG,
+#define ILL_PRVREG ILL_PRVREG
+  ILL_COPROC,
+#define ILL_COPROC ILL_COPROC
+  ILL_BADSTK
+#define ILL_BADSTK ILL_BADSTK
+};
+
+
+enum
+{
+  FPE_INTDIV = 1,
+#define FPE_INTDIV FPE_INTDIV
+  FPE_INTOVF,
+#define FPE_INTOVF FPE_INTOVF
+  FPE_FLTDIV,
+#define FPE_FLTDIV FPE_FLTDIV
+  FPE_FLTOVF,
+#define FPE_FLTOVF FPE_FLTOVF
+  FPE_FLTUND,
+#define FPE_FLTUND FPE_FLTUND
+  FPE_FLTRES,
+#define FPE_FLTRES FPE_FLTRES
+  FPE_FLTINV,
+#define FPE_FLTINV FPE_FLTINV
+  FPE_FLTSUB
+#define FPE_FLTSUB FPE_FLTSUB
+};
+
+
+enum
+{
+  SEGV_MAPERR = 1,
+#define SEGV_MAPERR SEGV_MAPERR
+  SEGV_ACCERR
+#define SEGV_ACCERR SEGV_ACCERR
+};
+
+
+enum
+{
+  BUS_ADRALN = 1,
+#define BUS_ADRALN BUS_ADRALN
+  BUS_ADRERR,
+#define BUS_ADRERR BUS_ADRERR
+  BUS_OBJERR
+#define BUS_OBJERR BUS_OBJERR
+};
+
+
+enum
+{
+  TRAP_BRKPT = 1,
+#define TRAP_BRKPT TRAP_BRKPT
+  TRAP_TRACE
+#define TRAP_TRACE TRAP_TRACE
+};
+
+
+enum
+{
+  CLD_EXITED = 1,
+#define CLD_EXITED CLD_EXITED
+  CLD_KILLED,
+#define CLD_KILLED CLD_KILLED
+  CLD_DUMPED,
+#define CLD_DUMPED CLD_DUMPED
+  CLD_TRAPPED,
+#define CLD_TRAPPED CLD_TRAPPED
+  CLD_STOPPED,
+#define CLD_STOPPED CLD_STOPPED
+  CLD_CONTINUED
+#define CLD_CONTINUED CLD_CONTINUED
+};
+
+
+enum
+{
+  POLL_IN = 1,
+#define POLL_IN POLL_IN
+  POLL_OUT,
+#define POLL_OUT POLL_OUT
+  POLL_MSG,
+#define POLL_MSG POLL_MSG
+  POLL_ERR,
+#define POLL_ERR POLL_ERR
+  POLL_PRI,
+#define POLL_PRI POLL_PRI
+  POLL_HUP
+#define POLL_HUP POLL_HUP
+};
+
+#undef __need_siginfo_t
+
+
+
+
+
+#define __have_sigevent_t 1
+
+
+#define __SIGEV_MAX_SIZE 64
+
+
+
+#define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
+
+
+typedef struct sigevent
+  {
+    sigval_t sigev_value;
+    int sigev_signo;
+    int sigev_notify;
+
+    union
+      {
+ int _pad[((64 / sizeof (int)) - 3)];
+
+
+
+ __pid_t _tid;
+
+ struct
+   {
+     void (*_function) (sigval_t);
+     void *_attribute;
+   } _sigev_thread;
+      } _sigev_un;
+  } sigevent_t;
+
+
+#define sigev_notify_function _sigev_un._sigev_thread._function
+#define sigev_notify_attributes _sigev_un._sigev_thread._attribute
+
+
+enum
+{
+  SIGEV_SIGNAL = 0,
+#define SIGEV_SIGNAL SIGEV_SIGNAL
+  SIGEV_NONE,
+#define SIGEV_NONE SIGEV_NONE
+  SIGEV_THREAD,
+#define SIGEV_THREAD SIGEV_THREAD
+
+  SIGEV_THREAD_ID = 4
+#define SIGEV_THREAD_ID SIGEV_THREAD_ID
+};
+# 80 "/usr/include/signal.h" 2 3 4
+
+
+
+
+typedef void (*__sighandler_t) (int);
+
+
+
+
+extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
+     throw ();
+
+extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler)
+     throw ();
+
+
+
+
+
+
+
+extern __sighandler_t signal (int __sig, __sighandler_t __handler)
+     throw ();
+# 113 "/usr/include/signal.h" 3 4
+
+
+
+
+
+extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler)
+     throw ();
+
+
+
+
+
+
+extern int kill (__pid_t __pid, int __sig) throw ();
+
+
+
+
+
+
+extern int killpg (__pid_t __pgrp, int __sig) throw ();
+
+
+
+
+extern int raise (int __sig) throw ();
+
+
+
+
+extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
+     throw ();
+extern int gsignal (int __sig) throw ();
+
+
+
+
+extern void psignal (int __sig, __const char *__s);
+
+
+
+
+extern void psiginfo (__const siginfo_t *__pinfo, __const char *__s);
+# 168 "/usr/include/signal.h" 3 4
+extern int __sigpause (int __sig_or_mask, int __is_sig);
+# 177 "/usr/include/signal.h" 3 4
+extern int sigpause (int __sig) __asm__ ("__xpg_sigpause");
+# 193 "/usr/include/signal.h" 3 4
+#define sigmask(sig) __sigmask(sig)
+
+
+extern int sigblock (int __mask) throw () __attribute__ ((__deprecated__));
+
+
+extern int sigsetmask (int __mask) throw () __attribute__ ((__deprecated__));
+
+
+extern int siggetmask (void) throw () __attribute__ ((__deprecated__));
+
+
+
+
+#define NSIG _NSIG
+
+
+
+typedef __sighandler_t sighandler_t;
+
+
+
+
+typedef __sighandler_t sig_t;
+
+
+
+
+
+extern int sigemptyset (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigfillset (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigaddset (sigset_t *__set, int __signo) throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigdelset (sigset_t *__set, int __signo) throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigismember (__const sigset_t *__set, int __signo)
+     throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int sigisemptyset (__const sigset_t *__set) throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigandset (sigset_t *__set, __const sigset_t *__left,
+        __const sigset_t *__right) throw () __attribute__ ((__nonnull__ (1, 2, 3)));
+
+
+extern int sigorset (sigset_t *__set, __const sigset_t *__left,
+       __const sigset_t *__right) throw () __attribute__ ((__nonnull__ (1, 2, 3)));
+
+
+
+
+# 1 "/usr/include/bits/sigaction.h" 1 3 4
+# 25 "/usr/include/bits/sigaction.h" 3 4
+struct sigaction
+  {
+
+
+    union
+      {
+
+ __sighandler_t sa_handler;
+
+ void (*sa_sigaction) (int, siginfo_t *, void *);
+      }
+    __sigaction_handler;
+#define sa_handler __sigaction_handler.sa_handler
+#define sa_sigaction __sigaction_handler.sa_sigaction
+
+
+
+
+
+    __sigset_t sa_mask;
+
+
+    int sa_flags;
+
+
+    void (*sa_restorer) (void);
+  };
+
+
+#define SA_NOCLDSTOP 1
+#define SA_NOCLDWAIT 2
+#define SA_SIGINFO 4
+
+
+#define SA_ONSTACK 0x08000000
+
+
+#define SA_RESTART 0x10000000
+#define SA_NODEFER 0x40000000
+
+#define SA_RESETHAND 0x80000000
+
+
+#define SA_INTERRUPT 0x20000000
+
+
+#define SA_NOMASK SA_NODEFER
+#define SA_ONESHOT SA_RESETHAND
+#define SA_STACK SA_ONSTACK
+
+
+
+#define SIG_BLOCK 0
+#define SIG_UNBLOCK 1
+#define SIG_SETMASK 2
+# 253 "/usr/include/signal.h" 2 3 4
+
+
+extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
+   sigset_t *__restrict __oset) throw ();
+
+
+
+
+
+
+extern int sigsuspend (__const sigset_t *__set) __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
+        struct sigaction *__restrict __oact) throw ();
+
+
+extern int sigpending (sigset_t *__set) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
+     __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern int sigwaitinfo (__const sigset_t *__restrict __set,
+   siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int sigtimedwait (__const sigset_t *__restrict __set,
+    siginfo_t *__restrict __info,
+    __const struct timespec *__restrict __timeout)
+     __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
+     throw ();
+# 310 "/usr/include/signal.h" 3 4
+extern __const char *__const _sys_siglist[65];
+extern __const char *__const sys_siglist[65];
+
+
+struct sigvec
+  {
+    __sighandler_t sv_handler;
+    int sv_mask;
+
+    int sv_flags;
+#define sv_onstack sv_flags
+  };
+
+
+#define SV_ONSTACK (1 << 0)
+#define SV_INTERRUPT (1 << 1)
+#define SV_RESETHAND (1 << 2)
+
+
+
+
+
+
+
+extern int sigvec (int __sig, __const struct sigvec *__vec,
+     struct sigvec *__ovec) throw ();
+
+
+
+# 1 "/usr/include/bits/sigcontext.h" 1 3 4
+# 26 "/usr/include/bits/sigcontext.h" 3 4
+#define sigcontext_struct sigcontext
+
+# 1 "/usr/include/asm/sigcontext.h" 1 3 4
+
+#define _ASMARM_SIGCONTEXT_H 
+
+
+
+
+
+
+struct sigcontext {
+ unsigned long trap_no;
+ unsigned long error_code;
+ unsigned long oldmask;
+ unsigned long arm_r0;
+ unsigned long arm_r1;
+ unsigned long arm_r2;
+ unsigned long arm_r3;
+ unsigned long arm_r4;
+ unsigned long arm_r5;
+ unsigned long arm_r6;
+ unsigned long arm_r7;
+ unsigned long arm_r8;
+ unsigned long arm_r9;
+ unsigned long arm_r10;
+ unsigned long arm_fp;
+ unsigned long arm_ip;
+ unsigned long arm_sp;
+ unsigned long arm_lr;
+ unsigned long arm_pc;
+ unsigned long arm_cpsr;
+ unsigned long fault_address;
+};
+# 29 "/usr/include/bits/sigcontext.h" 2 3 4
+
+
+#define __need_NULL 
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 160 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 233 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 342 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 395 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 406 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 33 "/usr/include/bits/sigcontext.h" 2 3 4
+# 340 "/usr/include/signal.h" 2 3 4
+
+
+extern int sigreturn (struct sigcontext *__scp) throw ();
+
+
+
+
+
+#define __need_size_t 
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 160 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 233 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 342 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 395 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 406 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 350 "/usr/include/signal.h" 2 3 4
+
+
+
+
+extern int siginterrupt (int __sig, int __interrupt) throw ();
+
+# 1 "/usr/include/bits/sigstack.h" 1 3 4
+# 26 "/usr/include/bits/sigstack.h" 3 4
+struct sigstack
+  {
+    void *ss_sp;
+    int ss_onstack;
+  };
+
+
+
+enum
+{
+  SS_ONSTACK = 1,
+#define SS_ONSTACK SS_ONSTACK
+  SS_DISABLE
+#define SS_DISABLE SS_DISABLE
+};
+
+
+#define MINSIGSTKSZ 2048
+
+
+#define SIGSTKSZ 8192
+
+
+
+typedef struct sigaltstack
+  {
+    void *ss_sp;
+    int ss_flags;
+    size_t ss_size;
+  } stack_t;
+# 357 "/usr/include/signal.h" 2 3 4
+
+
+# 1 "/usr/include/sys/ucontext.h" 1 3 4
+# 22 "/usr/include/sys/ucontext.h" 3 4
+#define _SYS_UCONTEXT_H 1
+
+
+# 1 "/usr/include/signal.h" 1 3 4
+# 26 "/usr/include/sys/ucontext.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/sigcontext.h" 1 3 4
+# 30 "/usr/include/sys/ucontext.h" 2 3 4
+
+typedef int greg_t;
+
+
+#define NGREG 18
+
+
+typedef greg_t gregset_t[18];
+
+
+enum
+{
+  REG_R0 = 0,
+#define REG_R0 REG_R0
+  REG_R1 = 1,
+#define REG_R1 REG_R1
+  REG_R2 = 2,
+#define REG_R2 REG_R2
+  REG_R3 = 3,
+#define REG_R3 REG_R3
+  REG_R4 = 4,
+#define REG_R4 REG_R4
+  REG_R5 = 5,
+#define REG_R5 REG_R5
+  REG_R6 = 6,
+#define REG_R6 REG_R6
+  REG_R7 = 7,
+#define REG_R7 REG_R7
+  REG_R8 = 8,
+#define REG_R8 REG_R8
+  REG_R9 = 9,
+#define REG_R9 REG_R9
+  REG_R10 = 10,
+#define REG_R10 REG_R10
+  REG_R11 = 11,
+#define REG_R11 REG_R11
+  REG_R12 = 12,
+#define REG_R12 REG_R12
+  REG_R13 = 13,
+#define REG_R13 REG_R13
+  REG_R14 = 14,
+#define REG_R14 REG_R14
+  REG_R15 = 15
+#define REG_R15 REG_R15
+};
+
+struct _libc_fpstate
+{
+  struct
+  {
+    unsigned int sign1:1;
+    unsigned int unused:15;
+    unsigned int sign2:1;
+    unsigned int exponent:14;
+    unsigned int j:1;
+    unsigned int mantissa1:31;
+    unsigned int mantissa0:32;
+  } fpregs[8];
+  unsigned int fpsr:32;
+  unsigned int fpcr:32;
+  unsigned char ftype[8];
+  unsigned int init_flag;
+};
+
+typedef struct _libc_fpstate fpregset_t;
+
+
+
+
+
+typedef struct sigcontext mcontext_t;
+
+
+typedef struct ucontext
+  {
+    unsigned long uc_flags;
+    struct ucontext *uc_link;
+    stack_t uc_stack;
+    mcontext_t uc_mcontext;
+    __sigset_t uc_sigmask;
+    unsigned long uc_regspace[128] __attribute__((__aligned__(8)));
+  } ucontext_t;
+# 360 "/usr/include/signal.h" 2 3 4
+
+
+
+
+
+extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
+     throw () __attribute__ ((__deprecated__));
+
+
+
+extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
+   struct sigaltstack *__restrict __oss) throw ();
+
+
+
+
+
+
+
+extern int sighold (int __sig) throw ();
+
+
+extern int sigrelse (int __sig) throw ();
+
+
+extern int sigignore (int __sig) throw ();
+
+
+extern __sighandler_t sigset (int __sig, __sighandler_t __disp) throw ();
+
+
+
+
+
+
+# 1 "/usr/include/bits/sigthread.h" 1 3 4
+# 21 "/usr/include/bits/sigthread.h" 3 4
+#define _BITS_SIGTHREAD_H 1
+# 31 "/usr/include/bits/sigthread.h" 3 4
+extern int pthread_sigmask (int __how,
+       __const __sigset_t *__restrict __newmask,
+       __sigset_t *__restrict __oldmask)throw ();
+
+
+extern int pthread_kill (pthread_t __threadid, int __signo) throw ();
+
+
+
+extern int pthread_sigqueue (pthread_t __threadid, int __signo,
+        const union sigval __value) throw ();
+# 396 "/usr/include/signal.h" 2 3 4
+
+
+
+
+
+
+extern int __libc_current_sigrtmin (void) throw ();
+
+extern int __libc_current_sigrtmax (void) throw ();
+
+
+
+}
+# 20 "./../../dist/include/mozilla/Assertions.h" 2
+# 65 "./../../dist/include/mozilla/Assertions.h"
+#define MOZ_STATIC_ASSERT_GLUE1(x,y) x ##y
+#define MOZ_STATIC_ASSERT_GLUE(x,y) MOZ_STATIC_ASSERT_GLUE1(x, y)
+# 96 "./../../dist/include/mozilla/Assertions.h"
+#define MOZ_STATIC_ASSERT(cond,reason) typedef int MOZ_STATIC_ASSERT_GLUE(moz_static_assert, __COUNTER__)[(cond) ? 1 : -1]
+
+
+
+
+
+
+
+#define MOZ_STATIC_ASSERT_IF(cond,expr,reason) MOZ_STATIC_ASSERT(!(cond) || (expr), reason)
+
+
+extern "C" {
+# 150 "./../../dist/include/mozilla/Assertions.h"
+#define MOZ_CRASH() do { raise(SIGABRT); } while (0)
+
+
+
+
+
+
+extern __attribute__((weak)) __attribute__((visibility("default"))) void
+MOZ_Assert(const char* s, const char* file, int ln);
+
+static __attribute__((always_inline)) inline void
+MOZ_OutputAssertMessage(const char* s, const char *file, int ln)
+{
+
+
+
+
+  fprintf(stderr, "Assertion failure: %s, at %s:%d\n", s, file, ln);
+  fflush(stderr);
+
+}
+
+
+}
+# 250 "./../../dist/include/mozilla/Assertions.h"
+#define MOZ_ASSERT(...) do { } while(0)
+# 269 "./../../dist/include/mozilla/Assertions.h"
+#define MOZ_ASSERT_IF(cond,expr) do { } while (0)
+# 281 "./../../dist/include/mozilla/Assertions.h"
+#define MOZ_NOT_REACHED_MARKER() __builtin_unreachable()
+# 311 "./../../dist/include/mozilla/Assertions.h"
+#define MOZ_NOT_REACHED(reason) MOZ_NOT_REACHED_MARKER()
+# 349 "./../../dist/include/mozilla/Assertions.h"
+#define MOZ_ALWAYS_TRUE(expr) ((void)(expr))
+#define MOZ_ALWAYS_FALSE(expr) ((void)(expr))
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.cpp" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscope.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscope.h"
+#define jsscope_h___ 
+
+
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/new" 1 3
+# 37 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/new" 3
+#define _NEW 
+
+       
+# 40 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/new" 3
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/cstddef" 1 3
+# 41 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/cstddef" 3
+       
+# 42 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/cstddef" 3
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 1 3
+# 32 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_CXX_CONFIG_H 1
+
+
+#define __GLIBCXX__ 20120702
+
+
+
+
+#define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1
+
+
+#define _GLIBCXX_VISIBILITY_ATTR(V) __attribute__ ((__visibility__ (#V)))
+# 54 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_DEPRECATED 1
+
+
+
+
+
+#define _GLIBCXX_DEPRECATED_ATTR 
+# 95 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 0
+# 117 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_STD_D _GLIBCXX_STD
+#define _GLIBCXX_STD_P _GLIBCXX_STD
+#define _GLIBCXX_STD_PR _GLIBCXX_STD
+#define _GLIBCXX_STD std
+#define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X,Y) _GLIBCXX_BEGIN_NAMESPACE(X)
+#define _GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NAMESPACE
+#define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
+#define _GLIBCXX_END_NAMESPACE }
+# 240 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#undef _GLIBCXX_LONG_DOUBLE_COMPAT
+# 252 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_LDBL_NAMESPACE 
+#define _GLIBCXX_BEGIN_LDBL_NAMESPACE 
+#define _GLIBCXX_END_LDBL_NAMESPACE 
+
+
+
+
+
+#define _GLIBCXX_BEGIN_EXTERN_C extern "C" {
+#define _GLIBCXX_END_EXTERN_C }
+# 275 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/os_defines.h" 1 3
+# 31 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/os_defines.h" 3
+#define _GLIBCXX_OS_DEFINES 1
+
+
+
+
+
+#define __NO_CTYPE 1
+# 276 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 2 3
+
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/cpu_defines.h" 1 3
+# 31 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/cpu_defines.h" 3
+#define _GLIBCXX_CPU_DEFINES 1
+# 279 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 2 3
+
+
+
+
+#define _GLIBCXX_PSEUDO_VISIBILITY(V) 
+# 301 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_EXTERN_TEMPLATE 1
+
+
+
+
+
+
+#define _GLIBCXX_WEAK_DEFINITION 
+
+
+
+
+
+
+#define __glibcxx_assert(_Condition) 
+# 346 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_FAST_MATH 0
+
+
+
+
+
+
+#define __N(msgid) (msgid)
+
+
+#undef min
+#undef max
+
+
+#define _GLIBCXX_PURE __attribute__ ((__pure__))
+
+
+
+#define _GLIBCXX_CONST __attribute__ ((__const__))
+
+
+
+#define _GLIBCXX_NORETURN __attribute__ ((__noreturn__))
+
+
+
+
+#define _GLIBCXX_NOTHROW throw()
+# 384 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_ACOSF 1
+
+
+#define _GLIBCXX_HAVE_ACOSL 1
+
+
+#define _GLIBCXX_HAVE_ASINF 1
+
+
+#define _GLIBCXX_HAVE_ASINL 1
+
+
+#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
+
+
+#define _GLIBCXX_HAVE_ATAN2F 1
+
+
+#define _GLIBCXX_HAVE_ATAN2L 1
+
+
+#define _GLIBCXX_HAVE_ATANF 1
+
+
+#define _GLIBCXX_HAVE_ATANL 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_CEILF 1
+
+
+#define _GLIBCXX_HAVE_CEILL 1
+
+
+#define _GLIBCXX_HAVE_COMPLEX_H 1
+
+
+#define _GLIBCXX_HAVE_COSF 1
+
+
+#define _GLIBCXX_HAVE_COSHF 1
+
+
+#define _GLIBCXX_HAVE_COSHL 1
+
+
+#define _GLIBCXX_HAVE_COSL 1
+
+
+#define _GLIBCXX_HAVE_DLFCN_H 1
+
+
+#define _GLIBCXX_HAVE_EBADMSG 1
+
+
+#define _GLIBCXX_HAVE_ECANCELED 1
+
+
+#define _GLIBCXX_HAVE_EIDRM 1
+
+
+#define _GLIBCXX_HAVE_ENDIAN_H 1
+
+
+#define _GLIBCXX_HAVE_ENODATA 1
+
+
+#define _GLIBCXX_HAVE_ENOLINK 1
+
+
+#define _GLIBCXX_HAVE_ENOSR 1
+
+
+#define _GLIBCXX_HAVE_ENOSTR 1
+
+
+#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1
+
+
+#define _GLIBCXX_HAVE_ENOTSUP 1
+
+
+#define _GLIBCXX_HAVE_EOVERFLOW 1
+
+
+#define _GLIBCXX_HAVE_EOWNERDEAD 1
+
+
+#define _GLIBCXX_HAVE_EPROTO 1
+
+
+#define _GLIBCXX_HAVE_ETIME 1
+
+
+#define _GLIBCXX_HAVE_ETXTBSY 1
+
+
+#define _GLIBCXX_HAVE_EXECINFO_H 1
+
+
+#define _GLIBCXX_HAVE_EXPF 1
+
+
+#define _GLIBCXX_HAVE_EXPL 1
+
+
+#define _GLIBCXX_HAVE_FABSF 1
+
+
+#define _GLIBCXX_HAVE_FABSL 1
+
+
+#define _GLIBCXX_HAVE_FENV_H 1
+
+
+#define _GLIBCXX_HAVE_FINITE 1
+
+
+#define _GLIBCXX_HAVE_FINITEF 1
+
+
+#define _GLIBCXX_HAVE_FINITEL 1
+
+
+#define _GLIBCXX_HAVE_FLOAT_H 1
+
+
+#define _GLIBCXX_HAVE_FLOORF 1
+
+
+#define _GLIBCXX_HAVE_FLOORL 1
+
+
+#define _GLIBCXX_HAVE_FMODF 1
+
+
+#define _GLIBCXX_HAVE_FMODL 1
+# 531 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_FREXPF 1
+
+
+#define _GLIBCXX_HAVE_FREXPL 1
+
+
+#define _GLIBCXX_HAVE_GETIPINFO 1
+
+
+
+#define _GLIBCXX_HAVE_GTHR_DEFAULT 1
+
+
+#define _GLIBCXX_HAVE_HYPOT 1
+
+
+#define _GLIBCXX_HAVE_HYPOTF 1
+
+
+#define _GLIBCXX_HAVE_HYPOTL 1
+
+
+#define _GLIBCXX_HAVE_ICONV 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_INT64_T 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1
+
+
+#define _GLIBCXX_HAVE_INTTYPES_H 1
+
+
+#define _GLIBCXX_HAVE_ISINF 1
+
+
+#define _GLIBCXX_HAVE_ISINFF 1
+
+
+#define _GLIBCXX_HAVE_ISINFL 1
+
+
+#define _GLIBCXX_HAVE_ISNAN 1
+
+
+#define _GLIBCXX_HAVE_ISNANF 1
+
+
+#define _GLIBCXX_HAVE_ISNANL 1
+
+
+#define _GLIBCXX_HAVE_ISWBLANK 1
+
+
+#define _GLIBCXX_HAVE_LC_MESSAGES 1
+
+
+#define _GLIBCXX_HAVE_LDEXPF 1
+
+
+#define _GLIBCXX_HAVE_LDEXPL 1
+
+
+#define _GLIBCXX_HAVE_LIBINTL_H 1
+
+
+#define _GLIBCXX_HAVE_LIMIT_AS 1
+
+
+#define _GLIBCXX_HAVE_LIMIT_DATA 1
+
+
+#define _GLIBCXX_HAVE_LIMIT_FSIZE 1
+
+
+#define _GLIBCXX_HAVE_LIMIT_RSS 1
+
+
+#define _GLIBCXX_HAVE_LIMIT_VMEM 0
+
+
+#define _GLIBCXX_HAVE_LINUX_FUTEX 1
+
+
+#define _GLIBCXX_HAVE_LOCALE_H 1
+
+
+#define _GLIBCXX_HAVE_LOG10F 1
+
+
+#define _GLIBCXX_HAVE_LOG10L 1
+
+
+#define _GLIBCXX_HAVE_LOGF 1
+
+
+#define _GLIBCXX_HAVE_LOGL 1
+# 643 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_MBSTATE_T 1
+
+
+#define _GLIBCXX_HAVE_MEMORY_H 1
+
+
+#define _GLIBCXX_HAVE_MODF 1
+
+
+#define _GLIBCXX_HAVE_MODFF 1
+
+
+#define _GLIBCXX_HAVE_MODFL 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_POLL 1
+
+
+#define _GLIBCXX_HAVE_POWF 1
+
+
+#define _GLIBCXX_HAVE_POWL 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_SETENV 1
+
+
+#define _GLIBCXX_HAVE_SINCOS 1
+
+
+#define _GLIBCXX_HAVE_SINCOSF 1
+
+
+#define _GLIBCXX_HAVE_SINCOSL 1
+
+
+#define _GLIBCXX_HAVE_SINF 1
+
+
+#define _GLIBCXX_HAVE_SINHF 1
+
+
+#define _GLIBCXX_HAVE_SINHL 1
+
+
+#define _GLIBCXX_HAVE_SINL 1
+
+
+#define _GLIBCXX_HAVE_SQRTF 1
+
+
+#define _GLIBCXX_HAVE_SQRTL 1
+
+
+#define _GLIBCXX_HAVE_STDBOOL_H 1
+
+
+#define _GLIBCXX_HAVE_STDINT_H 1
+
+
+#define _GLIBCXX_HAVE_STDLIB_H 1
+
+
+#define _GLIBCXX_HAVE_STRERROR_L 1
+
+
+#define _GLIBCXX_HAVE_STRERROR_R 1
+
+
+#define _GLIBCXX_HAVE_STRINGS_H 1
+
+
+#define _GLIBCXX_HAVE_STRING_H 1
+
+
+#define _GLIBCXX_HAVE_STRTOF 1
+
+
+#define _GLIBCXX_HAVE_STRTOLD 1
+
+
+#define _GLIBCXX_HAVE_STRXFRM_L 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_SYS_IOCTL_H 1
+
+
+#define _GLIBCXX_HAVE_SYS_IPC_H 1
+# 748 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_SYS_PARAM_H 1
+
+
+#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1
+
+
+#define _GLIBCXX_HAVE_SYS_SEM_H 1
+
+
+#define _GLIBCXX_HAVE_SYS_STAT_H 1
+
+
+#define _GLIBCXX_HAVE_SYS_TIME_H 1
+
+
+#define _GLIBCXX_HAVE_SYS_TYPES_H 1
+
+
+#define _GLIBCXX_HAVE_SYS_UIO_H 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_S_ISREG 1
+
+
+#define _GLIBCXX_HAVE_TANF 1
+
+
+#define _GLIBCXX_HAVE_TANHF 1
+
+
+#define _GLIBCXX_HAVE_TANHL 1
+
+
+#define _GLIBCXX_HAVE_TANL 1
+
+
+#define _GLIBCXX_HAVE_TGMATH_H 1
+
+
+#define _GLIBCXX_HAVE_TLS 1
+
+
+#define _GLIBCXX_HAVE_UNISTD_H 1
+
+
+#define _GLIBCXX_HAVE_VFWSCANF 1
+
+
+#define _GLIBCXX_HAVE_VSWSCANF 1
+
+
+#define _GLIBCXX_HAVE_VWSCANF 1
+
+
+#define _GLIBCXX_HAVE_WCHAR_H 1
+
+
+#define _GLIBCXX_HAVE_WCSTOF 1
+
+
+#define _GLIBCXX_HAVE_WCTYPE_H 1
+
+
+#define _GLIBCXX_HAVE_WRITEV 1
+# 1003 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_ICONV_CONST 
+
+
+
+#define LT_OBJDIR ".libs/"
+
+
+
+
+
+#define _GLIBCXX_PACKAGE_BUGREPORT ""
+
+
+#define _GLIBCXX_PACKAGE_NAME "package-unused"
+
+
+#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused"
+
+
+#define _GLIBCXX_PACKAGE_TARNAME "libstdc++"
+
+
+#define _GLIBCXX_PACKAGE_URL ""
+
+
+#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused"
+# 1046 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define STDC_HEADERS 1
+
+
+
+
+
+#define _GLIBCXX_ATOMIC_BUILTINS_1 1
+
+
+
+#define _GLIBCXX_ATOMIC_BUILTINS_2 1
+
+
+#define _GLIBCXX_ATOMIC_BUILTINS_4 1
+# 1072 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_HAS_GTHREADS 1
+
+
+#define _GLIBCXX_HOSTED 1
+
+
+
+
+#define _GLIBCXX_PTRDIFF_T_IS_INT 1
+
+
+#define _GLIBCXX_RES_LIMITS 1
+
+
+#define _GLIBCXX_SIZE_T_IS_UINT 1
+
+
+
+
+
+#define _GLIBCXX_STDIO_MACROS 1
+
+
+#define _GLIBCXX_SYMVER 1
+
+
+
+
+
+#define _GLIBCXX_SYMVER_GNU 1
+
+
+
+
+
+
+#define _GLIBCXX_USE_C99 1
+
+
+
+
+#define _GLIBCXX_USE_C99_COMPLEX 1
+
+
+
+
+#define _GLIBCXX_USE_C99_COMPLEX_TR1 1
+
+
+
+#define _GLIBCXX_USE_C99_CTYPE_TR1 1
+
+
+
+#define _GLIBCXX_USE_C99_FENV_TR1 1
+
+
+
+#define _GLIBCXX_USE_C99_INTTYPES_TR1 1
+
+
+
+#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1
+
+
+
+#define _GLIBCXX_USE_C99_MATH 1
+
+
+
+#define _GLIBCXX_USE_C99_MATH_TR1 1
+
+
+
+#define _GLIBCXX_USE_C99_STDINT_TR1 1
+# 1159 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/armv7a-hardfloat-linux-gnueabi/bits/c++config.h" 3
+#define _GLIBCXX_USE_GETTIMEOFDAY 1
+
+
+#define _GLIBCXX_USE_LFS 1
+
+
+#define _GLIBCXX_USE_LONG_LONG 1
+
+
+
+
+
+#define _GLIBCXX_USE_NLS 1
+
+
+
+#define _GLIBCXX_USE_RANDOM_TR1 1
+
+
+
+
+
+#define _GLIBCXX_USE_WCHAR_T 1
+# 44 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/cstddef" 2 3
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 45 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/cstddef" 2 3
+
+
+#define _GLIBCXX_CSTDDEF 1
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+  using ::ptrdiff_t;
+  using ::size_t;
+
+}
+# 42 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/new" 2 3
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/exception" 1 3
+# 33 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/exception" 3
+#define __EXCEPTION__ 
+
+       
+# 36 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/exception" 3
+
+#pragma GCC visibility push(default)
+
+
+
+extern "C++" {
+
+namespace std
+{
+# 61 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/exception" 3
+  class exception
+  {
+  public:
+    exception() throw() { }
+    virtual ~exception() throw();
+
+
+
+    virtual const char* what() const throw();
+  };
+
+
+
+  class bad_exception : public exception
+  {
+  public:
+    bad_exception() throw() { }
+
+
+
+    virtual ~bad_exception() throw();
+
+
+    virtual const char* what() const throw();
+  };
+
+
+  typedef void (*terminate_handler) ();
+
+
+  typedef void (*unexpected_handler) ();
+
+
+  terminate_handler set_terminate(terminate_handler) throw();
+
+
+
+  void terminate() throw() __attribute__ ((__noreturn__));
+
+
+  unexpected_handler set_unexpected(unexpected_handler) throw();
+
+
+
+  void unexpected() __attribute__ ((__noreturn__));
+# 118 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/exception" 3
+  bool uncaught_exception() throw() __attribute__ ((__pure__));
+
+
+}
+
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+# 141 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/exception" 3
+  void __verbose_terminate_handler();
+
+}
+
+}
+
+#pragma GCC visibility pop
+# 43 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/new" 2 3
+
+#pragma GCC visibility push(default)
+
+extern "C++" {
+
+namespace std
+{
+
+
+
+
+
+
+  class bad_alloc : public exception
+  {
+  public:
+    bad_alloc() throw() { }
+
+
+
+    virtual ~bad_alloc() throw();
+
+
+    virtual const char* what() const throw();
+  };
+
+  struct nothrow_t { };
+
+  extern const nothrow_t nothrow;
+
+
+
+  typedef void (*new_handler)();
+
+
+
+  new_handler set_new_handler(new_handler) throw();
+}
+# 93 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/new" 3
+void* operator new(std::size_t) throw (std::bad_alloc);
+void* operator new[](std::size_t) throw (std::bad_alloc);
+void operator delete(void*) throw();
+void operator delete[](void*) throw();
+void* operator new(std::size_t, const std::nothrow_t&) throw();
+void* operator new[](std::size_t, const std::nothrow_t&) throw();
+void operator delete(void*, const std::nothrow_t&) throw();
+void operator delete[](void*, const std::nothrow_t&) throw();
+
+
+inline void* operator new(std::size_t, void* __p) throw() { return __p; }
+inline void* operator new[](std::size_t, void* __p) throw() { return __p; }
+
+
+inline void operator delete (void*, void*) throw() { }
+inline void operator delete[](void*, void*) throw() { }
+
+}
+
+#pragma GCC visibility pop
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscope.h" 2
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+#define jsobj_h___ 
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define jsapi_h___ 
+
+
+
+
+
+# 1 "./../../dist/include/mozilla/FloatingPoint.h" 1
+# 9 "./../../dist/include/mozilla/FloatingPoint.h"
+#define mozilla_FloatingPoint_h_ 
+# 40 "./../../dist/include/mozilla/FloatingPoint.h"
+typedef int moz_static_assert0[(sizeof(double) == sizeof(uint64_t)) ? 1 : -1];
+
+
+
+
+
+#define MOZ_DOUBLE_SIGN_BIT 0x8000000000000000ULL
+#define MOZ_DOUBLE_EXPONENT_BITS 0x7ff0000000000000ULL
+#define MOZ_DOUBLE_SIGNIFICAND_BITS 0x000fffffffffffffULL
+
+#define MOZ_DOUBLE_EXPONENT_BIAS 1023
+#define MOZ_DOUBLE_EXPONENT_SHIFT 52
+
+typedef int
+ moz_static_assert1
+# 53 "./../../dist/include/mozilla/FloatingPoint.h"
+ [((0x8000000000000000ULL & 0x7ff0000000000000ULL) == 0) ? 1 : -1]
+                                                           ;
+typedef int
+ moz_static_assert2
+# 55 "./../../dist/include/mozilla/FloatingPoint.h"
+ [((0x8000000000000000ULL & 0x000fffffffffffffULL) == 0) ? 1 : -1]
+                                                              ;
+typedef int
+ moz_static_assert3
+# 57 "./../../dist/include/mozilla/FloatingPoint.h"
+ [((0x7ff0000000000000ULL & 0x000fffffffffffffULL) == 0) ? 1 : -1]
+                                                                 ;
+
+typedef int
+
+ moz_static_assert4
+# 60 "./../../dist/include/mozilla/FloatingPoint.h"
+ [((0x8000000000000000ULL | 0x7ff0000000000000ULL | 0x000fffffffffffffULL) == ~(uint64_t)0) ? 1 : -1]
+
+                                           ;
+
+
+extern "C" {
+
+
+
+
+
+
+union MozDoublePun {
+
+
+
+
+
+
+    uint64_t u;
+    double d;
+};
+
+
+static __attribute__((always_inline)) inline int
+MOZ_DOUBLE_IS_NaN(double d)
+{
+  union MozDoublePun pun;
+  pun.d = d;
+
+
+
+
+
+  return (pun.u & 0x7ff0000000000000ULL) == 0x7ff0000000000000ULL &&
+         (pun.u & 0x000fffffffffffffULL) != 0;
+}
+
+
+static __attribute__((always_inline)) inline int
+MOZ_DOUBLE_IS_INFINITE(double d)
+{
+  union MozDoublePun pun;
+  pun.d = d;
+
+
+  return (pun.u & ~0x8000000000000000ULL) == 0x7ff0000000000000ULL;
+}
+
+
+static __attribute__((always_inline)) inline int
+MOZ_DOUBLE_IS_FINITE(double d)
+{
+  union MozDoublePun pun;
+  pun.d = d;
+
+
+
+
+
+  return (pun.u & 0x7ff0000000000000ULL) != 0x7ff0000000000000ULL;
+}
+
+
+
+
+
+static __attribute__((always_inline)) inline int
+MOZ_DOUBLE_IS_NEGATIVE(double d)
+{
+  union MozDoublePun pun;
+  pun.d = d;
+
+  do { } while(0);
+
+
+  return (pun.u & 0x8000000000000000ULL) != 0;
+}
+
+
+static __attribute__((always_inline)) inline int
+MOZ_DOUBLE_IS_NEGATIVE_ZERO(double d)
+{
+  union MozDoublePun pun;
+  pun.d = d;
+
+
+  return pun.u == 0x8000000000000000ULL;
+}
+
+
+static __attribute__((always_inline)) inline int_fast16_t
+MOZ_DOUBLE_EXPONENT(double d)
+{
+  union MozDoublePun pun;
+  pun.d = d;
+
+
+
+
+
+  return (int_fast16_t)((pun.u & 0x7ff0000000000000ULL) >> 52) -
+                        1023;
+}
+
+
+static __attribute__((always_inline)) inline double
+MOZ_DOUBLE_POSITIVE_INFINITY()
+{
+  union MozDoublePun pun;
+
+
+
+
+
+  pun.u = 0x7ff0000000000000ULL;
+  return pun.d;
+}
+
+
+static __attribute__((always_inline)) inline double
+MOZ_DOUBLE_NEGATIVE_INFINITY()
+{
+  union MozDoublePun pun;
+
+
+
+
+
+  pun.u = 0x8000000000000000ULL | 0x7ff0000000000000ULL;
+  return pun.d;
+}
+
+
+static __attribute__((always_inline)) inline double
+MOZ_DOUBLE_SPECIFIC_NaN(int signbit, uint64_t significand)
+{
+  union MozDoublePun pun;
+
+  do { } while(0);
+  do { } while(0);
+  do { } while(0);
+
+  pun.u = (signbit ? 0x8000000000000000ULL : 0) |
+          0x7ff0000000000000ULL |
+          significand;
+  do { } while(0);
+  return pun.d;
+}
+
+
+
+
+
+static __attribute__((always_inline)) inline double
+MOZ_DOUBLE_NaN()
+{
+  return MOZ_DOUBLE_SPECIFIC_NaN(0, 0xfffffffffffffULL);
+}
+
+
+static __attribute__((always_inline)) inline double
+MOZ_DOUBLE_MIN_VALUE()
+{
+  union MozDoublePun pun;
+  pun.u = 1;
+  return pun.d;
+}
+
+
+static __attribute__((always_inline)) inline uint32_t
+MOZ_HASH_DOUBLE(double d)
+{
+  union MozDoublePun pun;
+  pun.d = d;
+
+  return ((uint32_t)(pun.u >> 32)) ^ ((uint32_t)(pun.u));
+}
+
+static __attribute__((always_inline)) inline int
+MOZ_DOUBLE_IS_INT32(double d, int32_t* i)
+{
+
+
+
+
+
+  return !MOZ_DOUBLE_IS_NEGATIVE_ZERO(d) && d == (*i = (int32_t)d);
+}
+
+
+}
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h" 2
+
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h" 2
+
+# 1 "./js-config.h" 1
+# 10 "./js-config.h"
+#define js_config_h___ 
+
+
+
+
+
+
+#define JS_THREADSAFE 1
+
+
+#define JS_HAS_CTYPES 1
+
+
+
+
+
+
+
+#define JS_HAVE_ENDIAN_H 1
+# 60 "./js-config.h"
+#define JS_BYTES_PER_WORD 4
+
+
+
+#define JS_METHODJIT 1
+
+
+#define JS_HAS_XML_SUPPORT 1
+# 21 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspubtd.h" 1
+
+
+
+
+
+
+
+#define jspubtd_h___ 
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h" 1
+# 21 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h"
+#define jstypes_h___ 
+
+
+# 1 "./../../dist/include/mozilla/Util.h" 1
+# 14 "./../../dist/include/mozilla/Util.h"
+#define mozilla_Util_h_ 
+
+
+
+
+
+
+
+namespace mozilla {
+# 41 "./../../dist/include/mozilla/Util.h"
+template <typename T>
+struct DebugOnly
+{
+# 69 "./../../dist/include/mozilla/Util.h"
+    DebugOnly() {}
+    DebugOnly(const T&) {}
+    DebugOnly(const DebugOnly&) {}
+    DebugOnly& operator=(const T&) { return *this; }
+    void operator++(int) {}
+    void operator--(int) {}
+
+
+
+
+
+
+
+    ~DebugOnly() {}
+};
+
+
+
+
+
+template<class T>
+struct AlignmentFinder
+{
+private:
+  struct Aligner
+  {
+    char c;
+    T t;
+  };
+
+public:
+  static const int alignment = sizeof(Aligner) - sizeof(T);
+};
+
+#define MOZ_ALIGNOF(T) mozilla::AlignmentFinder<T>::alignment
+# 116 "./../../dist/include/mozilla/Util.h"
+#define MOZ_ALIGNED_DECL(_type,_align) _type __attribute__((aligned(_align)))
+# 131 "./../../dist/include/mozilla/Util.h"
+template<size_t align>
+struct AlignedElem;
+
+
+
+
+
+
+template<>
+struct AlignedElem<1>
+{
+  uint8_t elem __attribute__((aligned(1)));
+};
+
+template<>
+struct AlignedElem<2>
+{
+  uint8_t elem __attribute__((aligned(2)));
+};
+
+template<>
+struct AlignedElem<4>
+{
+  uint8_t elem __attribute__((aligned(4)));
+};
+
+template<>
+struct AlignedElem<8>
+{
+  uint8_t elem __attribute__((aligned(8)));
+};
+
+template<>
+struct AlignedElem<16>
+{
+  uint8_t elem __attribute__((aligned(16)));
+};
+# 179 "./../../dist/include/mozilla/Util.h"
+template <size_t nbytes>
+struct AlignedStorage
+{
+    union U {
+        char bytes[nbytes];
+        uint64_t _;
+    } u;
+
+    const void *addr() const { return u.bytes; }
+    void *addr() { return u.bytes; }
+};
+
+template <class T>
+struct AlignedStorage2
+{
+    union U {
+        char bytes[sizeof(T)];
+        uint64_t _;
+    } u;
+
+    const T *addr() const { return (const T *)u.bytes; }
+    T *addr() { return (T *)(void *)u.bytes; }
+};
+# 214 "./../../dist/include/mozilla/Util.h"
+template <class T>
+class Maybe
+{
+    AlignedStorage2<T> storage;
+    bool constructed;
+
+    T &asT() { return *storage.addr(); }
+
+    explicit Maybe(const Maybe &other);
+    const Maybe &operator=(const Maybe &other);
+
+  public:
+    Maybe() { constructed = false; }
+    ~Maybe() { if (constructed) asT().~T(); }
+
+    bool empty() const { return !constructed; }
+
+    void construct() {
+        do { } while(0);
+        new(storage.addr()) T();
+        constructed = true;
+    }
+
+    template <class T1>
+    void construct(const T1 &t1) {
+        do { } while(0);
+        new(storage.addr()) T(t1);
+        constructed = true;
+    }
+
+    template <class T1, class T2>
+    void construct(const T1 &t1, const T2 &t2) {
+        do { } while(0);
+        new(storage.addr()) T(t1, t2);
+        constructed = true;
+    }
+
+    template <class T1, class T2, class T3>
+    void construct(const T1 &t1, const T2 &t2, const T3 &t3) {
+        do { } while(0);
+        new(storage.addr()) T(t1, t2, t3);
+        constructed = true;
+    }
+
+    template <class T1, class T2, class T3, class T4>
+    void construct(const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4) {
+        do { } while(0);
+        new(storage.addr()) T(t1, t2, t3, t4);
+        constructed = true;
+    }
+
+    T *addr() {
+        do { } while(0);
+        return &asT();
+    }
+
+    T &ref() {
+        do { } while(0);
+        return asT();
+    }
+
+    const T &ref() const {
+        do { } while(0);
+        return const_cast<Maybe *>(this)->asT();
+    }
+
+    void destroy() {
+        ref().~T();
+        constructed = false;
+    }
+
+    void destroyIfConstructed() {
+        if (!empty())
+            destroy();
+    }
+};
+
+
+
+
+
+
+
+template <class T>
+__attribute__((always_inline)) inline size_t
+PointerRangeSize(T* begin, T* end)
+{
+    do { } while(0);
+    return (size_t(end) - size_t(begin)) / sizeof(T);
+}
+
+
+
+
+
+
+
+template<typename T, size_t N>
+size_t
+ArrayLength(T (&arr)[N])
+{
+    return N;
+}
+
+
+
+
+
+
+template<typename T, size_t N>
+T*
+ArrayEnd(T (&arr)[N])
+{
+    return arr + ArrayLength(arr);
+}
+
+}
+# 25 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h" 2
+# 49 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h"
+#define JS_EXTERN_API(type) extern MOZ_EXPORT_API(type)
+#define JS_EXPORT_API(type) MOZ_EXPORT_API(type)
+#define JS_EXPORT_DATA(type) MOZ_EXPORT_DATA(type)
+#define JS_IMPORT_API(type) MOZ_IMPORT_API(type)
+#define JS_IMPORT_DATA(type) MOZ_IMPORT_DATA(type)
+# 65 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h"
+#define JS_PUBLIC_API(t) MOZ_EXPORT_API(t)
+#define JS_PUBLIC_DATA(t) MOZ_EXPORT_DATA(t)
+
+
+
+
+
+#define JS_FRIEND_API(t) JS_PUBLIC_API(t)
+#define JS_FRIEND_DATA(t) JS_PUBLIC_DATA(t)
+
+
+
+
+
+
+
+#define JS_FASTCALL 
+#define JS_NO_FASTCALL 
+
+
+
+#define JS_INLINE MOZ_INLINE
+
+
+
+#define JS_ALWAYS_INLINE MOZ_ALWAYS_INLINE
+
+
+
+#define JS_NEVER_INLINE MOZ_NEVER_INLINE
+
+
+
+
+#define JS_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
+# 112 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h"
+#define JS_BEGIN_MACRO do {
+
+
+
+
+
+
+#define JS_END_MACRO } while (0)
+# 128 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h"
+#define JS_BEGIN_EXTERN_C MOZ_BEGIN_EXTERN_C
+#define JS_END_EXTERN_C MOZ_END_EXTERN_C
+
+
+
+
+
+
+
+#define JS_BIT(n) ((uint32_t)1 << (n))
+#define JS_BITMASK(n) (JS_BIT(n) - 1)
+# 148 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h"
+#define JS_HOWMANY(x,y) (((x)+(y)-1)/(y))
+#define JS_ROUNDUP(x,y) (JS_HOWMANY(x,y)*(y))
+#define JS_MIN(x,y) ((x)<(y)?(x):(y))
+#define JS_MAX(x,y) ((x)>(y)?(x):(y))
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscpucfg.h" 1
+
+
+
+
+
+
+
+#define js_cpucfg___ 
+
+#define JS_HAVE_LONG_LONG 
+# 65 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscpucfg.h"
+#define IS_LITTLE_ENDIAN 1
+#undef IS_BIG_ENDIAN
+# 130 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscpucfg.h"
+#define JS_STACK_GROWTH_DIRECTION (-1)
+# 154 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h" 2
+# 186 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h"
+extern "C" {
+# 196 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h"
+typedef int JSBool;
+#define JS_TRUE (int)1
+#define JS_FALSE (int)0
+# 218 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h"
+#define JS_LIKELY(x) (__builtin_expect((x), 1))
+#define JS_UNLIKELY(x) (__builtin_expect((x), 0))
+# 245 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h"
+#define JS_ARRAY_LENGTH(array) (sizeof (array) / sizeof (array)[0])
+#define JS_ARRAY_END(array) ((array) + JS_ARRAY_LENGTH(array))
+
+#define JS_BITS_PER_BYTE 8
+#define JS_BITS_PER_BYTE_LOG2 3
+
+#define JS_BITS_PER_WORD (JS_BITS_PER_BYTE * JS_BYTES_PER_WORD)
+#define JS_BITS_PER_DOUBLE (JS_BITS_PER_BYTE * JS_BYTES_PER_DOUBLE)
+# 271 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h"
+#define JS_FUNC_TO_DATA_PTR(type,fun) (__extension__ (type) (size_t) (fun))
+#define JS_DATA_TO_FUNC_PTR(type,ptr) (__extension__ (type) (size_t) (ptr))
+
+
+
+
+
+
+
+#define JS_EXTENSION __extension__
+#define JS_EXTENSION_(s) __extension__ ({ s; })
+
+
+
+
+
+}
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspubtd.h" 2
+
+
+
+
+
+
+namespace JS { class Value; }
+# 53 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspubtd.h"
+typedef ptrdiff_t jsid;
+#define JSID_BITS(id) (id)
+
+
+
+
+
+
+extern "C" {
+
+
+
+
+typedef uint16_t jschar;
+
+
+
+
+
+
+
+typedef enum JSVersion {
+    JSVERSION_1_0 = 100,
+    JSVERSION_1_1 = 110,
+    JSVERSION_1_2 = 120,
+    JSVERSION_1_3 = 130,
+    JSVERSION_1_4 = 140,
+    JSVERSION_ECMA_3 = 148,
+    JSVERSION_1_5 = 150,
+    JSVERSION_1_6 = 160,
+    JSVERSION_1_7 = 170,
+    JSVERSION_1_8 = 180,
+    JSVERSION_ECMA_5 = 185,
+    JSVERSION_DEFAULT = 0,
+    JSVERSION_UNKNOWN = -1,
+    JSVERSION_LATEST = JSVERSION_ECMA_5
+} JSVersion;
+
+#define JSVERSION_IS_ECMA(version) ((version) == JSVERSION_DEFAULT || (version) >= JSVERSION_1_3)
+
+
+
+typedef enum JSType {
+    JSTYPE_VOID,
+    JSTYPE_OBJECT,
+    JSTYPE_FUNCTION,
+    JSTYPE_STRING,
+    JSTYPE_NUMBER,
+    JSTYPE_BOOLEAN,
+    JSTYPE_NULL,
+    JSTYPE_XML,
+    JSTYPE_LIMIT
+} JSType;
+
+
+typedef enum JSProtoKey {
+#define JS_PROTO(name,code,init) JSProto_ ##name = code,
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsproto.tbl" 1
+
+
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h" 1
+# 11 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_VERSION 185
+# 42 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_VERSION_ECMA_3 148
+#define JS_VERSION_ECMA_3_TEST 149
+# 124 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_HAS_STR_HTML_HELPERS 1
+#define JS_HAS_OBJ_PROTO_PROP 1
+#define JS_HAS_OBJ_WATCHPOINT 1
+#define JS_HAS_TOSOURCE 1
+#define JS_HAS_CATCH_GUARD 1
+#define JS_HAS_UNEVAL 1
+#define JS_HAS_CONST 1
+#define JS_HAS_FUN_EXPR_STMT 1
+#define JS_HAS_NO_SUCH_METHOD 1
+#define JS_HAS_GENERATORS 1
+#define JS_HAS_BLOCK_SCOPE 1
+#define JS_HAS_DESTRUCTURING 2
+#define JS_HAS_GENERATOR_EXPRS 1
+#define JS_HAS_EXPR_CLOSURES 1
+# 146 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_HAS_NEW_GLOBAL_OBJECT 1
+
+
+#define JS_HAS_MAKE_SYSTEM_OBJECT 1
+
+
+#define JS_HAS_DESTRUCTURING_SHORTHAND (JS_HAS_DESTRUCTURING == 2)
+
+
+
+
+
+#define OLD_GETTER_SETTER_METHODS 1
+
+
+#define USE_NEW_OBJECT_REPRESENTATION 0
+
+
+
+
+#define NEW_OBJECT_REPRESENTATION_ONLY() MOZ_NOT_REACHED("don't call this!  to be used in the new object representation")
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsproto.tbl" 2
+
+
+#define XML_INIT js_InitXMLClass
+#define NAMESPACE_INIT js_InitNamespaceClass
+#define QNAME_INIT js_InitQNameClass
+#define XMLFILTER_INIT js_InitXMLFilterClass
+# 27 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsproto.tbl"
+JSProto_Null = 0,
+JSProto_Object = 1,
+JSProto_Function = 2,
+JSProto_Array = 3,
+JSProto_Boolean = 4,
+JSProto_JSON = 5,
+JSProto_Date = 6,
+JSProto_Math = 7,
+JSProto_Number = 8,
+JSProto_String = 9,
+JSProto_RegExp = 10,
+JSProto_XML = 11,
+JSProto_Namespace = 12,
+JSProto_QName = 13,
+JSProto_Error = 14,
+JSProto_InternalError = 15,
+JSProto_EvalError = 16,
+JSProto_RangeError = 17,
+JSProto_ReferenceError = 18,
+JSProto_SyntaxError = 19,
+JSProto_TypeError = 20,
+JSProto_URIError = 21,
+JSProto_Iterator = 22,
+JSProto_StopIteration = 23,
+JSProto_ArrayBuffer = 24,
+JSProto_Int8Array = 25,
+JSProto_Uint8Array = 26,
+JSProto_Int16Array = 27,
+JSProto_Uint16Array = 28,
+JSProto_Int32Array = 29,
+JSProto_Uint32Array = 30,
+JSProto_Float32Array = 31,
+JSProto_Float64Array = 32,
+JSProto_Uint8ClampedArray = 33,
+JSProto_Proxy = 34,
+JSProto_AnyName = 35,
+JSProto_WeakMap = 36,
+JSProto_Map = 37,
+JSProto_Set = 38,
+JSProto_DataView = 39,
+
+#undef XML_INIT
+#undef NAMESPACE_INIT
+#undef QNAME_INIT
+# 111 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspubtd.h" 2
+#undef JS_PROTO
+    JSProto_LIMIT
+} JSProtoKey;
+
+
+typedef enum JSAccessMode {
+    JSACC_PROTO = 0,
+    JSACC_PARENT = 1,
+
+
+
+
+
+
+    JSACC_WATCH = 3,
+    JSACC_READ = 4,
+    JSACC_WRITE = 8,
+    JSACC_LIMIT
+} JSAccessMode;
+
+#define JSACC_TYPEMASK (JSACC_WRITE - 1)
+
+
+
+
+
+typedef enum JSIterateOp {
+
+    JSENUMERATE_INIT,
+
+
+    JSENUMERATE_INIT_ALL,
+
+
+    JSENUMERATE_NEXT,
+
+
+    JSENUMERATE_DESTROY
+} JSIterateOp;
+
+
+typedef enum {
+    JSTRACE_OBJECT,
+    JSTRACE_STRING,
+    JSTRACE_SCRIPT,
+
+
+
+
+
+
+    JSTRACE_XML,
+
+    JSTRACE_SHAPE,
+    JSTRACE_BASE_SHAPE,
+    JSTRACE_TYPE_OBJECT,
+    JSTRACE_LAST = JSTRACE_TYPE_OBJECT
+} JSGCTraceKind;
+
+
+typedef struct JSClass JSClass;
+typedef struct JSCompartment JSCompartment;
+typedef struct JSConstDoubleSpec JSConstDoubleSpec;
+typedef struct JSContext JSContext;
+typedef struct JSCrossCompartmentCall JSCrossCompartmentCall;
+typedef struct JSErrorReport JSErrorReport;
+typedef struct JSExceptionState JSExceptionState;
+typedef struct JSFunction JSFunction;
+typedef struct JSFunctionSpec JSFunctionSpec;
+typedef struct JSIdArray JSIdArray;
+typedef struct JSLocaleCallbacks JSLocaleCallbacks;
+typedef struct JSObject JSObject;
+typedef struct JSObjectMap JSObjectMap;
+typedef struct JSPrincipals JSPrincipals;
+typedef struct JSPropertyDescriptor JSPropertyDescriptor;
+typedef struct JSPropertyName JSPropertyName;
+typedef struct JSPropertySpec JSPropertySpec;
+typedef struct JSRuntime JSRuntime;
+typedef struct JSSecurityCallbacks JSSecurityCallbacks;
+typedef struct JSStackFrame JSStackFrame;
+typedef struct JSScript JSScript;
+typedef struct JSStructuredCloneCallbacks JSStructuredCloneCallbacks;
+typedef struct JSStructuredCloneReader JSStructuredCloneReader;
+typedef struct JSStructuredCloneWriter JSStructuredCloneWriter;
+typedef struct JSTracer JSTracer;
+
+
+class JSFlatString;
+class JSString;
+
+
+
+
+
+
+typedef struct PRCallOnceType JSCallOnceType;
+
+
+
+typedef JSBool (*JSInitCallback)(void);
+
+}
+
+
+
+namespace JS {
+
+template <typename T>
+class Rooted;
+
+class SkipRoot;
+
+enum ThingRootKind
+{
+    THING_ROOT_OBJECT,
+    THING_ROOT_SHAPE,
+    THING_ROOT_BASE_SHAPE,
+    THING_ROOT_TYPE_OBJECT,
+    THING_ROOT_STRING,
+    THING_ROOT_SCRIPT,
+    THING_ROOT_XML,
+    THING_ROOT_ID,
+    THING_ROOT_VALUE,
+    THING_ROOT_LIMIT
+};
+
+struct ContextFriendFields {
+    JSRuntime *const runtime;
+
+    ContextFriendFields(JSRuntime *rt)
+      : runtime(rt) { }
+
+    static const ContextFriendFields *get(const JSContext *cx) {
+        return reinterpret_cast<const ContextFriendFields *>(cx);
+    }
+
+    static ContextFriendFields *get(JSContext *cx) {
+        return reinterpret_cast<ContextFriendFields *>(cx);
+    }
+# 272 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspubtd.h"
+};
+
+}
+# 22 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsutil.h" 1
+# 12 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsutil.h"
+#define jsutil_h___ 
+
+
+
+# 1 "./../../dist/include/js/Utility.h" 1
+# 9 "./../../dist/include/js/Utility.h"
+#define js_utility_h__ 
+
+
+
+
+# 1 "/usr/include/string.h" 1 3 4
+# 25 "/usr/include/string.h" 3 4
+#define _STRING_H 1
+
+
+
+extern "C" {
+
+
+#define __need_size_t 
+#define __need_NULL 
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 160 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 233 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 342 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 395 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 406 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 35 "/usr/include/string.h" 2 3 4
+
+
+
+#define __CORRECT_ISO_CPP_STRING_H_PROTO 
+
+
+
+
+
+extern void *memcpy (void *__restrict __dest,
+       __const void *__restrict __src, size_t __n)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void *memmove (void *__dest, __const void *__src, size_t __n)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
+        int __c, size_t __n)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern "C++"
+{
+extern void *memchr (void *__s, int __c, size_t __n)
+      throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern __const void *memchr (__const void *__s, int __c, size_t __n)
+      throw () __asm ("memchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
+memchr (void *__s, int __c, size_t __n) throw ()
+{
+  return __builtin_memchr (__s, __c, __n);
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const void *
+memchr (__const void *__s, int __c, size_t __n) throw ()
+{
+  return __builtin_memchr (__s, __c, __n);
+}
+
+}
+
+
+
+
+
+
+
+
+
+
+extern "C++" void *rawmemchr (void *__s, int __c)
+     throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern "C++" __const void *rawmemchr (__const void *__s, int __c)
+     throw () __asm ("rawmemchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+extern "C++" void *memrchr (void *__s, int __c, size_t __n)
+      throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern "C++" __const void *memrchr (__const void *__s, int __c, size_t __n)
+      throw () __asm ("memrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+
+
+extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strncpy (char *__restrict __dest,
+        __const char *__restrict __src, size_t __n)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
+        size_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strcmp (__const char *__s1, __const char *__s2)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strcoll (__const char *__s1, __const char *__s2)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern size_t strxfrm (char *__restrict __dest,
+         __const char *__restrict __src, size_t __n)
+     throw () __attribute__ ((__nonnull__ (2)));
+
+# 165 "/usr/include/string.h" 3 4
+extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+
+extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
+    __locale_t __l) throw () __attribute__ ((__nonnull__ (2, 4)));
+
+
+
+
+
+extern char *strdup (__const char *__s)
+     throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern char *strndup (__const char *__string, size_t __n)
+     throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+#define strdupa(s) (__extension__ ({ __const char *__old = (s); size_t __len = strlen (__old) + 1; char *__new = (char *) __builtin_alloca (__len); (char *) memcpy (__new, __old, __len); }))
+# 199 "/usr/include/string.h" 3 4
+#define strndupa(s,n) (__extension__ ({ __const char *__old = (s); size_t __len = strnlen (__old, (n)); char *__new = (char *) __builtin_alloca (__len + 1); __new[__len] = '\0'; (char *) memcpy (__new, __old, __len); }))
+# 210 "/usr/include/string.h" 3 4
+
+
+
+extern "C++"
+{
+extern char *strchr (char *__s, int __c)
+     throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern __const char *strchr (__const char *__s, int __c)
+     throw () __asm ("strchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+strchr (char *__s, int __c) throw ()
+{
+  return __builtin_strchr (__s, __c);
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const char *
+strchr (__const char *__s, int __c) throw ()
+{
+  return __builtin_strchr (__s, __c);
+}
+
+}
+
+
+
+
+
+
+extern "C++"
+{
+extern char *strrchr (char *__s, int __c)
+     throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern __const char *strrchr (__const char *__s, int __c)
+     throw () __asm ("strrchr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+strrchr (char *__s, int __c) throw ()
+{
+  return __builtin_strrchr (__s, __c);
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const char *
+strrchr (__const char *__s, int __c) throw ()
+{
+  return __builtin_strrchr (__s, __c);
+}
+
+}
+
+
+
+
+
+
+
+
+
+
+extern "C++" char *strchrnul (char *__s, int __c)
+     throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern "C++" __const char *strchrnul (__const char *__s, int __c)
+     throw () __asm ("strchrnul") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+
+
+extern size_t strcspn (__const char *__s, __const char *__reject)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern size_t strspn (__const char *__s, __const char *__accept)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern "C++"
+{
+extern char *strpbrk (char *__s, __const char *__accept)
+     throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern __const char *strpbrk (__const char *__s, __const char *__accept)
+     throw () __asm ("strpbrk") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+strpbrk (char *__s, __const char *__accept) throw ()
+{
+  return __builtin_strpbrk (__s, __accept);
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const char *
+strpbrk (__const char *__s, __const char *__accept) throw ()
+{
+  return __builtin_strpbrk (__s, __accept);
+}
+
+}
+
+
+
+
+
+
+extern "C++"
+{
+extern char *strstr (char *__haystack, __const char *__needle)
+     throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern __const char *strstr (__const char *__haystack,
+        __const char *__needle)
+     throw () __asm ("strstr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+strstr (char *__haystack, __const char *__needle) throw ()
+{
+  return __builtin_strstr (__haystack, __needle);
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const char *
+strstr (__const char *__haystack, __const char *__needle) throw ()
+{
+  return __builtin_strstr (__haystack, __needle);
+}
+
+}
+
+
+
+
+
+
+
+extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
+     throw () __attribute__ ((__nonnull__ (2)));
+
+
+
+
+extern char *__strtok_r (char *__restrict __s,
+    __const char *__restrict __delim,
+    char **__restrict __save_ptr)
+     throw () __attribute__ ((__nonnull__ (2, 3)));
+
+extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
+         char **__restrict __save_ptr)
+     throw () __attribute__ ((__nonnull__ (2, 3)));
+
+
+
+
+
+extern "C++" char *strcasestr (char *__haystack, __const char *__needle)
+     throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern "C++" __const char *strcasestr (__const char *__haystack,
+           __const char *__needle)
+     throw () __asm ("strcasestr") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 382 "/usr/include/string.h" 3 4
+extern void *memmem (__const void *__haystack, size_t __haystacklen,
+       __const void *__needle, size_t __needlelen)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
+
+
+
+extern void *__mempcpy (void *__restrict __dest,
+   __const void *__restrict __src, size_t __n)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+extern void *mempcpy (void *__restrict __dest,
+        __const void *__restrict __src, size_t __n)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern size_t strlen (__const char *__s)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern size_t strnlen (__const char *__string, size_t __maxlen)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern char *strerror (int __errnum) throw ();
+
+# 438 "/usr/include/string.h" 3 4
+extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
+     throw () __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+extern char *strerror_l (int __errnum, __locale_t __l) throw ();
+
+
+
+
+
+extern void __bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+extern void bcopy (__const void *__src, void *__dest, size_t __n)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern "C++"
+{
+extern char *index (char *__s, int __c)
+     throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern __const char *index (__const char *__s, int __c)
+     throw () __asm ("index") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+index (char *__s, int __c) throw ()
+{
+  return __builtin_index (__s, __c);
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const char *
+index (__const char *__s, int __c) throw ()
+{
+  return __builtin_index (__s, __c);
+}
+
+}
+
+
+
+
+
+
+
+extern "C++"
+{
+extern char *rindex (char *__s, int __c)
+     throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern __const char *rindex (__const char *__s, int __c)
+     throw () __asm ("rindex") __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+rindex (char *__s, int __c) throw ()
+{
+  return __builtin_rindex (__s, __c);
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __const char *
+rindex (__const char *__s, int __c) throw ()
+{
+  return __builtin_rindex (__s, __c);
+}
+
+}
+
+
+
+
+
+
+
+extern int ffs (int __i) throw () __attribute__ ((__const__));
+
+
+
+
+extern int ffsl (long int __l) throw () __attribute__ ((__const__));
+
+__extension__ extern int ffsll (long long int __ll)
+     throw () __attribute__ ((__const__));
+
+
+
+
+extern int strcasecmp (__const char *__s1, __const char *__s2)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern int strcasecmp_l (__const char *__s1, __const char *__s2,
+    __locale_t __loc)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+
+extern int strncasecmp_l (__const char *__s1, __const char *__s2,
+     size_t __n, __locale_t __loc)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
+
+
+
+
+
+extern char *strsep (char **__restrict __stringp,
+       __const char *__restrict __delim)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+extern char *strsignal (int __sig) throw ();
+
+
+extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern char *__stpncpy (char *__restrict __dest,
+   __const char *__restrict __src, size_t __n)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpncpy (char *__restrict __dest,
+        __const char *__restrict __src, size_t __n)
+     throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+extern int strverscmp (__const char *__s1, __const char *__s2)
+     throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *strfry (char *__string) throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern void *memfrob (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+extern "C++" char *basename (char *__filename)
+     throw () __asm ("basename") __attribute__ ((__nonnull__ (1)));
+extern "C++" __const char *basename (__const char *__filename)
+     throw () __asm ("basename") __attribute__ ((__nonnull__ (1)));
+# 642 "/usr/include/string.h" 3 4
+# 1 "/usr/include/bits/string3.h" 1 3 4
+# 23 "/usr/include/bits/string3.h" 3 4
+extern void __warn_memset_zero_len (void) __attribute__((__warning__ ("memset used with constant zero length parameter; this could be due to transposed parameters")))
+                                                                                                   ;
+# 48 "/usr/include/bits/string3.h" 3 4
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
+ memcpy (void *__restrict __dest, __const void *__restrict __src, size_t __len) throw ()
+
+{
+  return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
+ memmove (void *__dest, __const void *__src, size_t __len) throw ()
+{
+  return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
+ mempcpy (void *__restrict __dest, __const void *__restrict __src, size_t __len) throw ()
+
+{
+  return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+# 76 "/usr/include/bits/string3.h" 3 4
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
+ memset (void *__dest, int __ch, size_t __len) throw ()
+{
+  if (__builtin_constant_p (__len) && __len == 0
+      && (!__builtin_constant_p (__ch) || __ch != 0))
+    {
+      __warn_memset_zero_len ();
+      return __dest;
+    }
+  return __builtin___memset_chk (__dest, __ch, __len, __builtin_object_size (__dest, 0));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void
+ bcopy (__const void *__src, void *__dest, size_t __len) throw ()
+{
+  (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void
+ bzero (void *__dest, size_t __len) throw ()
+{
+  (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+ strcpy (char *__restrict __dest, __const char *__restrict __src) throw ()
+{
+  return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+ stpcpy (char *__restrict __dest, __const char *__restrict __src) throw ()
+{
+  return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
+}
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+ strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __len) throw ()
+
+{
+  return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
+}
+
+
+extern char *__stpncpy_chk (char *__dest, __const char *__src, size_t __n,
+       size_t __destlen) throw ();
+extern char *__stpncpy_alias (char *__dest, __const char *__src, size_t __n) throw () __asm__ ("" "stpncpy")
+
+                                 ;
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+ stpncpy (char *__dest, __const char *__src, size_t __n) throw ()
+{
+  if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1
+      && (!__builtin_constant_p (__n) || __n <= __builtin_object_size (__dest, 2 > 1)))
+    return __stpncpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1));
+  return __stpncpy_alias (__dest, __src, __n);
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+ strcat (char *__restrict __dest, __const char *__restrict __src) throw ()
+{
+  return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+ strncat (char *__restrict __dest, __const char *__restrict __src, size_t __len) throw ()
+
+{
+  return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
+}
+# 643 "/usr/include/string.h" 2 3 4
+
+
+
+}
+# 15 "./../../dist/include/js/Utility.h" 2
+
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypes.h" 1
+# 22 "./../../dist/include/js/Utility.h" 2
+
+
+
+
+namespace JS {}
+
+
+namespace mozilla {}
+
+
+namespace js {
+
+
+using namespace JS;
+using namespace mozilla;
+
+}
+
+
+extern "C" {
+
+
+
+
+
+#define JS_FREE_PATTERN 0xDA
+
+#define JS_ASSERT(expr) MOZ_ASSERT(expr)
+#define JS_ASSERT_IF(cond,expr) MOZ_ASSERT_IF(cond, expr)
+#define JS_NOT_REACHED(reason) MOZ_NOT_REACHED(reason)
+#define JS_ALWAYS_TRUE(expr) MOZ_ALWAYS_TRUE(expr)
+#define JS_ALWAYS_FALSE(expr) MOZ_ALWAYS_FALSE(expr)
+# 62 "./../../dist/include/js/Utility.h"
+#define JS_THREADSAFE_ASSERT(expr) ((void) 0)
+
+
+#define JS_STATIC_ASSERT(cond) MOZ_STATIC_ASSERT(cond, "JS_STATIC_ASSERT")
+#define JS_STATIC_ASSERT_IF(cond,expr) MOZ_STATIC_ASSERT_IF(cond, expr, "JS_STATIC_ASSERT_IF")
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) void JS_Abort(void);
+# 140 "./../../dist/include/js/Utility.h"
+#define JS_OOM_POSSIBLY_FAIL() do {} while(0)
+#define JS_OOM_POSSIBLY_FAIL_REPORT(cx) do {} while(0)
+
+
+
+
+
+
+
+static inline void* js_malloc(size_t bytes)
+{
+    do {} while(0);
+    return malloc(bytes);
+}
+
+static inline void* js_calloc(size_t bytes)
+{
+    do {} while(0);
+    return calloc(bytes, 1);
+}
+
+static inline void* js_realloc(void* p, size_t bytes)
+{
+    do {} while(0);
+    return realloc(p, bytes);
+}
+
+static inline void js_free(void* p)
+{
+    free(p);
+}
+# 234 "./../../dist/include/js/Utility.h"
+#define js_bitscan_ctz32(val) __builtin_ctz(val)
+#define js_bitscan_clz32(val) __builtin_clz(val)
+#define JS_HAS_BUILTIN_BITSCAN32 
+# 255 "./../../dist/include/js/Utility.h"
+#define JS_CEILING_LOG2(_log2,_n) JS_BEGIN_MACRO unsigned int j_ = (unsigned int)(_n); (_log2) = (j_ <= 1 ? 0 : 32 - js_bitscan_clz32(j_ - 1)); JS_END_MACRO
+# 292 "./../../dist/include/js/Utility.h"
+#define JS_FLOOR_LOG2(_log2,_n) JS_BEGIN_MACRO (_log2) = 31 - js_bitscan_clz32(((unsigned int)(_n)) | 1); JS_END_MACRO
+# 316 "./../../dist/include/js/Utility.h"
+#define js_FloorLog2wImpl(n) ((size_t)(JS_BITS_PER_WORD - 1 - js_bitscan_clz32(n)))
+# 338 "./../../dist/include/js/Utility.h"
+#define JS_CEILING_LOG2W(n) ((n) <= 1 ? 0 : 1 + JS_FLOOR_LOG2W((n) - 1))
+
+
+
+
+
+
+
+static __attribute__((always_inline)) inline size_t
+JS_FLOOR_LOG2W(size_t n)
+{
+    do { } while(0);
+    return ((size_t)((8 * 4) - 1 - __builtin_clz(n)));
+}
+
+}
+# 437 "./../../dist/include/js/Utility.h"
+#define JS_NEW_BODY(allocator,t,parms) void *memory = allocator(sizeof(t)); return memory ? new(memory) t parms : NULL;
+# 450 "./../../dist/include/js/Utility.h"
+#define JS_DECLARE_NEW_METHODS(ALLOCATOR,QUALIFIERS) template <class T> QUALIFIERS T *new_() { JS_NEW_BODY(ALLOCATOR, T, ()) } template <class T, class P1> QUALIFIERS T *new_(P1 p1) { JS_NEW_BODY(ALLOCATOR, T, (p1)) } template <class T, class P1, class P2> QUALIFIERS T *new_(P1 p1, P2 p2) { JS_NEW_BODY(ALLOCATOR, T, (p1, p2)) } template <class T, class P1, class P2, class P3> QUALIFIERS T *new_(P1 p1, P2 p2, P3 p3) { JS_NEW_BODY(ALLOCATOR, T, (p1, p2, p3)) } template <class T, class P1, class P2, class P3, class P4> QUALIFIERS T *new_(P1 p1, P2 p2, P3 p3, P4 p4) { JS_NEW_BODY(ALLOCATOR, T, (p1, p2, p3, p4)) } template <class T, class P1, class P2, class P3, class P4, class P5> QUALIFIERS T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) { JS_NEW_BODY(ALLOCATOR, T, (p1, p2, p3, p4, p5)) } template <class T, class P1, class P2, class P3, class P4, class P5, class P6> QUALIFIERS T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) { JS_NEW_BODY(ALLOCATOR, T, (p1, p2, p3, p4, p5, p6)) } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7> QUALIFIERS T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7) { JS_NEW_BODY(ALLOCATOR, T, (p1, p2, p3, p4, p5, p6, p7)) } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8> QUALIFIERS T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8) { JS_NEW_BODY(ALLOCATOR, T, (p1, p2, p3, p4, p5, p6, p7, p8)) } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9> QUALIFIERS T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9) { JS_NEW_BODY(ALLOCATOR, T, (p1, p2, p3, p4, p5, p6, p7, p8, p9)) } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10> QUALIFIERS T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10) { JS_NEW_BODY(ALLOCATOR, T, (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10)) } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11> QUALIFIERS T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11) { JS_NEW_BODY(ALLOCATOR, T, (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11)) } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12> QUALIFIERS T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12) { JS_NEW_BODY(ALLOCATOR, T, (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12)) } static const int JSMinAlignment = 8; template <class T> QUALIFIERS T *array_new(size_t n) { uint64_t numBytes64 = uint64_t(JSMinAlignment) + uint64_t(sizeof(T)) * uint64_t(n); size_t numBytes = size_t(numBytes64); if (numBytes64 != numBytes) { JS_ASSERT(0); return NULL; } void *memory = ALLOCATOR(numBytes); if (!memory) return NULL; *(size_t *)memory = n; memory = (void*)(uintptr_t(memory) + JSMinAlignment); return new(memory) T[n]; }
+# 534 "./../../dist/include/js/Utility.h"
+#define JS_DECLARE_DELETE_METHODS(DEALLOCATOR,QUALIFIERS) template <class T> QUALIFIERS void delete_(T *p) { if (p) { p->~T(); DEALLOCATOR(p); } } template <class T> QUALIFIERS void array_delete(T *p) { if (p) { void* p0 = (void *)(uintptr_t(p) - js::OffTheBooks::JSMinAlignment); size_t n = *(size_t *)p0; for (size_t i = 0; i < n; i++) (p + i)->~T(); DEALLOCATOR(p0); } }
+# 561 "./../../dist/include/js/Utility.h"
+namespace js {
+
+class OffTheBooks {
+public:
+    template <class T> __attribute__((always_inline)) inline static T *new_() { void *memory = ::js_malloc(sizeof(T)); return memory ? new(memory) T () : __null; } template <class T, class P1> __attribute__((always_inline)) inline static T *new_(P1 p1) { void *memory = ::js_malloc(sizeof(T)); return memory ? new(memory) T (p1) : __null; } template <class T, class P1, class P2> __attribute__((always_inline)) inline static T *new_(P1 p1, P2 p2) { void *memory = ::js_malloc(sizeof(T)); return memory ? new(memory) T (p1, p2) : __null; } template <class T, class P1, class P2, class P3> __attribute__((always_inline)) inline static T *new_(P1 p1, P2 p2, P3 p3) { void *memory = ::js_malloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3) : __null; } template <class T, class P1, class P2, class P3, class P4> __attribute__((always_inline)) inline static T *new_(P1 p1, P2 p2, P3 p3, P4 p4) { void *memory = ::js_malloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5> __attribute__((always_inline)) inline static T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) { void *memory = ::js_malloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6> __attribute__((always_inline)) inline static T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) { void *memory = ::js_malloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7> __attribute__((always_inline)) inline static T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7) { void *memory = ::js_malloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8> __attribute__((always_inline)) inline static T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8) { void *memory = ::js_malloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9> __attribute__((always_inline)) inline static T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9) { void *memory = ::js_malloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10> __attribute__((always_inline)) inline static T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10) { void *memory = ::js_malloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11> __attribute__((always_inline)) inline static T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11) { void *memory = ::js_malloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12> __attribute__((always_inline)) inline static T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12) { void *memory = ::js_malloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) : __null; } static const int JSMinAlignment = 8; template <class T> __attribute__((always_inline)) inline static T *array_new(size_t n) { uint64_t numBytes64 = uint64_t(JSMinAlignment) + uint64_t(sizeof(T)) * uint64_t(n); size_t numBytes = size_t(numBytes64); if (numBytes64 != numBytes) { do { } while(0); return __null; } void *memory = ::js_malloc(numBytes); if (!memory) return __null; *(size_t *)memory = n; memory = (void*)(uintptr_t(memory) + JSMinAlignment); return new(memory) T[n]; }
+
+    static inline void* malloc_(size_t bytes) {
+        return ::js_malloc(bytes);
+    }
+
+    static inline void* calloc_(size_t bytes) {
+        return ::js_calloc(bytes);
+    }
+
+    static inline void* realloc_(void* p, size_t bytes) {
+        return ::js_realloc(p, bytes);
+    }
+};
+
+
+
+
+
+class Foreground {
+public:
+
+    static __attribute__((always_inline)) inline void free_(void* p) {
+        ::js_free(p);
+    }
+
+    template <class T> __attribute__((always_inline)) inline static void delete_(T *p) { if (p) { p->~T(); ::js_free(p); } } template <class T> __attribute__((always_inline)) inline static void array_delete(T *p) { if (p) { void* p0 = (void *)(uintptr_t(p) - js::OffTheBooks::JSMinAlignment); size_t n = *(size_t *)p0; for (size_t i = 0; i < n; i++) (p + i)->~T(); ::js_free(p0); } }
+};
+
+class UnwantedForeground : public Foreground {
+};
+
+}
+
+
+
+
+
+#define JS_DECLARE_ALLOCATION_FRIENDS_FOR_PRIVATE_CONSTRUCTOR friend class js::OffTheBooks; friend class js::Foreground; friend class js::UnwantedForeground; friend struct ::JSContext; friend struct ::JSRuntime
+# 701 "./../../dist/include/js/Utility.h"
+#define JS_DECL_USE_GUARD_OBJECT_NOTIFIER 
+#define JS_GUARD_OBJECT_NOTIFIER_PARAM 
+#define JS_GUARD_OBJECT_NOTIFIER_PARAM_NO_INIT 
+#define JS_GUARD_OBJECT_NOTIFIER_PARAM0 
+#define JS_GUARD_OBJECT_NOTIFIER_INIT JS_BEGIN_MACRO JS_END_MACRO
+
+
+
+namespace js {
+# 811 "./../../dist/include/js/Utility.h"
+template<typename T>
+class MoveRef {
+  public:
+    typedef T Referent;
+    explicit MoveRef(T &t) : pointer(&t) { }
+    T &operator*() const { return *pointer; }
+    T *operator->() const { return pointer; }
+# 830 "./../../dist/include/js/Utility.h"
+    operator T& () const { return *pointer; }
+
+  private:
+    T *pointer;
+};
+
+template<typename T>
+MoveRef<T> Move(T &t) { return MoveRef<T>(t); }
+
+template<typename T>
+MoveRef<T> Move(const T &t) { return MoveRef<T>(const_cast<T &>(t)); }
+
+
+class ReentrancyGuard
+{
+
+    ReentrancyGuard(const ReentrancyGuard &);
+    void operator=(const ReentrancyGuard &);
+
+
+
+
+  public:
+    template <class T>
+
+
+
+
+    ReentrancyGuard(T & )
+
+    {
+
+
+
+
+    }
+    ~ReentrancyGuard()
+    {
+
+
+
+    }
+};
+
+
+
+
+
+__attribute__((always_inline)) inline size_t
+RoundUpPow2(size_t x)
+{
+    return size_t(1) << ((x) <= 1 ? 0 : 1 + JS_FLOOR_LOG2W((x) - 1));
+}
+
+}
+
+namespace JS {
+# 899 "./../../dist/include/js/Utility.h"
+inline void PoisonPtr(uintptr_t *v)
+{
+
+
+
+
+}
+
+template <typename T>
+inline bool IsPoisonedPtr(T *v)
+{
+
+
+
+
+    return false;
+
+}
+
+}
+
+
+
+
+
+
+typedef size_t(*JSMallocSizeOfFun)(const void *p);
+
+
+
+#define HAVE_STATIC_ANNOTATIONS 
+# 955 "./../../dist/include/js/Utility.h"
+#define STATIC_PRECONDITION(COND) 
+#define STATIC_PRECONDITION_ASSUME(COND) 
+#define STATIC_POSTCONDITION(COND) 
+#define STATIC_POSTCONDITION_ASSUME(COND) 
+#define STATIC_INVARIANT(COND) 
+#define STATIC_INVARIANT_ASSUME(COND) 
+#define STATIC_ASSERT(COND) JS_BEGIN_MACRO JS_END_MACRO
+#define STATIC_ASSUME(COND) JS_BEGIN_MACRO JS_END_MACRO
+#define STATIC_ASSERT_RUNTIME(COND) JS_BEGIN_MACRO JS_END_MACRO
+
+#define STATIC_SKIP_INFERENCE STATIC_INVARIANT(skip_inference())
+# 17 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsutil.h" 2
+
+
+struct JSContext;
+
+static __attribute__((always_inline)) inline void *
+js_memcpy(void *dst_, const void *src_, size_t len)
+{
+    char *dst = (char *) dst_;
+    const char *src = (const char *) src_;
+    do { } while (0);
+    do { } while (0);
+
+    return memcpy(dst, src, len);
+}
+
+
+namespace js {
+
+template <class T>
+struct AlignmentTestStruct
+{
+    char c;
+    T t;
+};
+
+
+#define JS_ALIGNMENT_OF(t_) (sizeof(js::AlignmentTestStruct<t_>) - sizeof(t_))
+
+
+template <class T>
+class AlignedPtrAndFlag
+{
+    uintptr_t bits;
+
+  public:
+    AlignedPtrAndFlag(T *t, bool flag) {
+        do { } while(0);
+        bits = uintptr_t(t) | uintptr_t(flag);
+    }
+
+    T *ptr() const {
+        return (T *)(bits & ~uintptr_t(1));
+    }
+
+    bool flag() const {
+        return (bits & 1) != 0;
+    }
+
+    void setPtr(T *t) {
+        do { } while(0);
+        bits = uintptr_t(t) | uintptr_t(flag());
+    }
+
+    void setFlag() {
+        bits |= 1;
+    }
+
+    void unsetFlag() {
+        bits &= ~uintptr_t(1);
+    }
+
+    void set(T *t, bool flag) {
+        do { } while(0);
+        bits = uintptr_t(t) | flag;
+    }
+};
+
+template <class T>
+static inline void
+Reverse(T *beg, T *end)
+{
+    while (beg != end) {
+        if (--end == beg)
+            return;
+        T tmp = *beg;
+        *beg = *end;
+        *end = tmp;
+        ++beg;
+    }
+}
+
+template <class T>
+static inline T *
+Find(T *beg, T *end, const T &v)
+{
+    for (T *p = beg; p != end; ++p) {
+        if (*p == v)
+            return p;
+    }
+    return end;
+}
+
+template <class Container>
+static inline typename Container::ElementType *
+Find(Container &c, const typename Container::ElementType &v)
+{
+    return Find(c.begin(), c.end(), v);
+}
+
+template <typename InputIterT, typename CallableT>
+void
+ForEach(InputIterT begin, InputIterT end, CallableT f)
+{
+    for (; begin != end; ++begin)
+        f(*begin);
+}
+
+template <class T>
+static inline T
+Min(T t1, T t2)
+{
+    return t1 < t2 ? t1 : t2;
+}
+
+template <class T>
+static inline T
+Max(T t1, T t2)
+{
+    return t1 > t2 ? t1 : t2;
+}
+
+
+template <class T>
+static T&
+InitConst(const T &t)
+{
+    return const_cast<T &>(t);
+}
+
+template <class T, class U>
+__attribute__((always_inline)) inline T &
+ImplicitCast(U &u)
+{
+    T &t = u;
+    return t;
+}
+
+template<typename T>
+class AutoScopedAssign
+{
+  private:
+   
+    T *addr;
+    T old;
+
+  public:
+    AutoScopedAssign(T *addr, const T &value )
+        : addr(addr), old(*addr)
+    {
+        do { } while (0);
+        *addr = value;
+    }
+
+    ~AutoScopedAssign() { *addr = old; }
+};
+
+template <class T>
+__attribute__((always_inline)) inline static void
+PodZero(T *t)
+{
+    memset(t, 0, sizeof(T));
+}
+
+template <class T>
+__attribute__((always_inline)) inline static void
+PodZero(T *t, size_t nelem)
+{
+
+
+
+
+
+
+    for (T *end = t + nelem; t != end; ++t)
+        memset(t, 0, sizeof(T));
+}
+# 201 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsutil.h"
+template <class T, size_t N> static void PodZero(T (&)[N]);
+template <class T, size_t N> static void PodZero(T (&)[N], size_t);
+
+template <class T, size_t N>
+__attribute__((always_inline)) inline static void
+PodArrayZero(T (&t)[N])
+{
+    memset(t, 0, N * sizeof(T));
+}
+
+template <class T>
+__attribute__((always_inline)) inline static void
+PodAssign(T *dst, const T *src)
+{
+    js_memcpy((char *) dst, (const char *) src, sizeof(T));
+}
+
+template <class T>
+__attribute__((always_inline)) inline static void
+PodCopy(T *dst, const T *src, size_t nelem)
+{
+
+    do { } while (0);
+    do { } while (0);
+
+    if (nelem < 128) {
+
+
+
+
+        for (const T *srcend = src + nelem; src != srcend; ++src, ++dst)
+            PodAssign(dst, src);
+    } else {
+        memcpy(dst, src, nelem * sizeof(T));
+    }
+}
+
+template <class T>
+__attribute__((always_inline)) inline static bool
+PodEqual(T *one, T *two, size_t len)
+{
+    if (len < 128) {
+        T *p1end = one + len;
+        for (T *p1 = one, *p2 = two; p1 != p1end; ++p1, ++p2) {
+            if (*p1 != *p2)
+                return false;
+        }
+        return true;
+    }
+
+    return !memcmp(one, two, len * sizeof(T));
+}
+
+template <class T>
+__attribute__((always_inline)) inline static void
+Swap(T &t, T &u)
+{
+    T tmp(Move(t));
+    t = Move(u);
+    u = Move(tmp);
+}
+
+__attribute__((always_inline)) inline static size_t
+UnsignedPtrDiff(const void *bigger, const void *smaller)
+{
+    return size_t(bigger) - size_t(smaller);
+}
+# 276 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsutil.h"
+enum MaybeReportError { REPORT_ERROR = true, DONT_REPORT_ERROR = false };
+
+
+
+
+
+static inline unsigned
+NumWordsForBitArrayOfLength(size_t length)
+{
+    return (length + ((8 * 4) - 1)) / (8 * 4);
+}
+
+static inline unsigned
+BitArrayIndexToWordIndex(size_t length, size_t bitIndex)
+{
+    unsigned wordIndex = bitIndex / (8 * 4);
+    do { } while(0);
+    return wordIndex;
+}
+
+static inline size_t
+BitArrayIndexToWordMask(size_t i)
+{
+    return size_t(1) << (i % (8 * 4));
+}
+
+static inline bool
+IsBitArrayElementSet(size_t *array, size_t length, size_t i)
+{
+    return array[BitArrayIndexToWordIndex(length, i)] & BitArrayIndexToWordMask(i);
+}
+
+static inline bool
+IsAnyBitArrayElementSet(size_t *array, size_t length)
+{
+    unsigned numWords = NumWordsForBitArrayOfLength(length);
+    for (unsigned i = 0; i < numWords; ++i) {
+        if (array[i])
+            return true;
+    }
+    return false;
+}
+
+static inline void
+SetBitArrayElement(size_t *array, size_t length, size_t i)
+{
+    array[BitArrayIndexToWordIndex(length, i)] |= BitArrayIndexToWordMask(i);
+}
+
+static inline void
+ClearBitArrayElement(size_t *array, size_t length, size_t i)
+{
+    array[BitArrayIndexToWordIndex(length, i)] &= ~BitArrayIndexToWordMask(i);
+}
+
+static inline void
+ClearAllBitArrayElements(size_t *array, size_t length)
+{
+    for (unsigned i = 0; i < length; ++i)
+        array[i] = 0;
+}
+
+}
+# 358 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsutil.h"
+#define JS_ROTATE_LEFT32(a,bits) (((a) << (bits)) | ((a) >> (32 - (bits))))
+# 370 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsutil.h"
+#define MUST_FLOW_THROUGH(label) ((void) 0)
+#define MUST_FLOW_LABEL(label) 
+# 385 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsutil.h"
+#define JS_POISON(p,val,size) ((void) 0)
+#define JS_OPT_ASSERT(expr) ((void) 0)
+#define JS_OPT_ASSERT_IF(cond,expr) ((void) 0)
+# 419 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsutil.h"
+#define JS_BASIC_STATS_ACCUM(bs,val) 
+
+
+
+typedef size_t jsbitmap;
+#define JS_TEST_BIT(_map,_bit) ((_map)[(_bit)>>JS_BITS_PER_WORD_LOG2] & ((jsbitmap)1<<((_bit)&(JS_BITS_PER_WORD-1))))
+
+#define JS_SET_BIT(_map,_bit) ((_map)[(_bit)>>JS_BITS_PER_WORD_LOG2] |= ((jsbitmap)1<<((_bit)&(JS_BITS_PER_WORD-1))))
+
+#define JS_CLEAR_BIT(_map,_bit) ((_map)[(_bit)>>JS_BITS_PER_WORD_LOG2] &= ~((jsbitmap)1<<((_bit)&(JS_BITS_PER_WORD-1))))
+# 449 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsutil.h"
+#define JS_SILENCE_UNUSED_VALUE_IN_EXPR(expr) JS_BEGIN_MACRO expr; JS_END_MACRO
+# 23 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsval.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsval.h"
+#define jsvalimpl_h__ 
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsval.h"
+extern "C" {
+
+
+
+
+
+
+#define JSVAL_ALIGNMENT __attribute__((aligned (8)))
+# 54 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsval.h"
+#define JS_ENUM_HEADER(id,type) enum id
+#define JS_ENUM_FOOTER(id) __attribute__((packed))
+
+
+
+enum JSValueType
+{
+    JSVAL_TYPE_DOUBLE = 0x00,
+    JSVAL_TYPE_INT32 = 0x01,
+    JSVAL_TYPE_UNDEFINED = 0x02,
+    JSVAL_TYPE_BOOLEAN = 0x03,
+    JSVAL_TYPE_MAGIC = 0x04,
+    JSVAL_TYPE_STRING = 0x05,
+    JSVAL_TYPE_NULL = 0x06,
+    JSVAL_TYPE_OBJECT = 0x07,
+
+
+    JSVAL_TYPE_UNKNOWN = 0x20,
+    JSVAL_TYPE_MISSING = 0x21
+} __attribute__((packed));
+
+typedef int moz_static_assert5[(sizeof(JSValueType) == 1) ? 1 : -1];
+
+
+
+
+enum JSValueTag
+{
+    JSVAL_TAG_CLEAR = 0xFFFFFF80,
+    JSVAL_TAG_INT32 = JSVAL_TAG_CLEAR | JSVAL_TYPE_INT32,
+    JSVAL_TAG_UNDEFINED = JSVAL_TAG_CLEAR | JSVAL_TYPE_UNDEFINED,
+    JSVAL_TAG_STRING = JSVAL_TAG_CLEAR | JSVAL_TYPE_STRING,
+    JSVAL_TAG_BOOLEAN = JSVAL_TAG_CLEAR | JSVAL_TYPE_BOOLEAN,
+    JSVAL_TAG_MAGIC = JSVAL_TAG_CLEAR | JSVAL_TYPE_MAGIC,
+    JSVAL_TAG_NULL = JSVAL_TAG_CLEAR | JSVAL_TYPE_NULL,
+    JSVAL_TAG_OBJECT = JSVAL_TAG_CLEAR | JSVAL_TYPE_OBJECT
+} __attribute__((packed));
+
+typedef int moz_static_assert6[(sizeof(JSValueTag) == 4) ? 1 : -1];
+# 177 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsval.h"
+#define JSVAL_LOWER_INCL_TYPE_OF_OBJ_OR_NULL_SET JSVAL_TYPE_NULL
+#define JSVAL_UPPER_EXCL_TYPE_OF_PRIMITIVE_SET JSVAL_TYPE_OBJECT
+#define JSVAL_UPPER_INCL_TYPE_OF_NUMBER_SET JSVAL_TYPE_INT32
+#define JSVAL_LOWER_INCL_TYPE_OF_PTR_PAYLOAD_SET JSVAL_TYPE_MAGIC
+
+
+
+#define JSVAL_TYPE_TO_TAG(type) ((JSValueTag)(JSVAL_TAG_CLEAR | (type)))
+
+#define JSVAL_LOWER_INCL_TAG_OF_OBJ_OR_NULL_SET JSVAL_TAG_NULL
+#define JSVAL_UPPER_EXCL_TAG_OF_PRIMITIVE_SET JSVAL_TAG_OBJECT
+#define JSVAL_UPPER_INCL_TAG_OF_NUMBER_SET JSVAL_TAG_INT32
+#define JSVAL_LOWER_INCL_TAG_OF_GCTHING_SET JSVAL_TAG_STRING
+# 205 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsval.h"
+typedef enum JSWhyMagic
+{
+    JS_ARRAY_HOLE,
+    JS_NATIVE_ENUMERATE,
+
+
+    JS_NO_ITER_VALUE,
+    JS_GENERATOR_CLOSING,
+    JS_NO_CONSTANT,
+    JS_THIS_POISON,
+    JS_ARG_POISON,
+    JS_SERIALIZE_NO_NODE,
+    JS_LAZY_ARGUMENTS,
+    JS_UNASSIGNED_ARGUMENTS,
+    JS_OPTIMIZED_ARGUMENTS,
+    JS_IS_CONSTRUCTING,
+    JS_OVERWRITTEN_CALLEE,
+    JS_GENERIC_MAGIC
+} JSWhyMagic;
+
+
+
+typedef union jsval_layout
+{
+    uint64_t asBits;
+    struct {
+        union {
+            int32_t i32;
+            uint32_t u32;
+            JSBool boo;
+            JSString *str;
+            JSObject *obj;
+            void *ptr;
+            JSWhyMagic why;
+            size_t word;
+            uintptr_t uintptr;
+        } payload;
+        JSValueTag tag;
+    } s;
+    double asDouble;
+    void *asPtr;
+} __attribute__((aligned (8))) jsval_layout;
+# 317 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsval.h"
+typedef int moz_static_assert7[(sizeof(jsval_layout) == 8) ? 1 : -1];
+# 327 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsval.h"
+static __attribute__((always_inline)) inline jsval_layout
+BUILD_JSVAL(JSValueTag tag, uint32_t payload)
+{
+    jsval_layout l;
+    l.asBits = (((uint64_t)(uint32_t)tag) << 32) | payload;
+    return l;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_DOUBLE_IMPL(jsval_layout l)
+{
+    return (uint32_t)l.s.tag <= (uint32_t)JSVAL_TAG_CLEAR;
+}
+
+static __attribute__((always_inline)) inline jsval_layout
+DOUBLE_TO_JSVAL_IMPL(double d)
+{
+    jsval_layout l;
+    l.asDouble = d;
+    do { } while(0);
+    return l;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_INT32_IMPL(jsval_layout l)
+{
+    return l.s.tag == JSVAL_TAG_INT32;
+}
+
+static __attribute__((always_inline)) inline int32_t
+JSVAL_TO_INT32_IMPL(jsval_layout l)
+{
+    return l.s.payload.i32;
+}
+
+static __attribute__((always_inline)) inline jsval_layout
+INT32_TO_JSVAL_IMPL(int32_t i)
+{
+    jsval_layout l;
+    l.s.tag = JSVAL_TAG_INT32;
+    l.s.payload.i32 = i;
+    return l;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_NUMBER_IMPL(jsval_layout l)
+{
+    JSValueTag tag = l.s.tag;
+    do { } while(0);
+    return (uint32_t)tag <= (uint32_t)JSVAL_TAG_INT32;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_UNDEFINED_IMPL(jsval_layout l)
+{
+    return l.s.tag == JSVAL_TAG_UNDEFINED;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_STRING_IMPL(jsval_layout l)
+{
+    return l.s.tag == JSVAL_TAG_STRING;
+}
+
+static __attribute__((always_inline)) inline jsval_layout
+STRING_TO_JSVAL_IMPL(JSString *str)
+{
+    jsval_layout l;
+    do { } while(0);
+    l.s.tag = JSVAL_TAG_STRING;
+    l.s.payload.str = str;
+    return l;
+}
+
+static __attribute__((always_inline)) inline JSString *
+JSVAL_TO_STRING_IMPL(jsval_layout l)
+{
+    return l.s.payload.str;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_BOOLEAN_IMPL(jsval_layout l)
+{
+    return l.s.tag == JSVAL_TAG_BOOLEAN;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_TO_BOOLEAN_IMPL(jsval_layout l)
+{
+    return l.s.payload.boo;
+}
+
+static __attribute__((always_inline)) inline jsval_layout
+BOOLEAN_TO_JSVAL_IMPL(JSBool b)
+{
+    jsval_layout l;
+    do { } while(0);
+    l.s.tag = JSVAL_TAG_BOOLEAN;
+    l.s.payload.boo = b;
+    return l;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_MAGIC_IMPL(jsval_layout l)
+{
+    return l.s.tag == JSVAL_TAG_MAGIC;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_OBJECT_IMPL(jsval_layout l)
+{
+    return l.s.tag == JSVAL_TAG_OBJECT;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_PRIMITIVE_IMPL(jsval_layout l)
+{
+    return (uint32_t)l.s.tag < (uint32_t)JSVAL_TAG_OBJECT;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_OBJECT_OR_NULL_IMPL(jsval_layout l)
+{
+    do { } while(0);
+    return (uint32_t)l.s.tag >= (uint32_t)JSVAL_TAG_NULL;
+}
+
+static __attribute__((always_inline)) inline JSObject *
+JSVAL_TO_OBJECT_IMPL(jsval_layout l)
+{
+    return l.s.payload.obj;
+}
+
+static __attribute__((always_inline)) inline jsval_layout
+OBJECT_TO_JSVAL_IMPL(JSObject *obj)
+{
+    jsval_layout l;
+    do { } while(0);
+    l.s.tag = JSVAL_TAG_OBJECT;
+    l.s.payload.obj = obj;
+    return l;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_NULL_IMPL(jsval_layout l)
+{
+    return l.s.tag == JSVAL_TAG_NULL;
+}
+
+static __attribute__((always_inline)) inline jsval_layout
+PRIVATE_PTR_TO_JSVAL_IMPL(void *ptr)
+{
+    jsval_layout l;
+    do { } while(0);
+    l.s.tag = (JSValueTag)0;
+    l.s.payload.ptr = ptr;
+    do { } while(0);
+    return l;
+}
+
+static __attribute__((always_inline)) inline void *
+JSVAL_TO_PRIVATE_PTR_IMPL(jsval_layout l)
+{
+    return l.s.payload.ptr;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_GCTHING_IMPL(jsval_layout l)
+{
+
+    return (uint32_t)l.s.tag >= (uint32_t)JSVAL_TAG_STRING;
+}
+
+static __attribute__((always_inline)) inline void *
+JSVAL_TO_GCTHING_IMPL(jsval_layout l)
+{
+    return l.s.payload.ptr;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_TRACEABLE_IMPL(jsval_layout l)
+{
+    return l.s.tag == JSVAL_TAG_STRING || l.s.tag == JSVAL_TAG_OBJECT;
+}
+
+static __attribute__((always_inline)) inline uint32_t
+JSVAL_TRACE_KIND_IMPL(jsval_layout l)
+{
+    return (uint32_t)(JSBool)JSVAL_IS_STRING_IMPL(l);
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_SPECIFIC_INT32_IMPL(jsval_layout l, int32_t i32)
+{
+    return l.s.tag == JSVAL_TAG_INT32 && l.s.payload.i32 == i32;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_SPECIFIC_BOOLEAN(jsval_layout l, JSBool b)
+{
+    return (l.s.tag == JSVAL_TAG_BOOLEAN) && (l.s.payload.boo == b);
+}
+
+static __attribute__((always_inline)) inline jsval_layout
+MAGIC_TO_JSVAL_IMPL(JSWhyMagic why)
+{
+    jsval_layout l;
+    l.s.tag = JSVAL_TAG_MAGIC;
+    l.s.payload.why = why;
+    return l;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_SAME_TYPE_IMPL(jsval_layout lhs, jsval_layout rhs)
+{
+    JSValueTag ltag = lhs.s.tag, rtag = rhs.s.tag;
+    return ltag == rtag || (ltag < JSVAL_TAG_CLEAR && rtag < JSVAL_TAG_CLEAR);
+}
+
+static __attribute__((always_inline)) inline jsval_layout
+PRIVATE_UINT32_TO_JSVAL_IMPL(uint32_t ui)
+{
+    jsval_layout l;
+    l.s.tag = (JSValueTag)0;
+    l.s.payload.u32 = ui;
+    do { } while(0);
+    return l;
+}
+
+static __attribute__((always_inline)) inline uint32_t
+JSVAL_TO_PRIVATE_UINT32_IMPL(jsval_layout l)
+{
+    return l.s.payload.u32;
+}
+
+static __attribute__((always_inline)) inline JSValueType
+JSVAL_EXTRACT_NON_DOUBLE_TYPE_IMPL(jsval_layout l)
+{
+    uint32_t type = l.s.tag & 0xF;
+    do { } while(0);
+    return (JSValueType)type;
+}
+# 820 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsval.h"
+static __attribute__((always_inline)) inline double
+JS_CANONICALIZE_NAN(double d)
+{
+    if ((__builtin_expect((d != d), 0))) {
+        jsval_layout l;
+        l.asBits = 0x7FF8000000000000LL;
+        return l.asDouble;
+    }
+    return d;
+}
+
+}
+
+
+static jsval_layout JSVAL_TO_IMPL(JS::Value);
+static JS::Value IMPL_TO_JSVAL(jsval_layout);
+# 24 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Root.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Root.h"
+#define jsgc_root_h__ 
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspubtd.h" 1
+# 12 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Root.h" 2
+
+
+
+
+
+namespace JS {
+# 62 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Root.h"
+template <typename T> class Rooted;
+
+template <typename T>
+struct RootMethods { };
+
+
+
+
+
+
+template <typename T>
+class Handle
+{
+  public:
+
+    template <typename S> Handle(Handle<S> handle) {
+        testAssign<S>();
+        ptr = reinterpret_cast<const T *>(handle.address());
+    }
+# 89 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Root.h"
+    static Handle fromMarkedLocation(const T *p) {
+        Handle h;
+        h.ptr = p;
+        return h;
+    }
+
+
+
+
+
+    template <typename S> inline Handle(const Rooted<S> &root);
+
+    const T *address() const { return ptr; }
+    T value() const { return *ptr; }
+
+    operator T () const { return value(); }
+    T operator ->() const { return value(); }
+
+  private:
+    Handle() {}
+
+    const T *ptr;
+
+    template <typename S>
+    void testAssign() {
+
+
+
+
+
+
+    }
+};
+
+typedef Handle<JSObject*> HandleObject;
+typedef Handle<JSFunction*> HandleFunction;
+typedef Handle<JSString*> HandleString;
+typedef Handle<jsid> HandleId;
+typedef Handle<Value> HandleValue;
+
+template <typename T>
+struct RootMethods<T *>
+{
+    static T *initial() { return __null; }
+    static ThingRootKind kind() { return T::rootKind(); }
+    static bool poisoned(T *v) { return IsPoisonedPtr(v); }
+};
+
+
+
+
+
+
+template <typename T>
+class Rooted
+{
+    void init(JSContext *cx_, T initial)
+    {
+# 158 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Root.h"
+        ptr = initial;
+    }
+
+  public:
+    Rooted(JSContext *cx) { init(cx, RootMethods<T>::initial()); }
+    Rooted(JSContext *cx, T initial) { init(cx, initial); }
+# 172 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Root.h"
+    operator Handle<T> () const { return Handle<T>(*this); }
+
+    ~Rooted()
+    {
+
+
+
+
+    }
+
+
+
+
+
+    operator T () const { return ptr; }
+    T operator ->() const { return ptr; }
+    T * address() { return &ptr; }
+    const T * address() const { return &ptr; }
+    T & reference() { return ptr; }
+    T raw() const { return ptr; }
+
+    T & operator =(T value)
+    {
+        do { } while(0);
+        ptr = value;
+        return ptr;
+    }
+
+    T & operator =(const Rooted &value)
+    {
+        ptr = value;
+        return ptr;
+    }
+
+  private:
+
+
+
+
+    T ptr;
+
+    Rooted() ;
+    Rooted(const Rooted &) ;
+};
+
+template<typename T> template <typename S>
+inline
+Handle<T>::Handle(const Rooted<S> &root)
+{
+    testAssign<S>();
+    ptr = reinterpret_cast<const T *>(root.address());
+}
+
+typedef Rooted<JSObject*> RootedObject;
+typedef Rooted<JSFunction*> RootedFunction;
+typedef Rooted<JSString*> RootedString;
+typedef Rooted<jsid> RootedId;
+typedef Rooted<Value> RootedValue;
+
+
+
+
+
+
+
+class SkipRoot
+{
+# 286 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Root.h"
+  public:
+    template <typename T>
+    SkipRoot(JSContext *cx, const T *ptr
+              )
+    {
+        do { } while (0);
+    }
+
+    template <typename T>
+    SkipRoot(JSContext *cx, const T *ptr, size_t count
+              )
+    {
+        do { } while (0);
+    }
+
+
+
+   
+};
+# 314 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Root.h"
+inline void MaybeCheckStackRoots(JSContext *cx) {}
+
+
+}
+# 27 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h" 2
+
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/limits" 1 3
+# 39 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/limits" 3
+#define _GLIBCXX_NUMERIC_LIMITS 1
+
+       
+# 42 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/limits" 3
+# 81 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/limits" 3
+#define __glibcxx_integral_traps true
+# 90 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/limits" 3
+#define __glibcxx_float_has_denorm_loss false
+
+
+#define __glibcxx_float_traps false
+
+
+#define __glibcxx_float_tinyness_before false
+
+
+
+
+
+
+
+#define __glibcxx_double_has_denorm_loss false
+
+
+#define __glibcxx_double_traps false
+
+
+#define __glibcxx_double_tinyness_before false
+
+
+
+
+
+
+
+#define __glibcxx_long_double_has_denorm_loss false
+
+
+#define __glibcxx_long_double_traps false
+
+
+#define __glibcxx_long_double_tinyness_before false
+
+
+
+
+#define __glibcxx_signed(T) ((T)(-1) < 0)
+
+#define __glibcxx_min(T) (__glibcxx_signed (T) ? (T)1 << __glibcxx_digits (T) : (T)0)
+
+
+#define __glibcxx_max(T) (__glibcxx_signed (T) ? (((((T)1 << (__glibcxx_digits (T) - 1)) - 1) << 1) + 1) : ~(T)0)
+
+
+
+#define __glibcxx_digits(T) (sizeof(T) * __CHAR_BIT__ - __glibcxx_signed (T))
+
+
+
+#define __glibcxx_digits10(T) (__glibcxx_digits (T) * 643 / 2136)
+
+
+#define __glibcxx_max_digits10(T) (2 + (T) * 643 / 2136)
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+
+
+
+
+  enum float_round_style
+  {
+    round_indeterminate = -1,
+    round_toward_zero = 0,
+    round_to_nearest = 1,
+    round_toward_infinity = 2,
+    round_toward_neg_infinity = 3
+  };
+
+
+
+
+
+
+
+  enum float_denorm_style
+  {
+
+    denorm_indeterminate = -1,
+
+    denorm_absent = 0,
+
+    denorm_present = 1
+  };
+# 190 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/limits" 3
+  struct __numeric_limits_base
+  {
+
+
+    static const bool is_specialized = false;
+
+
+
+
+    static const int digits = 0;
+
+    static const int digits10 = 0;
+
+
+
+
+
+
+    static const bool is_signed = false;
+
+
+    static const bool is_integer = false;
+
+
+
+
+    static const bool is_exact = false;
+
+
+    static const int radix = 0;
+
+
+
+    static const int min_exponent = 0;
+
+
+    static const int min_exponent10 = 0;
+
+
+
+    static const int max_exponent = 0;
+
+
+    static const int max_exponent10 = 0;
+
+
+    static const bool has_infinity = false;
+
+
+    static const bool has_quiet_NaN = false;
+
+
+    static const bool has_signaling_NaN = false;
+
+    static const float_denorm_style has_denorm = denorm_absent;
+
+
+    static const bool has_denorm_loss = false;
+
+
+
+    static const bool is_iec559 = false;
+
+
+
+    static const bool is_bounded = false;
+
+
+
+
+    static const bool is_modulo = false;
+
+
+    static const bool traps = false;
+
+    static const bool tinyness_before = false;
+
+
+
+    static const float_round_style round_style = round_toward_zero;
+  };
+# 283 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/limits" 3
+  template<typename _Tp>
+    struct numeric_limits : public __numeric_limits_base
+    {
+
+
+      static _Tp min() throw() { return static_cast<_Tp>(0); }
+
+      static _Tp max() throw() { return static_cast<_Tp>(0); }
+
+
+
+
+
+
+
+      static _Tp epsilon() throw() { return static_cast<_Tp>(0); }
+
+      static _Tp round_error() throw() { return static_cast<_Tp>(0); }
+
+      static _Tp infinity() throw() { return static_cast<_Tp>(0); }
+
+
+
+      static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); }
+
+
+      static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); }
+
+
+
+      static _Tp denorm_min() throw() { return static_cast<_Tp>(0); }
+    };
+# 334 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/limits" 3
+  template<>
+    struct numeric_limits<bool>
+    {
+      static const bool is_specialized = true;
+
+      static bool min() throw()
+      { return false; }
+      static bool max() throw()
+      { return true; }
+
+
+
+
+      static const int digits = 1;
+      static const int digits10 = 0;
+
+
+
+      static const bool is_signed = false;
+      static const bool is_integer = true;
+      static const bool is_exact = true;
+      static const int radix = 2;
+      static bool epsilon() throw()
+      { return false; }
+      static bool round_error() throw()
+      { return false; }
+
+      static const int min_exponent = 0;
+      static const int min_exponent10 = 0;
+      static const int max_exponent = 0;
+      static const int max_exponent10 = 0;
+
+      static const bool has_infinity = false;
+      static const bool has_quiet_NaN = false;
+      static const bool has_signaling_NaN = false;
+      static const float_denorm_style has_denorm = denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static bool infinity() throw()
+      { return false; }
+      static bool quiet_NaN() throw()
+      { return false; }
+      static bool signaling_NaN() throw()
+      { return false; }
+      static bool denorm_min() throw()
+      { return false; }
+
+      static const bool is_iec559 = false;
+      static const bool is_bounded = true;
+      static const bool is_modulo = false;
+
+
+
+
+      static const bool traps = true;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_toward_zero;
+    };
+
+
+  template<>
+    struct numeric_limits<char>
+    {
+      static const bool is_specialized = true;
+
+      static char min() throw()
+      { return (((char)(-1) < 0) ? (char)1 << (sizeof(char) * 8 - ((char)(-1) < 0)) : (char)0); }
+      static char max() throw()
+      { return (((char)(-1) < 0) ? (((((char)1 << ((sizeof(char) * 8 - ((char)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(char)0); }
+
+
+
+
+
+      static const int digits = (sizeof(char) * 8 - ((char)(-1) < 0));
+      static const int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643 / 2136);
+
+
+
+      static const bool is_signed = ((char)(-1) < 0);
+      static const bool is_integer = true;
+      static const bool is_exact = true;
+      static const int radix = 2;
+      static char epsilon() throw()
+      { return 0; }
+      static char round_error() throw()
+      { return 0; }
+
+      static const int min_exponent = 0;
+      static const int min_exponent10 = 0;
+      static const int max_exponent = 0;
+      static const int max_exponent10 = 0;
+
+      static const bool has_infinity = false;
+      static const bool has_quiet_NaN = false;
+      static const bool has_signaling_NaN = false;
+      static const float_denorm_style has_denorm = denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static char infinity() throw()
+      { return char(); }
+      static char quiet_NaN() throw()
+      { return char(); }
+      static char signaling_NaN() throw()
+      { return char(); }
+      static char denorm_min() throw()
+      { return static_cast<char>(0); }
+
+      static const bool is_iec559 = false;
+      static const bool is_bounded = true;
+      static const bool is_modulo = true;
+
+      static const bool traps = true;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_toward_zero;
+    };
+
+
+  template<>
+    struct numeric_limits<signed char>
+    {
+      static const bool is_specialized = true;
+
+      static signed char min() throw()
+      { return -127 - 1; }
+      static signed char max() throw()
+      { return 127; }
+
+
+
+
+
+      static const int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0));
+      static const int digits10 = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643 / 2136);
+
+
+
+      static const bool is_signed = true;
+      static const bool is_integer = true;
+      static const bool is_exact = true;
+      static const int radix = 2;
+      static signed char epsilon() throw()
+      { return 0; }
+      static signed char round_error() throw()
+      { return 0; }
+
+      static const int min_exponent = 0;
+      static const int min_exponent10 = 0;
+      static const int max_exponent = 0;
+      static const int max_exponent10 = 0;
+
+      static const bool has_infinity = false;
+      static const bool has_quiet_NaN = false;
+      static const bool has_signaling_NaN = false;
+      static const float_denorm_style has_denorm = denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static signed char infinity() throw()
+      { return static_cast<signed char>(0); }
+      static signed char quiet_NaN() throw()
+      { return static_cast<signed char>(0); }
+      static signed char signaling_NaN() throw()
+      { return static_cast<signed char>(0); }
+      static signed char denorm_min() throw()
+      { return static_cast<signed char>(0); }
+
+      static const bool is_iec559 = false;
+      static const bool is_bounded = true;
+      static const bool is_modulo = true;
+
+      static const bool traps = true;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_toward_zero;
+    };
+
+
+  template<>
+    struct numeric_limits<unsigned char>
+    {
+      static const bool is_specialized = true;
+
+      static unsigned char min() throw()
+      { return 0; }
+      static unsigned char max() throw()
+      { return 127 * 2U + 1; }
+
+
+
+
+
+      static const int digits = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0));
+      static const int digits10 = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643 / 2136);
+
+
+
+      static const bool is_signed = false;
+      static const bool is_integer = true;
+      static const bool is_exact = true;
+      static const int radix = 2;
+      static unsigned char epsilon() throw()
+      { return 0; }
+      static unsigned char round_error() throw()
+      { return 0; }
+
+      static const int min_exponent = 0;
+      static const int min_exponent10 = 0;
+      static const int max_exponent = 0;
+      static const int max_exponent10 = 0;
+
+      static const bool has_infinity = false;
+      static const bool has_quiet_NaN = false;
+      static const bool has_signaling_NaN = false;
+      static const float_denorm_style has_denorm = denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static unsigned char infinity() throw()
+      { return static_cast<unsigned char>(0); }
+      static unsigned char quiet_NaN() throw()
+      { return static_cast<unsigned char>(0); }
+      static unsigned char signaling_NaN() throw()
+      { return static_cast<unsigned char>(0); }
+      static unsigned char denorm_min() throw()
+      { return static_cast<unsigned char>(0); }
+
+      static const bool is_iec559 = false;
+      static const bool is_bounded = true;
+      static const bool is_modulo = true;
+
+      static const bool traps = true;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_toward_zero;
+    };
+
+
+  template<>
+    struct numeric_limits<wchar_t>
+    {
+      static const bool is_specialized = true;
+
+      static wchar_t min() throw()
+      { return (((wchar_t)(-1) < 0) ? (wchar_t)1 << (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) : (wchar_t)0); }
+      static wchar_t max() throw()
+      { return (((wchar_t)(-1) < 0) ? (((((wchar_t)1 << ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(wchar_t)0); }
+
+
+
+
+
+      static const int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0));
+      static const int digits10 = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643 / 2136);
+
+
+
+      static const bool is_signed = ((wchar_t)(-1) < 0);
+      static const bool is_integer = true;
+      static const bool is_exact = true;
+      static const int radix = 2;
+      static wchar_t epsilon() throw()
+      { return 0; }
+      static wchar_t round_error() throw()
+      { return 0; }
+
+      static const int min_exponent = 0;
+      static const int min_exponent10 = 0;
+      static const int max_exponent = 0;
+      static const int max_exponent10 = 0;
+
+      static const bool has_infinity = false;
+      static const bool has_quiet_NaN = false;
+      static const bool has_signaling_NaN = false;
+      static const float_denorm_style has_denorm = denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static wchar_t infinity() throw()
+      { return wchar_t(); }
+      static wchar_t quiet_NaN() throw()
+      { return wchar_t(); }
+      static wchar_t signaling_NaN() throw()
+      { return wchar_t(); }
+      static wchar_t denorm_min() throw()
+      { return wchar_t(); }
+
+      static const bool is_iec559 = false;
+      static const bool is_bounded = true;
+      static const bool is_modulo = true;
+
+      static const bool traps = true;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_toward_zero;
+    };
+# 744 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/g++-v4/limits" 3
+  template<>
+    struct numeric_limits<short>
+    {
+      static const bool is_specialized = true;
+
+      static short min() throw()
+      { return -32767 - 1; }
+      static short max() throw()
+      { return 32767; }
+
+
+
+
+
+      static const int digits = (sizeof(short) * 8 - ((short)(-1) < 0));
+      static const int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643 / 2136);
+
+
+
+      static const bool is_signed = true;
+      static const bool is_integer = true;
+      static const bool is_exact = true;
+      static const int radix = 2;
+      static short epsilon() throw()
+      { return 0; }
+      static short round_error() throw()
+      { return 0; }
+
+      static const int min_exponent = 0;
+      static const int min_exponent10 = 0;
+      static const int max_exponent = 0;
+      static const int max_exponent10 = 0;
+
+      static const bool has_infinity = false;
+      static const bool has_quiet_NaN = false;
+      static const bool has_signaling_NaN = false;
+      static const float_denorm_style has_denorm = denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static short infinity() throw()
+      { return short(); }
+      static short quiet_NaN() throw()
+      { return short(); }
+      static short signaling_NaN() throw()
+      { return short(); }
+      static short denorm_min() throw()
+      { return short(); }
+
+      static const bool is_iec559 = false;
+      static const bool is_bounded = true;
+      static const bool is_modulo = true;
+
+      static const bool traps = true;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_toward_zero;
+    };
+
+
+  template<>
+    struct numeric_limits<unsigned short>
+    {
+      static const bool is_specialized = true;
+
+      static unsigned short min() throw()
+      { return 0; }
+      static unsigned short max() throw()
+      { return 32767 * 2U + 1; }
+
+
+
+
+
+      static const int digits = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0));
+      static const int digits10 = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643 / 2136);
+
+
+
+      static const bool is_signed = false;
+      static const bool is_integer = true;
+      static const bool is_exact = true;
+      static const int radix = 2;
+      static unsigned short epsilon() throw()
+      { return 0; }
+      static unsigned short round_error() throw()
+      { return 0; }
+
+      static const int min_exponent = 0;
+      static const int min_exponent10 = 0;
+      static const int max_exponent = 0;
+      static const int max_exponent10 = 0;
+
+      static const bool has_infinity = false;
+      static const bool has_quiet_NaN = false;
+      static const bool has_signaling_NaN = false;
+      static const float_denorm_style has_denorm = denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static unsigned short infinity() throw()
+      { return static_cast<unsigned short>(0); }
+      static unsigned short quiet_NaN() throw()
+      { return static_cast<unsigned short>(0); }
+      static unsigned short signaling_NaN() throw()
+      { return static_cast<unsigned short>(0); }
+      static unsigned short denorm_min() throw()
+      { return static_cast<unsigned short>(0); }
+
+      static const bool is_iec559 = false;
+      static const bool is_bounded = true;
+      static const bool is_modulo = true;
+
+      static const bool traps = true;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_toward_zero;
+    };
+
+
+  template<>
+    struct numeric_limits<int>
+    {
+      static const bool is_specialized = true;
+
+      static int min() throw()
+      { return -2147483647 - 1; }
+      static int max() throw()
+      { return 2147483647; }
+
+
+
+
+
+      static const int digits = (sizeof(int) * 8 - ((int)(-1) < 0));
+      static const int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643 / 2136);
+
+
+
+      static const bool is_signed = true;
+      static const bool is_integer = true;
+      static const bool is_exact = true;
+      static const int radix = 2;
+      static int epsilon() throw()
+      { return 0; }
+      static int round_error() throw()
+      { return 0; }
+
+      static const int min_exponent = 0;
+      static const int min_exponent10 = 0;
+      static const int max_exponent = 0;
+      static const int max_exponent10 = 0;
+
+      static const bool has_infinity = false;
+      static const bool has_quiet_NaN = false;
+      static const bool has_signaling_NaN = false;
+      static const float_denorm_style has_denorm = denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static int infinity() throw()
+      { return static_cast<int>(0); }
+      static int quiet_NaN() throw()
+      { return static_cast<int>(0); }
+      static int signaling_NaN() throw()
+      { return static_cast<int>(0); }
+      static int denorm_min() throw()
+      { return static_cast<int>(0); }
+
+      static const bool is_iec559 = false;
+      static const bool is_bounded = true;
+      static const bool is_modulo = true;
+
+      static const bool traps = true;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_toward_zero;
+    };
+
+
+  template<>
+    struct numeric_limits<unsigned int>
+    {
+      static const bool is_specialized = true;
+
+      static unsigned int min() throw()
+      { return 0; }
+      static unsigned int max() throw()
+      { return 2147483647 * 2U + 1; }
+
+
+
+
+
+      static const int digits = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0));
+      static const int digits10 = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643 / 2136);
+
+
+
+      static const bool is_signed = false;
+      static const bool is_integer = true;
+      static const bool is_exact = true;
+      static const int radix = 2;
+      static unsigned int epsilon() throw()
+      { return 0; }
+      static unsigned int round_error() throw()
+      { return 0; }
+
+      static const int min_exponent = 0;
+      static const int min_exponent10 = 0;
+      static const int max_exponent = 0;
+      static const int max_exponent10 = 0;
+
+      static const bool has_infinity = false;
+      static const bool has_quiet_NaN = false;
+      static const bool has_signaling_NaN = false;
+      static const float_denorm_style has_denorm = denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static unsigned int infinity() throw()
+      { return static_cast<unsigned int>(0); }
+      static unsigned int quiet_NaN() throw()
+      { return static_cast<unsigned int>(0); }
+      static unsigned int signaling_NaN() throw()
+      { return static_cast<unsigned int>(0); }
+      static unsigned int denorm_min() throw()
+      { return static_cast<unsigned int>(0); }
+
+      static const bool is_iec559 = false;
+      static const bool is_bounded = true;
+      static const bool is_modulo = true;
+
+      static const bool traps = true;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_toward_zero;
+    };
+
+
+  template<>
+    struct numeric_limits<long>
+    {
+      static const bool is_specialized = true;
+
+      static long min() throw()
+      { return -2147483647L - 1; }
+      static long max() throw()
+      { return 2147483647L; }
+
+
+
+
+
+      static const int digits = (sizeof(long) * 8 - ((long)(-1) < 0));
+      static const int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643 / 2136);
+
+
+
+      static const bool is_signed = true;
+      static const bool is_integer = true;
+      static const bool is_exact = true;
+      static const int radix = 2;
+      static long epsilon() throw()
+      { return 0; }
+      static long round_error() throw()
+      { return 0; }
+
+      static const int min_exponent = 0;
+      static const int min_exponent10 = 0;
+      static const int max_exponent = 0;
+      static const int max_exponent10 = 0;
+
+      static const bool has_infinity = false;
+      static const bool has_quiet_NaN = false;
+      static const bool has_signaling_NaN = false;
+      static const float_denorm_style has_denorm = denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static long infinity() throw()
+      { return static_cast<long>(0); }
+      static long quiet_NaN() throw()
+      { return static_cast<long>(0); }
+      static long signaling_NaN() throw()
+      { return static_cast<long>(0); }
+      static long denorm_min() throw()
+      { return static_cast<long>(0); }
+
+      static const bool is_iec559 = false;
+      static const bool is_bounded = true;
+      static const bool is_modulo = true;
+
+      static const bool traps = true;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_toward_zero;
+    };
+
+
+  template<>
+    struct numeric_limits<unsigned long>
+    {
+      static const bool is_specialized = true;
+
+      static unsigned long min() throw()
+      { return 0; }
+      static unsigned long max() throw()
+      { return 2147483647L * 2UL + 1; }
+
+
+
+
+
+      static const int digits = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0));
+      static const int digits10 = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643 / 2136);
+
+
+
+      static const bool is_signed = false;
+      static const bool is_integer = true;
+      static const bool is_exact = true;
+      static const int radix = 2;
+      static unsigned long epsilon() throw()
+      { return 0; }
+      static unsigned long round_error() throw()
+      { return 0; }
+
+      static const int min_exponent = 0;
+      static const int min_exponent10 = 0;
+      static const int max_exponent = 0;
+      static const int max_exponent10 = 0;
+
+      static const bool has_infinity = false;
+      static const bool has_quiet_NaN = false;
+      static const bool has_signaling_NaN = false;
+      static const float_denorm_style has_denorm = denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static unsigned long infinity() throw()
+      { return static_cast<unsigned long>(0); }
+      static unsigned long quiet_NaN() throw()
+      { return static_cast<unsigned long>(0); }
+      static unsigned long signaling_NaN() throw()
+      { return static_cast<unsigned long>(0); }
+      static unsigned long denorm_min() throw()
+      { return static_cast<unsigned long>(0); }
+
+      static const bool is_iec559 = false;
+      static const bool is_bounded = true;
+      static const bool is_modulo = true;
+
+      static const bool traps = true;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_toward_zero;
+    };
+
+
+  template<>
+    struct numeric_limits<long long>
+    {
+      static const bool is_specialized = true;
+
+      static long long min() throw()
+      { return -9223372036854775807LL - 1; }
+      static long long max() throw()
+      { return 9223372036854775807LL; }
+
+
+
+
+
+      static const int digits = (sizeof(long long) * 8 - ((long long)(-1) < 0));
+      static const int digits10 = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643 / 2136);
+
+
+
+      static const bool is_signed = true;
+      static const bool is_integer = true;
+      static const bool is_exact = true;
+      static const int radix = 2;
+      static long long epsilon() throw()
+      { return 0; }
+      static long long round_error() throw()
+      { return 0; }
+
+      static const int min_exponent = 0;
+      static const int min_exponent10 = 0;
+      static const int max_exponent = 0;
+      static const int max_exponent10 = 0;
+
+      static const bool has_infinity = false;
+      static const bool has_quiet_NaN = false;
+      static const bool has_signaling_NaN = false;
+      static const float_denorm_style has_denorm = denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static long long infinity() throw()
+      { return static_cast<long long>(0); }
+      static long long quiet_NaN() throw()
+      { return static_cast<long long>(0); }
+      static long long signaling_NaN() throw()
+      { return static_cast<long long>(0); }
+      static long long denorm_min() throw()
+      { return static_cast<long long>(0); }
+
+      static const bool is_iec559 = false;
+      static const bool is_bounded = true;
+      static const bool is_modulo = true;
+
+      static const bool traps = true;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_toward_zero;
+    };
+
+
+  template<>
+    struct numeric_limits<unsigned long long>
+    {
+      static const bool is_specialized = true;
+
+      static unsigned long long min() throw()
+      { return 0; }
+      static unsigned long long max() throw()
+      { return 9223372036854775807LL * 2ULL + 1; }
+
+
+
+
+
+      static const int digits = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0));
+      static const int digits10 = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643 / 2136);
+
+
+
+      static const bool is_signed = false;
+      static const bool is_integer = true;
+      static const bool is_exact = true;
+      static const int radix = 2;
+      static unsigned long long epsilon() throw()
+      { return 0; }
+      static unsigned long long round_error() throw()
+      { return 0; }
+
+      static const int min_exponent = 0;
+      static const int min_exponent10 = 0;
+      static const int max_exponent = 0;
+      static const int max_exponent10 = 0;
+
+      static const bool has_infinity = false;
+      static const bool has_quiet_NaN = false;
+      static const bool has_signaling_NaN = false;
+      static const float_denorm_style has_denorm = denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static unsigned long long infinity() throw()
+      { return static_cast<unsigned long long>(0); }
+      static unsigned long long quiet_NaN() throw()
+      { return static_cast<unsigned long long>(0); }
+      static unsigned long long signaling_NaN() throw()
+      { return static_cast<unsigned long long>(0); }
+      static unsigned long long denorm_min() throw()
+      { return static_cast<unsigned long long>(0); }
+
+      static const bool is_iec559 = false;
+      static const bool is_bounded = true;
+      static const bool is_modulo = true;
+
+      static const bool traps = true;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_toward_zero;
+    };
+
+
+  template<>
+    struct numeric_limits<float>
+    {
+      static const bool is_specialized = true;
+
+      static float min() throw()
+      { return 1.1754943508222875e-38F; }
+      static float max() throw()
+      { return 3.4028234663852886e+38F; }
+
+
+
+
+
+      static const int digits = 24;
+      static const int digits10 = 6;
+
+
+
+
+      static const bool is_signed = true;
+      static const bool is_integer = false;
+      static const bool is_exact = false;
+      static const int radix = 2;
+      static float epsilon() throw()
+      { return 1.1920928955078125e-7F; }
+      static float round_error() throw()
+      { return 0.5F; }
+
+      static const int min_exponent = (-125);
+      static const int min_exponent10 = (-37);
+      static const int max_exponent = 128;
+      static const int max_exponent10 = 38;
+
+      static const bool has_infinity = 1;
+      static const bool has_quiet_NaN = 1;
+      static const bool has_signaling_NaN = has_quiet_NaN;
+      static const float_denorm_style has_denorm
+ = bool(1) ? denorm_present : denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static float infinity() throw()
+      { return __builtin_huge_valf (); }
+      static float quiet_NaN() throw()
+      { return __builtin_nanf (""); }
+      static float signaling_NaN() throw()
+      { return __builtin_nansf (""); }
+      static float denorm_min() throw()
+      { return 1.4012984643248171e-45F; }
+
+      static const bool is_iec559
+ = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
+      static const bool is_bounded = true;
+      static const bool is_modulo = false;
+
+      static const bool traps = false;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_to_nearest;
+    };
+
+#undef __glibcxx_float_has_denorm_loss
+#undef __glibcxx_float_traps
+#undef __glibcxx_float_tinyness_before
+
+
+  template<>
+    struct numeric_limits<double>
+    {
+      static const bool is_specialized = true;
+
+      static double min() throw()
+      { return ((double)2.2250738585072014e-308L); }
+      static double max() throw()
+      { return ((double)1.7976931348623157e+308L); }
+
+
+
+
+
+      static const int digits = 53;
+      static const int digits10 = 15;
+
+
+
+
+      static const bool is_signed = true;
+      static const bool is_integer = false;
+      static const bool is_exact = false;
+      static const int radix = 2;
+      static double epsilon() throw()
+      { return ((double)2.2204460492503131e-16L); }
+      static double round_error() throw()
+      { return 0.5; }
+
+      static const int min_exponent = (-1021);
+      static const int min_exponent10 = (-307);
+      static const int max_exponent = 1024;
+      static const int max_exponent10 = 308;
+
+      static const bool has_infinity = 1;
+      static const bool has_quiet_NaN = 1;
+      static const bool has_signaling_NaN = has_quiet_NaN;
+      static const float_denorm_style has_denorm
+ = bool(1) ? denorm_present : denorm_absent;
+      static const bool has_denorm_loss = false;
+
+      static double infinity() throw()
+      { return __builtin_huge_val(); }
+      static double quiet_NaN() throw()
+      { return __builtin_nan (""); }
+      static double signaling_NaN() throw()
+      { return __builtin_nans (""); }
+      static double denorm_min() throw()
+      { return ((double)4.9406564584124654e-324L); }
+
+      static const bool is_iec559
+ = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
+      static const bool is_bounded = true;
+      static const bool is_modulo = false;
+
+      static const bool traps = false;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_to_nearest;
+    };
+
+#undef __glibcxx_double_has_denorm_loss
+#undef __glibcxx_double_traps
+#undef __glibcxx_double_tinyness_before
+
+
+  template<>
+    struct numeric_limits<long double>
+    {
+      static const bool is_specialized = true;
+
+      static long double min() throw()
+      { return 2.2250738585072014e-308L; }
+      static long double max() throw()
+      { return 1.7976931348623157e+308L; }
+
+
+
+
+
+      static const int digits = 53;
+      static const int digits10 = 15;
+
+
+
+
+      static const bool is_signed = true;
+      static const bool is_integer = false;
+      static const bool is_exact = false;
+      static const int radix = 2;
+      static long double epsilon() throw()
+      { return 2.2204460492503131e-16L; }
+      static long double round_error() throw()
+      { return 0.5L; }
+
+      static const int min_exponent = (-1021);
+      static const int min_exponent10 = (-307);
+      static const int max_exponent = 1024;
+      static const int max_exponent10 = 308;
+
+      static const bool has_infinity = 1;
+      static const bool has_quiet_NaN = 1;
+      static const bool has_signaling_NaN = has_quiet_NaN;
+      static const float_denorm_style has_denorm
+ = bool(1) ? denorm_present : denorm_absent;
+      static const bool has_denorm_loss
+ = false;
+
+      static long double infinity() throw()
+      { return __builtin_huge_vall (); }
+      static long double quiet_NaN() throw()
+      { return __builtin_nanl (""); }
+      static long double signaling_NaN() throw()
+      { return __builtin_nansl (""); }
+      static long double denorm_min() throw()
+      { return 4.9406564584124654e-324L; }
+
+      static const bool is_iec559
+ = has_infinity && has_quiet_NaN && has_denorm == denorm_present;
+      static const bool is_bounded = true;
+      static const bool is_modulo = false;
+
+      static const bool traps = false;
+      static const bool tinyness_before = false;
+      static const float_round_style round_style = round_to_nearest;
+    };
+
+#undef __glibcxx_long_double_has_denorm_loss
+#undef __glibcxx_long_double_traps
+#undef __glibcxx_long_double_tinyness_before
+
+}
+
+#undef __glibcxx_signed
+#undef __glibcxx_min
+#undef __glibcxx_max
+#undef __glibcxx_digits
+#undef __glibcxx_digits10
+#undef __glibcxx_max_digits10
+# 30 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsalloc.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsalloc.h"
+#define jsalloc_h_ 
+
+
+
+
+namespace js {
+# 32 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsalloc.h"
+class SystemAllocPolicy
+{
+  public:
+    void *malloc_(size_t bytes) { return js_malloc(bytes); }
+    void *realloc_(void *p, size_t oldBytes, size_t bytes) { return js_realloc(p, bytes); }
+    void free_(void *p) { js_free(p); }
+    void reportAllocOverflow() const {}
+};
+# 50 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsalloc.h"
+class TempAllocPolicy
+{
+    JSContext *const cx;
+
+
+
+
+
+    __attribute__((visibility("default"))) void * onOutOfMemory(void *p, size_t nbytes);
+
+  public:
+    TempAllocPolicy(JSContext *cx) : cx(cx) {}
+
+    JSContext *context() const {
+        return cx;
+    }
+
+    void *malloc_(size_t bytes) {
+        void *p = js_malloc(bytes);
+        if ((__builtin_expect((!p), 0)))
+            p = onOutOfMemory(__null, bytes);
+        return p;
+    }
+
+    void *realloc_(void *p, size_t oldBytes, size_t bytes) {
+        void *p2 = js_realloc(p, bytes);
+        if ((__builtin_expect((!p2), 0)))
+            p2 = onOutOfMemory(p2, bytes);
+        return p2;
+    }
+
+    void free_(void *p) {
+        js_free(p);
+    }
+
+    __attribute__((visibility("default"))) void reportAllocOverflow() const;
+};
+
+}
+# 32 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h" 2
+# 1 "./../../dist/include/js/Vector.h" 1
+# 9 "./../../dist/include/js/Vector.h"
+#define jsvector_h_ 
+
+
+
+# 1 "./../../dist/include/js/TemplateLib.h" 1
+# 9 "./../../dist/include/js/TemplateLib.h"
+#define js_template_lib_h__ 
+# 20 "./../../dist/include/js/TemplateLib.h"
+namespace js {
+namespace tl {
+
+
+template <size_t i, size_t j> struct Min {
+    static const size_t result = i < j ? i : j;
+};
+template <size_t i, size_t j> struct Max {
+    static const size_t result = i > j ? i : j;
+};
+template <size_t i, size_t min, size_t max> struct Clamp {
+    static const size_t result = i < min ? min : (i > max ? max : i);
+};
+
+
+template <size_t x, size_t y> struct Pow {
+    static const size_t result = x * Pow<x, y - 1>::result;
+};
+template <size_t x> struct Pow<x,0> {
+    static const size_t result = 1;
+};
+
+
+template <size_t i> struct FloorLog2 {
+    static const size_t result = 1 + FloorLog2<i / 2>::result;
+};
+template <> struct FloorLog2<0> { };
+template <> struct FloorLog2<1> { static const size_t result = 0; };
+
+
+template <size_t i> struct CeilingLog2 {
+    static const size_t result = FloorLog2<2 * i - 1>::result;
+};
+
+
+template <size_t i> struct RoundUpPow2 {
+    static const size_t result = size_t(1) << CeilingLog2<i>::result;
+};
+template <> struct RoundUpPow2<0> {
+    static const size_t result = 1;
+};
+
+
+template <class T> struct BitSize {
+    static const size_t result = sizeof(T) * 8;
+};
+
+
+template <bool> struct StaticAssert {};
+template <> struct StaticAssert<true> { typedef int result; };
+
+
+template <class T, class U> struct IsSameType {
+    static const bool result = false;
+};
+template <class T> struct IsSameType<T,T> {
+    static const bool result = true;
+};
+
+
+
+
+
+template <size_t N> struct NBitMask {
+    typedef typename StaticAssert<N < BitSize<size_t>::result>::result _;
+    static const size_t result = (size_t(1) << N) - 1;
+};
+template <> struct NBitMask<BitSize<size_t>::result> {
+    static const size_t result = size_t(-1);
+};
+
+
+
+
+
+template <size_t N> struct MulOverflowMask {
+    static const size_t result =
+        ~NBitMask<BitSize<size_t>::result - CeilingLog2<N>::result>::result;
+};
+template <> struct MulOverflowMask<0> { };
+template <> struct MulOverflowMask<1> { static const size_t result = 0; };
+
+
+
+
+
+
+template <class T> struct UnsafeRangeSizeMask {
+
+
+
+
+    static const size_t result = MulOverflowMask<2 * sizeof(T)>::result;
+};
+
+
+template <class T> struct StripConst { typedef T result; };
+template <class T> struct StripConst<const T> { typedef T result; };
+
+
+
+
+
+template <class T> struct IsPodType { static const bool result = false; };
+template <> struct IsPodType<char> { static const bool result = true; };
+template <> struct IsPodType<signed char> { static const bool result = true; };
+template <> struct IsPodType<unsigned char> { static const bool result = true; };
+template <> struct IsPodType<short> { static const bool result = true; };
+template <> struct IsPodType<unsigned short> { static const bool result = true; };
+template <> struct IsPodType<int> { static const bool result = true; };
+template <> struct IsPodType<unsigned int> { static const bool result = true; };
+template <> struct IsPodType<long> { static const bool result = true; };
+template <> struct IsPodType<unsigned long> { static const bool result = true; };
+template <> struct IsPodType<long long> { static const bool result = true; };
+template <> struct IsPodType<unsigned long long> { static const bool result = true; };
+template <> struct IsPodType<bool> { static const bool result = true; };
+template <> struct IsPodType<float> { static const bool result = true; };
+template <> struct IsPodType<double> { static const bool result = true; };
+template <> struct IsPodType<wchar_t> { static const bool result = true; };
+template <typename T> struct IsPodType<T *> { static const bool result = true; };
+
+template <bool cond, typename T, T v1, T v2> struct If { static const T result = v1; };
+template <typename T, T v1, T v2> struct If<false, T, v1, v2> { static const T result = v2; };
+
+
+
+
+template <class T> struct IsRelocatableHeapType { static const bool result = true; };
+
+}
+}
+# 14 "./../../dist/include/js/Vector.h" 2
+# 1 "./../../dist/include/js/Utility.h" 1
+# 15 "./../../dist/include/js/Vector.h" 2
+
+
+
+
+
+
+
+namespace js {
+
+class TempAllocPolicy;
+
+template <class T,
+          size_t MinInlineCapacity = 0,
+          class AllocPolicy = TempAllocPolicy>
+class Vector;
+
+
+
+
+
+template <class T, size_t N, class AP, bool IsPod>
+struct VectorImpl
+{
+
+    static inline void destroy(T *begin, T *end) {
+        for (T *p = begin; p != end; ++p)
+            p->~T();
+    }
+
+
+    static inline void initialize(T *begin, T *end) {
+        for (T *p = begin; p != end; ++p)
+            new(p) T();
+    }
+
+
+
+
+
+    template <class U>
+    static inline void copyConstruct(T *dst, const U *srcbeg, const U *srcend) {
+        for (const U *p = srcbeg; p != srcend; ++p, ++dst)
+            new(dst) T(*p);
+    }
+
+
+
+
+
+    template <class U>
+    static inline void moveConstruct(T *dst, const U *srcbeg, const U *srcend) {
+        for (const U *p = srcbeg; p != srcend; ++p, ++dst)
+            new(dst) T(Move(*p));
+    }
+
+
+
+
+
+    template <class U>
+    static inline void copyConstructN(T *dst, size_t n, const U &u) {
+        for (T *end = dst + n; dst != end; ++dst)
+            new(dst) T(u);
+    }
+
+
+
+
+
+
+
+    static inline bool growTo(Vector<T,N,AP> &v, size_t newcap) {
+        do { } while(0);
+        T *newbuf = reinterpret_cast<T *>(v.malloc_(newcap * sizeof(T)));
+        if (!newbuf)
+            return false;
+        for (T *dst = newbuf, *src = v.beginNoCheck(); src != v.endNoCheck(); ++dst, ++src)
+            new(dst) T(Move(*src));
+        VectorImpl::destroy(v.beginNoCheck(), v.endNoCheck());
+        v.free_(v.mBegin);
+        v.mBegin = newbuf;
+
+        v.mCapacity = newcap;
+        return true;
+    }
+};
+
+
+
+
+
+
+template <class T, size_t N, class AP>
+struct VectorImpl<T, N, AP, true>
+{
+    static inline void destroy(T *, T *) {}
+
+    static inline void initialize(T *begin, T *end) {
+# 121 "./../../dist/include/js/Vector.h"
+        for (T *p = begin; p != end; ++p)
+            new(p) T();
+    }
+
+    template <class U>
+    static inline void copyConstruct(T *dst, const U *srcbeg, const U *srcend) {
+
+
+
+
+
+
+
+        for (const U *p = srcbeg; p != srcend; ++p, ++dst)
+            *dst = *p;
+    }
+
+    template <class U>
+    static inline void moveConstruct(T *dst, const U *srcbeg, const U *srcend) {
+        copyConstruct(dst, srcbeg, srcend);
+    }
+
+    static inline void copyConstructN(T *dst, size_t n, const T &t) {
+        for (T *p = dst, *end = dst + n; p != end; ++p)
+            *p = t;
+    }
+
+    static inline bool growTo(Vector<T,N,AP> &v, size_t newcap) {
+        do { } while(0);
+        size_t bytes = sizeof(T) * newcap;
+        size_t oldBytes = sizeof(T) * v.mCapacity;
+        T *newbuf = reinterpret_cast<T *>(v.realloc_(v.mBegin, oldBytes, bytes));
+        if (!newbuf)
+            return false;
+        v.mBegin = newbuf;
+
+        v.mCapacity = newcap;
+        return true;
+    }
+};
+# 180 "./../../dist/include/js/Vector.h"
+template <class T, size_t N, class AllocPolicy>
+class Vector : private AllocPolicy
+{
+    typedef typename tl::StaticAssert<tl::IsRelocatableHeapType<T>::result>::result _;
+
+
+
+    static const bool sElemIsPod = tl::IsPodType<T>::result;
+    typedef VectorImpl<T, N, AllocPolicy, sElemIsPod> Impl;
+    friend struct VectorImpl<T, N, AllocPolicy, sElemIsPod>;
+
+    bool calculateNewCapacity(size_t curLength, size_t lengthInc, size_t &newCap);
+    bool growStorageBy(size_t lengthInc);
+    bool growHeapStorageBy(size_t lengthInc);
+    bool convertToHeapStorage(size_t lengthInc);
+
+    template <bool InitNewElems> inline bool growByImpl(size_t inc);
+
+
+
+    static const int sMaxInlineBytes = 1024;
+# 213 "./../../dist/include/js/Vector.h"
+    template <int M, int Dummy>
+    struct ElemSize {
+        static const size_t result = sizeof(T);
+    };
+    template <int Dummy>
+    struct ElemSize<0, Dummy> {
+        static const size_t result = 1;
+    };
+
+    static const size_t sInlineCapacity =
+        tl::Min<N, sMaxInlineBytes / ElemSize<N, 0>::result>::result;
+
+
+    static const size_t sInlineBytes =
+        tl::Max<1, sInlineCapacity * ElemSize<N, 0>::result>::result;
+# 238 "./../../dist/include/js/Vector.h"
+    T *mBegin;
+    size_t mLength;
+    size_t mCapacity;
+
+
+
+
+    AlignedStorage<sInlineBytes> storage;
+
+
+
+
+
+
+    Vector(const Vector &) ;
+    Vector &operator=(const Vector &) ;
+
+
+
+    bool usingInlineStorage() const {
+        return mBegin == (T *)storage.addr();
+    }
+
+    T *beginNoCheck() const {
+        return mBegin;
+    }
+
+    T *endNoCheck() {
+        return mBegin + mLength;
+    }
+
+    const T *endNoCheck() const {
+        return mBegin + mLength;
+    }
+# 282 "./../../dist/include/js/Vector.h"
+    template <class U> void internalAppend(U t);
+    void internalAppendN(const T &t, size_t n);
+    template <class U> void internalAppend(const U *begin, size_t length);
+    template <class U, size_t O, class BP> void internalAppend(const Vector<U,O,BP> &other);
+
+  public:
+    static const size_t sMaxInlineStorage = N;
+
+    typedef T ElementType;
+
+    Vector(AllocPolicy = AllocPolicy());
+    Vector(MoveRef<Vector>);
+    Vector &operator=(MoveRef<Vector>);
+    ~Vector();
+
+
+
+    const AllocPolicy &allocPolicy() const {
+        return *this;
+    }
+
+    AllocPolicy &allocPolicy() {
+        return *this;
+    }
+
+    enum { InlineLength = N };
+
+    size_t length() const {
+        return mLength;
+    }
+
+    bool empty() const {
+        return mLength == 0;
+    }
+
+    size_t capacity() const {
+        return mCapacity;
+    }
+
+    T *begin() {
+        do { } while(0);
+        return mBegin;
+    }
+
+    const T *begin() const {
+        do { } while(0);
+        return mBegin;
+    }
+
+    T *end() {
+        do { } while(0);
+        return mBegin + mLength;
+    }
+
+    const T *end() const {
+        do { } while(0);
+        return mBegin + mLength;
+    }
+
+    T &operator[](size_t i) {
+        do { } while(0);
+        return begin()[i];
+    }
+
+    const T &operator[](size_t i) const {
+        do { } while(0);
+        return begin()[i];
+    }
+
+    T &back() {
+        do { } while(0);
+        return *(end() - 1);
+    }
+
+    const T &back() const {
+        do { } while(0);
+        return *(end() - 1);
+    }
+
+    class Range {
+        friend class Vector;
+        T *cur, *end;
+        Range(T *cur, T *end) : cur(cur), end(end) {}
+      public:
+        Range() {}
+        bool empty() const { return cur == end; }
+        size_t remain() const { return end - cur; }
+        T &front() const { return *cur; }
+        void popFront() { do { } while(0); ++cur; }
+        T popCopyFront() { do { } while(0); return *cur++; }
+    };
+
+    Range all() {
+        return Range(begin(), end());
+    }
+
+
+
+
+    bool reserve(size_t capacity);
+
+
+
+
+
+    void shrinkBy(size_t incr);
+
+
+    bool growBy(size_t incr);
+
+
+    bool resize(size_t newLength);
+
+
+    bool growByUninitialized(size_t incr);
+    bool resizeUninitialized(size_t newLength);
+
+
+    void clear();
+
+
+    void clearAndFree();
+# 413 "./../../dist/include/js/Vector.h"
+    template <class U> bool append(U t);
+    bool appendN(const T &t, size_t n);
+    template <class U> bool append(const U *begin, const U *end);
+    template <class U> bool append(const U *begin, size_t length);
+    template <class U, size_t O, class BP> bool append(const Vector<U,O,BP> &other);
+
+
+
+
+
+    void infallibleAppend(const T &t) {
+        internalAppend(t);
+    }
+    void infallibleAppendN(const T &t, size_t n) {
+        internalAppendN(t, n);
+    }
+    template <class U> void infallibleAppend(const U *begin, const U *end) {
+        internalAppend(begin, PointerRangeSize(begin, end));
+    }
+    template <class U> void infallibleAppend(const U *begin, size_t length) {
+        internalAppend(begin, length);
+    }
+    template <class U, size_t O, class BP> void infallibleAppend(const Vector<U,O,BP> &other) {
+        internalAppend(other);
+    }
+
+    void popBack();
+
+    T popCopy();
+# 451 "./../../dist/include/js/Vector.h"
+    T *extractRawBuffer();
+
+
+
+
+
+
+    void replaceRawBuffer(T *p, size_t length);
+
+
+
+
+
+    bool insert(T *p, const T &val);
+
+
+
+
+
+    void erase(T *t);
+
+
+
+
+    size_t sizeOfExcludingThis(JSMallocSizeOfFun mallocSizeOf) const;
+
+
+
+
+
+    size_t sizeOfIncludingThis(JSMallocSizeOfFun mallocSizeOf) const;
+};
+
+
+#define REENTRANCY_GUARD_ET_AL ReentrancyGuard g(*this); JS_ASSERT_IF(usingInlineStorage(), mCapacity == sInlineCapacity); JS_ASSERT(reserved() <= mCapacity); JS_ASSERT(mLength <= reserved()); JS_ASSERT(mLength <= mCapacity)
+# 494 "./../../dist/include/js/Vector.h"
+template <class T, size_t N, class AllocPolicy>
+__attribute__((always_inline)) inline
+Vector<T,N,AllocPolicy>::Vector(AllocPolicy ap)
+  : AllocPolicy(ap), mBegin((T *)storage.addr()), mLength(0),
+    mCapacity(sInlineCapacity)
+
+
+
+{}
+
+
+template <class T, size_t N, class AllocPolicy>
+__attribute__((always_inline)) inline
+Vector<T, N, AllocPolicy>::Vector(MoveRef<Vector> rhs)
+    : AllocPolicy(rhs)
+{
+    mLength = rhs->mLength;
+    mCapacity = rhs->mCapacity;
+
+
+
+
+    if (rhs->usingInlineStorage()) {
+
+        mBegin = (T *)storage.addr();
+        Impl::moveConstruct(mBegin, rhs->beginNoCheck(), rhs->endNoCheck());
+
+
+
+
+    } else {
+
+
+
+
+        mBegin = rhs->mBegin;
+        rhs->mBegin = (T *) rhs->storage.addr();
+        rhs->mCapacity = sInlineCapacity;
+        rhs->mLength = 0;
+
+
+
+    }
+}
+
+
+template <class T, size_t N, class AP>
+__attribute__((always_inline)) inline
+Vector<T, N, AP> &
+Vector<T, N, AP>::operator=(MoveRef<Vector> rhs)
+{
+    this->~Vector();
+    new(this) Vector(rhs);
+    return *this;
+}
+
+template <class T, size_t N, class AP>
+__attribute__((always_inline)) inline
+Vector<T,N,AP>::~Vector()
+{
+    ReentrancyGuard g(*this); do { } while (0); do { } while(0); do { } while(0); do { } while(0);
+    Impl::destroy(beginNoCheck(), endNoCheck());
+    if (!usingInlineStorage())
+        this->free_(beginNoCheck());
+}
+
+
+
+
+
+template <class T, size_t N, class AP>
+
+inline bool
+Vector<T,N,AP>::calculateNewCapacity(size_t curLength, size_t lengthInc,
+                                     size_t &newCap)
+{
+    size_t newMinCap = curLength + lengthInc;
+
+
+
+
+
+    if (newMinCap < curLength ||
+        newMinCap & tl::MulOverflowMask<2 * sizeof(T)>::result) {
+        this->reportAllocOverflow();
+        return false;
+    }
+
+
+    newCap = RoundUpPow2(newMinCap);
+
+
+
+
+
+    if (newCap & tl::UnsafeRangeSizeMask<T>::result) {
+        this->reportAllocOverflow();
+        return false;
+    }
+    return true;
+}
+
+
+
+
+
+template <class T, size_t N, class AP>
+__attribute__((always_inline)) inline bool
+Vector<T,N,AP>::growHeapStorageBy(size_t lengthInc)
+{
+    do { } while(0);
+    size_t newCap;
+    return calculateNewCapacity(mLength, lengthInc, newCap) &&
+           Impl::growTo(*this, newCap);
+}
+
+
+
+
+
+
+template <class T, size_t N, class AP>
+inline bool
+Vector<T,N,AP>::convertToHeapStorage(size_t lengthInc)
+{
+    do { } while(0);
+    size_t newCap;
+    if (!calculateNewCapacity(mLength, lengthInc, newCap))
+        return false;
+
+
+    T *newBuf = reinterpret_cast<T *>(this->malloc_(newCap * sizeof(T)));
+    if (!newBuf)
+        return false;
+
+
+    Impl::moveConstruct(newBuf, beginNoCheck(), endNoCheck());
+    Impl::destroy(beginNoCheck(), endNoCheck());
+
+
+    mBegin = newBuf;
+
+    mCapacity = newCap;
+    return true;
+}
+
+template <class T, size_t N, class AP>
+__attribute__((noinline)) bool
+Vector<T,N,AP>::growStorageBy(size_t incr)
+{
+    do { } while(0);
+    return usingInlineStorage()
+         ? convertToHeapStorage(incr)
+         : growHeapStorageBy(incr);
+}
+
+template <class T, size_t N, class AP>
+inline bool
+Vector<T,N,AP>::reserve(size_t request)
+{
+    ReentrancyGuard g(*this); do { } while (0); do { } while(0); do { } while(0); do { } while(0);
+    if (request > mCapacity && !growStorageBy(request - mLength))
+        return false;
+
+
+
+
+
+
+
+    return true;
+}
+
+template <class T, size_t N, class AP>
+inline void
+Vector<T,N,AP>::shrinkBy(size_t incr)
+{
+    ReentrancyGuard g(*this); do { } while (0); do { } while(0); do { } while(0); do { } while(0);
+    do { } while(0);
+    Impl::destroy(endNoCheck() - incr, endNoCheck());
+    mLength -= incr;
+}
+
+template <class T, size_t N, class AP>
+template <bool InitNewElems>
+__attribute__((always_inline)) inline bool
+Vector<T,N,AP>::growByImpl(size_t incr)
+{
+    ReentrancyGuard g(*this); do { } while (0); do { } while(0); do { } while(0); do { } while(0);
+    if (incr > mCapacity - mLength && !growStorageBy(incr))
+        return false;
+
+    do { } while(0);
+    T *newend = endNoCheck() + incr;
+    if (InitNewElems)
+        Impl::initialize(endNoCheck(), newend);
+    mLength += incr;
+
+
+
+
+    return true;
+}
+
+template <class T, size_t N, class AP>
+__attribute__((always_inline)) inline bool
+Vector<T,N,AP>::growBy(size_t incr)
+{
+    return growByImpl<true>(incr);
+}
+
+template <class T, size_t N, class AP>
+__attribute__((always_inline)) inline bool
+Vector<T,N,AP>::growByUninitialized(size_t incr)
+{
+    return growByImpl<false>(incr);
+}
+
+template <class T, size_t N, class AP>
+
+inline bool
+Vector<T,N,AP>::resize(size_t newLength)
+{
+    size_t curLength = mLength;
+    if (newLength > curLength)
+        return growBy(newLength - curLength);
+    shrinkBy(curLength - newLength);
+    return true;
+}
+
+template <class T, size_t N, class AP>
+__attribute__((always_inline)) inline bool
+Vector<T,N,AP>::resizeUninitialized(size_t newLength)
+{
+    size_t curLength = mLength;
+    if (newLength > curLength)
+        return growByUninitialized(newLength - curLength);
+    shrinkBy(curLength - newLength);
+    return true;
+}
+
+template <class T, size_t N, class AP>
+inline void
+Vector<T,N,AP>::clear()
+{
+    ReentrancyGuard g(*this); do { } while (0); do { } while(0); do { } while(0); do { } while(0);
+    Impl::destroy(beginNoCheck(), endNoCheck());
+    mLength = 0;
+}
+
+template <class T, size_t N, class AP>
+inline void
+Vector<T,N,AP>::clearAndFree()
+{
+    clear();
+
+    if (usingInlineStorage())
+        return;
+
+    this->free_(beginNoCheck());
+    mBegin = (T *)storage.addr();
+    mCapacity = sInlineCapacity;
+
+
+
+}
+
+template <class T, size_t N, class AP>
+template <class U>
+__attribute__((always_inline)) inline bool
+Vector<T,N,AP>::append(U t)
+{
+    ReentrancyGuard g(*this); do { } while (0); do { } while(0); do { } while(0); do { } while(0);
+    if (mLength == mCapacity && !growStorageBy(1))
+        return false;
+
+
+
+
+
+    internalAppend(t);
+    return true;
+}
+
+template <class T, size_t N, class AP>
+template <class U>
+__attribute__((always_inline)) inline void
+Vector<T,N,AP>::internalAppend(U t)
+{
+    do { } while(0);
+    do { } while(0);
+    new(endNoCheck()) T(t);
+    ++mLength;
+}
+
+template <class T, size_t N, class AP>
+__attribute__((always_inline)) inline bool
+Vector<T,N,AP>::appendN(const T &t, size_t needed)
+{
+    ReentrancyGuard g(*this); do { } while (0); do { } while(0); do { } while(0); do { } while(0);
+    if (mLength + needed > mCapacity && !growStorageBy(needed))
+        return false;
+
+
+
+
+
+    internalAppendN(t, needed);
+    return true;
+}
+
+template <class T, size_t N, class AP>
+__attribute__((always_inline)) inline void
+Vector<T,N,AP>::internalAppendN(const T &t, size_t needed)
+{
+    do { } while(0);
+    do { } while(0);
+    Impl::copyConstructN(endNoCheck(), needed, t);
+    mLength += needed;
+}
+
+template <class T, size_t N, class AP>
+inline bool
+Vector<T,N,AP>::insert(T *p, const T &val)
+{
+    do { } while(0);
+    size_t pos = p - begin();
+    do { } while(0);
+    size_t oldLength = mLength;
+    if (pos == oldLength)
+        return append(val);
+    {
+        T oldBack = back();
+        if (!append(oldBack))
+            return false;
+    }
+    for (size_t i = oldLength; i > pos; --i)
+        (*this)[i] = (*this)[i - 1];
+    (*this)[pos] = val;
+    return true;
+}
+
+template<typename T, size_t N, class AP>
+inline void
+Vector<T,N,AP>::erase(T *it)
+{
+    do { } while(0);
+    while (it + 1 != end()) {
+        *it = *(it + 1);
+        ++it;
+    }
+    popBack();
+}
+
+template <class T, size_t N, class AP>
+template <class U>
+__attribute__((always_inline)) inline bool
+Vector<T,N,AP>::append(const U *insBegin, const U *insEnd)
+{
+    ReentrancyGuard g(*this); do { } while (0); do { } while(0); do { } while(0); do { } while(0);
+    size_t needed = PointerRangeSize(insBegin, insEnd);
+    if (mLength + needed > mCapacity && !growStorageBy(needed))
+        return false;
+
+
+
+
+
+    internalAppend(insBegin, needed);
+    return true;
+}
+
+template <class T, size_t N, class AP>
+template <class U>
+__attribute__((always_inline)) inline void
+Vector<T,N,AP>::internalAppend(const U *insBegin, size_t length)
+{
+    do { } while(0);
+    do { } while(0);
+    Impl::copyConstruct(endNoCheck(), insBegin, insBegin + length);
+    mLength += length;
+}
+
+template <class T, size_t N, class AP>
+template <class U, size_t O, class BP>
+inline bool
+Vector<T,N,AP>::append(const Vector<U,O,BP> &other)
+{
+    return append(other.begin(), other.end());
+}
+
+template <class T, size_t N, class AP>
+template <class U, size_t O, class BP>
+inline void
+Vector<T,N,AP>::internalAppend(const Vector<U,O,BP> &other)
+{
+    internalAppend(other.begin(), other.length());
+}
+
+template <class T, size_t N, class AP>
+template <class U>
+__attribute__((always_inline)) inline bool
+Vector<T,N,AP>::append(const U *insBegin, size_t length)
+{
+    return this->append(insBegin, insBegin + length);
+}
+
+template <class T, size_t N, class AP>
+__attribute__((always_inline)) inline void
+Vector<T,N,AP>::popBack()
+{
+    ReentrancyGuard g(*this); do { } while (0); do { } while(0); do { } while(0); do { } while(0);
+    do { } while(0);
+    --mLength;
+    endNoCheck()->~T();
+}
+
+template <class T, size_t N, class AP>
+__attribute__((always_inline)) inline T
+Vector<T,N,AP>::popCopy()
+{
+    T ret = back();
+    popBack();
+    return ret;
+}
+
+template <class T, size_t N, class AP>
+inline T *
+Vector<T,N,AP>::extractRawBuffer()
+{
+    T *ret;
+    if (usingInlineStorage()) {
+        ret = reinterpret_cast<T *>(this->malloc_(mLength * sizeof(T)));
+        if (!ret)
+            return __null;
+        Impl::copyConstruct(ret, beginNoCheck(), endNoCheck());
+        Impl::destroy(beginNoCheck(), endNoCheck());
+
+        mLength = 0;
+    } else {
+        ret = mBegin;
+        mBegin = (T *)storage.addr();
+        mLength = 0;
+        mCapacity = sInlineCapacity;
+
+
+
+    }
+    return ret;
+}
+
+template <class T, size_t N, class AP>
+inline void
+Vector<T,N,AP>::replaceRawBuffer(T *p, size_t length)
+{
+    ReentrancyGuard g(*this); do { } while (0); do { } while(0); do { } while(0); do { } while(0);
+
+
+    Impl::destroy(beginNoCheck(), endNoCheck());
+    if (!usingInlineStorage())
+        this->free_(beginNoCheck());
+
+
+    if (length <= sInlineCapacity) {
+
+
+
+
+
+        mBegin = (T *)storage.addr();
+        mLength = length;
+        mCapacity = sInlineCapacity;
+        Impl::moveConstruct(mBegin, p, p + length);
+        Impl::destroy(p, p + length);
+        this->free_(p);
+    } else {
+        mBegin = p;
+        mLength = length;
+        mCapacity = length;
+    }
+
+
+
+}
+
+template <class T, size_t N, class AP>
+inline size_t
+Vector<T,N,AP>::sizeOfExcludingThis(JSMallocSizeOfFun mallocSizeOf) const
+{
+    return usingInlineStorage() ? 0 : mallocSizeOf(beginNoCheck());
+}
+
+template <class T, size_t N, class AP>
+inline size_t
+Vector<T,N,AP>::sizeOfIncludingThis(JSMallocSizeOfFun mallocSizeOf) const
+{
+    return mallocSizeOf(this) + sizeOfExcludingThis(mallocSizeOf);
+}
+
+}
+# 33 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h" 2
+
+
+
+
+
+#define JSVAL_INT_BITS 32
+#define JSVAL_INT_MIN ((int32_t)0x80000000)
+#define JSVAL_INT_MAX ((int32_t)0x7fffffff)
+
+
+
+#define JS_Assert MOZ_Assert
+
+
+namespace JS {
+# 109 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+template<typename T> class AnchorPermitted;
+template<> class AnchorPermitted<JSObject *> { };
+template<> class AnchorPermitted<const JSObject *> { };
+template<> class AnchorPermitted<JSFunction *> { };
+template<> class AnchorPermitted<const JSFunction *> { };
+template<> class AnchorPermitted<JSString *> { };
+template<> class AnchorPermitted<const JSString *> { };
+template<> class AnchorPermitted<Value> { };
+template<> class AnchorPermitted<const JSScript *> { };
+template<> class AnchorPermitted<JSScript *> { };
+
+template<typename T>
+class Anchor: AnchorPermitted<T>
+{
+  public:
+    Anchor() { }
+    explicit Anchor(T t) { hold = t; }
+    inline ~Anchor();
+    T &get() { return hold; }
+    const T &get() const { return hold; }
+    void set(const T &t) { hold = t; }
+    void operator=(const T &t) { hold = t; }
+    void clear() { hold = 0; }
+  private:
+    T hold;
+    Anchor(const Anchor &) ;
+    const Anchor &operator=(const Anchor &) ;
+};
+
+
+template<typename T>
+inline Anchor<T>::~Anchor()
+{
+# 153 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+    asm volatile("":: "g" (hold) : "memory");
+}
+# 222 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+class Value
+{
+  public:
+
+
+
+
+
+
+
+    __attribute__((always_inline)) inline
+    void setNull() {
+        data.asBits = BUILD_JSVAL(JSVAL_TAG_NULL, 0).asBits;
+    }
+
+    __attribute__((always_inline)) inline
+    void setUndefined() {
+        data.asBits = BUILD_JSVAL(JSVAL_TAG_UNDEFINED, 0).asBits;
+    }
+
+    __attribute__((always_inline)) inline
+    void setInt32(int32_t i) {
+        data = INT32_TO_JSVAL_IMPL(i);
+    }
+
+    __attribute__((always_inline)) inline
+    int32_t &getInt32Ref() {
+        do { } while(0);
+        return data.s.payload.i32;
+    }
+
+    __attribute__((always_inline)) inline
+    void setDouble(double d) {
+        data = DOUBLE_TO_JSVAL_IMPL(d);
+    }
+
+    __attribute__((always_inline)) inline
+    double &getDoubleRef() {
+        do { } while(0);
+        return data.asDouble;
+    }
+
+    __attribute__((always_inline)) inline
+    void setString(JSString *str) {
+        do { } while(0);
+        data = STRING_TO_JSVAL_IMPL(str);
+    }
+
+    __attribute__((always_inline)) inline
+    void setString(const JS::Anchor<JSString *> &str) {
+        setString(str.get());
+    }
+
+    __attribute__((always_inline)) inline
+    void setObject(JSObject &obj) {
+        do { } while(0);
+        data = OBJECT_TO_JSVAL_IMPL(&obj);
+    }
+
+    __attribute__((always_inline)) inline
+    void setBoolean(bool b) {
+        data = BOOLEAN_TO_JSVAL_IMPL(b);
+    }
+
+    __attribute__((always_inline)) inline
+    void setMagic(JSWhyMagic why) {
+        data = MAGIC_TO_JSVAL_IMPL(why);
+    }
+
+    __attribute__((always_inline)) inline
+    bool setNumber(uint32_t ui) {
+        if (ui > ((int32_t)0x7fffffff)) {
+            setDouble((double)ui);
+            return false;
+        } else {
+            setInt32((int32_t)ui);
+            return true;
+        }
+    }
+
+    __attribute__((always_inline)) inline
+    bool setNumber(double d) {
+        int32_t i;
+        if (MOZ_DOUBLE_IS_INT32(d, &i)) {
+            setInt32(i);
+            return true;
+        } else {
+            setDouble(d);
+            return false;
+        }
+    }
+
+    __attribute__((always_inline)) inline
+    void setObjectOrNull(JSObject *arg) {
+        if (arg)
+            setObject(*arg);
+        else
+            setNull();
+    }
+
+    __attribute__((always_inline)) inline
+    void swap(Value &rhs) {
+        uint64_t tmp = rhs.data.asBits;
+        rhs.data.asBits = data.asBits;
+        data.asBits = tmp;
+    }
+
+
+
+    __attribute__((always_inline)) inline
+    bool isUndefined() const {
+        return JSVAL_IS_UNDEFINED_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isNull() const {
+        return JSVAL_IS_NULL_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isNullOrUndefined() const {
+        return isNull() || isUndefined();
+    }
+
+    __attribute__((always_inline)) inline
+    bool isInt32() const {
+        return JSVAL_IS_INT32_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isInt32(int32_t i32) const {
+        return JSVAL_IS_SPECIFIC_INT32_IMPL(data, i32);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isDouble() const {
+        return JSVAL_IS_DOUBLE_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isNumber() const {
+        return JSVAL_IS_NUMBER_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isString() const {
+        return JSVAL_IS_STRING_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isObject() const {
+        return JSVAL_IS_OBJECT_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isPrimitive() const {
+        return JSVAL_IS_PRIMITIVE_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isObjectOrNull() const {
+        return JSVAL_IS_OBJECT_OR_NULL_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isGCThing() const {
+        return JSVAL_IS_GCTHING_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isBoolean() const {
+        return JSVAL_IS_BOOLEAN_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isTrue() const {
+        return JSVAL_IS_SPECIFIC_BOOLEAN(data, true);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isFalse() const {
+        return JSVAL_IS_SPECIFIC_BOOLEAN(data, false);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isMagic() const {
+        return JSVAL_IS_MAGIC_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isMagic(JSWhyMagic why) const {
+        do { } while (0);
+        return JSVAL_IS_MAGIC_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool isMarkable() const {
+        return JSVAL_IS_TRACEABLE_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    JSGCTraceKind gcKind() const {
+        do { } while(0);
+        return JSGCTraceKind(JSVAL_TRACE_KIND_IMPL(data));
+    }
+
+    __attribute__((always_inline)) inline
+    JSWhyMagic whyMagic() const {
+        do { } while(0);
+        return data.s.payload.why;
+    }
+
+
+
+    __attribute__((always_inline)) inline
+    bool operator==(const Value &rhs) const {
+        return data.asBits == rhs.data.asBits;
+    }
+
+    __attribute__((always_inline)) inline
+    bool operator!=(const Value &rhs) const {
+        return data.asBits != rhs.data.asBits;
+    }
+
+    friend inline bool SameType(const Value &lhs, const Value &rhs);
+
+
+
+    __attribute__((always_inline)) inline
+    int32_t toInt32() const {
+        do { } while(0);
+        return JSVAL_TO_INT32_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    double toDouble() const {
+        do { } while(0);
+        return data.asDouble;
+    }
+
+    __attribute__((always_inline)) inline
+    double toNumber() const {
+        do { } while(0);
+        return isDouble() ? toDouble() : double(toInt32());
+    }
+
+    __attribute__((always_inline)) inline
+    JSString *toString() const {
+        do { } while(0);
+        return JSVAL_TO_STRING_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    JSObject &toObject() const {
+        do { } while(0);
+        return *JSVAL_TO_OBJECT_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    JSObject *toObjectOrNull() const {
+        do { } while(0);
+        return JSVAL_TO_OBJECT_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    void *toGCThing() const {
+        do { } while(0);
+        return JSVAL_TO_GCTHING_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    bool toBoolean() const {
+        do { } while(0);
+        return JSVAL_TO_BOOLEAN_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    uint32_t payloadAsRawUint32() const {
+        do { } while(0);
+        return data.s.payload.u32;
+    }
+
+    __attribute__((always_inline)) inline
+    uint64_t asRawBits() const {
+        return data.asBits;
+    }
+
+    __attribute__((always_inline)) inline
+    JSValueType extractNonDoubleType() const {
+        return JSVAL_EXTRACT_NON_DOUBLE_TYPE_IMPL(data);
+    }
+# 523 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+    __attribute__((always_inline)) inline
+    void setPrivate(void *ptr) {
+        data = PRIVATE_PTR_TO_JSVAL_IMPL(ptr);
+    }
+
+    __attribute__((always_inline)) inline
+    void *toPrivate() const {
+        do { } while(0);
+        return JSVAL_TO_PRIVATE_PTR_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    void setPrivateUint32(uint32_t ui) {
+        data = PRIVATE_UINT32_TO_JSVAL_IMPL(ui);
+    }
+
+    __attribute__((always_inline)) inline
+    uint32_t toPrivateUint32() const {
+        do { } while(0);
+        return JSVAL_TO_PRIVATE_UINT32_IMPL(data);
+    }
+
+    __attribute__((always_inline)) inline
+    uint32_t &getPrivateUint32Ref() {
+        do { } while(0);
+        return data.s.payload.u32;
+    }
+
+
+
+
+
+
+
+    __attribute__((always_inline)) inline
+    void setUnmarkedPtr(void *ptr) {
+        data.asPtr = ptr;
+    }
+
+    __attribute__((always_inline)) inline
+    void *toUnmarkedPtr() const {
+        return data.asPtr;
+    }
+
+    const size_t *payloadWord() const {
+
+        return &data.s.payload.word;
+
+
+
+    }
+
+    const uintptr_t *payloadUIntPtr() const {
+
+        return &data.s.payload.uintptr;
+
+
+
+    }
+
+
+
+
+
+
+
+  private:
+
+
+    jsval_layout data;
+
+  private:
+    void staticAssertions() {
+        typedef int moz_static_assert8[(sizeof(JSValueType) == 1) ? 1 : -1];
+        typedef int moz_static_assert9[(sizeof(JSValueTag) == 4) ? 1 : -1];
+        typedef int moz_static_assert10[(sizeof(JSBool) == 4) ? 1 : -1];
+        typedef int moz_static_assert11[(sizeof(JSWhyMagic) <= 4) ? 1 : -1];
+        typedef int moz_static_assert12[(sizeof(Value) == 8) ? 1 : -1];
+    }
+
+    friend jsval_layout (::JSVAL_TO_IMPL)(Value);
+    friend Value (::IMPL_TO_JSVAL)(jsval_layout l);
+};
+
+inline bool
+IsPoisonedValue(const Value &v)
+{
+    if (v.isString())
+        return IsPoisonedPtr(v.toString());
+    if (v.isObject())
+        return IsPoisonedPtr(&v.toObject());
+    return false;
+}
+
+
+
+static __attribute__((always_inline)) inline Value
+NullValue()
+{
+    Value v;
+    v.setNull();
+    return v;
+}
+
+static __attribute__((always_inline)) inline Value
+UndefinedValue()
+{
+    Value v;
+    v.setUndefined();
+    return v;
+}
+
+static __attribute__((always_inline)) inline Value
+Int32Value(int32_t i32)
+{
+    Value v;
+    v.setInt32(i32);
+    return v;
+}
+
+static __attribute__((always_inline)) inline Value
+DoubleValue(double dbl)
+{
+    Value v;
+    v.setDouble(dbl);
+    return v;
+}
+
+static __attribute__((always_inline)) inline Value
+StringValue(JSString *str)
+{
+    Value v;
+    v.setString(str);
+    return v;
+}
+
+static __attribute__((always_inline)) inline Value
+BooleanValue(bool boo)
+{
+    Value v;
+    v.setBoolean(boo);
+    return v;
+}
+
+static __attribute__((always_inline)) inline Value
+ObjectValue(JSObject &obj)
+{
+    Value v;
+    v.setObject(obj);
+    return v;
+}
+
+static __attribute__((always_inline)) inline Value
+MagicValue(JSWhyMagic why)
+{
+    Value v;
+    v.setMagic(why);
+    return v;
+}
+
+static __attribute__((always_inline)) inline Value
+NumberValue(float f)
+{
+    Value v;
+    v.setNumber(f);
+    return v;
+}
+
+static __attribute__((always_inline)) inline Value
+NumberValue(double dbl)
+{
+    Value v;
+    v.setNumber(dbl);
+    return v;
+}
+
+static __attribute__((always_inline)) inline Value
+NumberValue(int8_t i)
+{
+    return Int32Value(i);
+}
+
+static __attribute__((always_inline)) inline Value
+NumberValue(uint8_t i)
+{
+    return Int32Value(i);
+}
+
+static __attribute__((always_inline)) inline Value
+NumberValue(int16_t i)
+{
+    return Int32Value(i);
+}
+
+static __attribute__((always_inline)) inline Value
+NumberValue(uint16_t i)
+{
+    return Int32Value(i);
+}
+
+static __attribute__((always_inline)) inline Value
+NumberValue(int32_t i)
+{
+    return Int32Value(i);
+}
+
+static __attribute__((always_inline)) inline Value
+NumberValue(uint32_t i)
+{
+    Value v;
+    v.setNumber(i);
+    return v;
+}
+
+namespace detail {
+
+template <bool Signed>
+class MakeNumberValue
+{
+  public:
+    template<typename T>
+    static inline Value create(const T t)
+    {
+        Value v;
+        if (((int32_t)0x80000000) <= t && t <= ((int32_t)0x7fffffff))
+            v.setInt32(int32_t(t));
+        else
+            v.setDouble(double(t));
+        return v;
+    }
+};
+
+template <>
+class MakeNumberValue<false>
+{
+  public:
+    template<typename T>
+    static inline Value create(const T t)
+    {
+        Value v;
+        if (t <= ((int32_t)0x7fffffff))
+            v.setInt32(int32_t(t));
+        else
+            v.setDouble(double(t));
+        return v;
+    }
+};
+
+}
+
+template <typename T>
+static __attribute__((always_inline)) inline Value
+NumberValue(const T t)
+{
+    do { } while(0);
+    return detail::MakeNumberValue<std::numeric_limits<T>::is_signed>::create(t);
+}
+
+static __attribute__((always_inline)) inline Value
+ObjectOrNullValue(JSObject *obj)
+{
+    Value v;
+    v.setObjectOrNull(obj);
+    return v;
+}
+
+static __attribute__((always_inline)) inline Value
+PrivateValue(void *ptr)
+{
+    Value v;
+    v.setPrivate(ptr);
+    return v;
+}
+
+static __attribute__((always_inline)) inline Value
+PrivateUint32Value(uint32_t ui)
+{
+    Value v;
+    v.setPrivateUint32(ui);
+    return v;
+}
+
+__attribute__((always_inline)) inline bool
+SameType(const Value &lhs, const Value &rhs)
+{
+    return JSVAL_SAME_TYPE_IMPL(lhs.data, rhs.data);
+}
+
+template <> struct RootMethods<const Value>
+{
+    static Value initial() { return UndefinedValue(); }
+    static ThingRootKind kind() { return THING_ROOT_VALUE; }
+    static bool poisoned(const Value &v) { return IsPoisonedValue(v); }
+};
+
+template <> struct RootMethods<Value>
+{
+    static Value initial() { return UndefinedValue(); }
+    static ThingRootKind kind() { return THING_ROOT_VALUE; }
+    static bool poisoned(const Value &v) { return IsPoisonedValue(v); }
+};
+# 864 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define CHECK_REQUEST(cx) ((void) 0)
+# 875 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+inline void AssertArgumentsAreSane(JSContext *cx, const Value &v) {
+
+}
+
+
+class __attribute__((visibility("default"))) AutoGCRooter {
+  public:
+    AutoGCRooter(JSContext *cx, ptrdiff_t tag);
+
+    ~AutoGCRooter() {
+        do { } while(0);
+        *stackTop = down;
+    }
+
+
+    inline void trace(JSTracer *trc);
+    static void traceAll(JSTracer *trc);
+
+  protected:
+    AutoGCRooter * const down;
+# 903 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+    ptrdiff_t tag;
+
+    enum {
+        JSVAL = -1,
+        VALARRAY = -2,
+        PARSER = -3,
+        SHAPEVECTOR = -4,
+        ENUMERATOR = -5,
+        IDARRAY = -6,
+        DESCRIPTORS = -7,
+        NAMESPACES = -8,
+        XML = -9,
+        OBJECT = -10,
+        ID = -11,
+        VALVECTOR = -12,
+        DESCRIPTOR = -13,
+        STRING = -14,
+        IDVECTOR = -15,
+        OBJVECTOR = -16,
+        SCRIPTVECTOR =-17,
+        PROPDESC = -18,
+        SHAPERANGE = -19,
+        STACKSHAPE = -20,
+        STACKBASESHAPE=-21,
+        BINDINGS = -22,
+        GETTERSETTER =-23,
+        REGEXPSTATICS=-24,
+        HASHABLEVALUE=-25
+    };
+
+  private:
+    AutoGCRooter ** const stackTop;
+
+
+    AutoGCRooter(AutoGCRooter &ida) ;
+    void operator=(AutoGCRooter &ida) ;
+};
+
+class AutoValueRooter : private AutoGCRooter
+{
+  public:
+    explicit AutoValueRooter(JSContext *cx
+                             )
+      : AutoGCRooter(cx, JSVAL), val(NullValue())
+    {
+        do { } while (0);
+    }
+
+    AutoValueRooter(JSContext *cx, const Value &v
+                    )
+      : AutoGCRooter(cx, JSVAL), val(v)
+    {
+        do { } while (0);
+    }
+
+
+
+
+
+
+
+    void set(Value v) {
+        do { } while(0);
+        val = v;
+    }
+
+    const Value &value() const {
+        do { } while(0);
+        return val;
+    }
+
+    Value *addr() {
+        do { } while(0);
+        return &val;
+    }
+
+    const Value &jsval_value() const {
+        do { } while(0);
+        return val;
+    }
+
+    Value *jsval_addr() {
+        do { } while(0);
+        return &val;
+    }
+
+    friend void AutoGCRooter::trace(JSTracer *trc);
+
+  private:
+    Value val;
+   
+};
+
+class AutoObjectRooter : private AutoGCRooter {
+  public:
+    AutoObjectRooter(JSContext *cx, JSObject *obj = __null
+                     )
+      : AutoGCRooter(cx, OBJECT), obj(obj)
+    {
+        do { } while (0);
+    }
+
+    void setObject(JSObject *obj) {
+        this->obj = obj;
+    }
+
+    JSObject * object() const {
+        return obj;
+    }
+
+    JSObject ** addr() {
+        return &obj;
+    }
+
+    friend void AutoGCRooter::trace(JSTracer *trc);
+
+  private:
+    JSObject *obj;
+   
+};
+
+class AutoStringRooter : private AutoGCRooter {
+  public:
+    AutoStringRooter(JSContext *cx, JSString *str = __null
+                     )
+      : AutoGCRooter(cx, STRING), str(str)
+    {
+        do { } while (0);
+    }
+
+    void setString(JSString *str) {
+        this->str = str;
+    }
+
+    JSString * string() const {
+        return str;
+    }
+
+    JSString ** addr() {
+        return &str;
+    }
+
+    friend void AutoGCRooter::trace(JSTracer *trc);
+
+  private:
+    JSString *str;
+   
+};
+
+class AutoArrayRooter : private AutoGCRooter {
+  public:
+    AutoArrayRooter(JSContext *cx, size_t len, Value *vec
+                    )
+      : AutoGCRooter(cx, len), array(vec), skip(cx, array, len)
+    {
+        do { } while (0);
+        do { } while(0);
+    }
+
+    void changeLength(size_t newLength) {
+        tag = ptrdiff_t(newLength);
+        do { } while(0);
+    }
+
+    void changeArray(Value *newArray, size_t newLength) {
+        changeLength(newLength);
+        array = newArray;
+    }
+
+    Value *array;
+
+    friend void AutoGCRooter::trace(JSTracer *trc);
+
+  private:
+   
+
+    SkipRoot skip;
+};
+
+
+class AutoEnumStateRooter : private AutoGCRooter
+{
+  public:
+    AutoEnumStateRooter(JSContext *cx, JSObject *obj
+                        )
+      : AutoGCRooter(cx, ENUMERATOR), obj(obj), stateValue(), context(cx)
+    {
+        do { } while (0);
+        do { } while(0);
+    }
+
+    ~AutoEnumStateRooter();
+
+    friend void AutoGCRooter::trace(JSTracer *trc);
+
+    const Value &state() const { return stateValue; }
+    Value *addr() { return &stateValue; }
+
+  protected:
+    void trace(JSTracer *trc);
+
+    JSObject *obj;
+
+  private:
+    Value stateValue;
+    JSContext *context;
+   
+};
+
+template<class T>
+class AutoVectorRooter : protected AutoGCRooter
+{
+  public:
+    explicit AutoVectorRooter(JSContext *cx, ptrdiff_t tag
+                              )
+      : AutoGCRooter(cx, tag), vector(cx), vectorRoot(cx, &vector)
+    {
+        do { } while (0);
+    }
+
+    size_t length() const { return vector.length(); }
+
+    bool append(const T &v) { return vector.append(v); }
+
+
+    void infallibleAppend(const T &v) { vector.infallibleAppend(v); }
+
+    void popBack() { vector.popBack(); }
+    T popCopy() { return vector.popCopy(); }
+
+    bool growBy(size_t inc) {
+        size_t oldLength = vector.length();
+        if (!vector.growByUninitialized(inc))
+            return false;
+        makeRangeGCSafe(oldLength);
+        return true;
+    }
+
+    bool resize(size_t newLength) {
+        size_t oldLength = vector.length();
+        if (newLength <= oldLength) {
+            vector.shrinkBy(oldLength - newLength);
+            return true;
+        }
+        if (!vector.growByUninitialized(newLength - oldLength))
+            return false;
+        makeRangeGCSafe(oldLength);
+        return true;
+    }
+
+    void clear() { vector.clear(); }
+
+    bool reserve(size_t newLength) {
+        return vector.reserve(newLength);
+    }
+
+    T &operator[](size_t i) { return vector[i]; }
+    const T &operator[](size_t i) const { return vector[i]; }
+
+    const T *begin() const { return vector.begin(); }
+    T *begin() { return vector.begin(); }
+
+    const T *end() const { return vector.end(); }
+    T *end() { return vector.end(); }
+
+    const T &back() const { return vector.back(); }
+
+    friend void AutoGCRooter::trace(JSTracer *trc);
+
+  private:
+    void makeRangeGCSafe(size_t oldLength) {
+        T *t = vector.begin() + oldLength;
+        for (size_t i = oldLength; i < vector.length(); ++i, ++t)
+            memset(t, 0, sizeof(T));
+    }
+
+    typedef js::Vector<T, 8> VectorImpl;
+    VectorImpl vector;
+
+
+    SkipRoot vectorRoot;
+
+   
+};
+
+class AutoValueVector : public AutoVectorRooter<Value>
+{
+  public:
+    explicit AutoValueVector(JSContext *cx
+                             )
+        : AutoVectorRooter<Value>(cx, VALVECTOR)
+    {
+        do { } while (0);
+    }
+
+   
+};
+
+class AutoIdVector : public AutoVectorRooter<jsid>
+{
+  public:
+    explicit AutoIdVector(JSContext *cx
+                          )
+        : AutoVectorRooter<jsid>(cx, IDVECTOR)
+    {
+        do { } while (0);
+    }
+
+   
+};
+
+class AutoScriptVector : public AutoVectorRooter<JSScript *>
+{
+  public:
+    explicit AutoScriptVector(JSContext *cx
+                              )
+        : AutoVectorRooter<JSScript *>(cx, SCRIPTVECTOR)
+    {
+        do { } while (0);
+    }
+
+   
+};
+
+}
+# 1236 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef JS::Value jsval;
+
+static __attribute__((always_inline)) inline jsval_layout
+JSVAL_TO_IMPL(jsval v)
+{
+    return v.data;
+}
+
+static __attribute__((always_inline)) inline jsval
+IMPL_TO_JSVAL(jsval_layout l)
+{
+    JS::Value v;
+    v.data = l;
+    return v;
+}
+# 1286 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef int moz_static_assert13[(sizeof(jsval_layout) == sizeof(jsval)) ? 1 : -1];
+
+
+
+
+
+typedef JS::Handle<JSObject*> JSHandleObject;
+typedef JS::Handle<jsid> JSHandleId;
+# 1322 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef JSBool
+(* JSPropertyOp)(JSContext *cx, JSHandleObject obj, JSHandleId id, jsval *vp);
+# 1332 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef JSBool
+(* JSStrictPropertyOp)(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool strict, jsval *vp);
+# 1367 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef JSBool
+(* JSNewEnumerateOp)(JSContext *cx, JSHandleObject obj, JSIterateOp enum_op,
+                     jsval *statep, jsid *idp);
+
+
+
+
+
+typedef JSBool
+(* JSEnumerateOp)(JSContext *cx, JSHandleObject obj);
+# 1390 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef JSBool
+(* JSResolveOp)(JSContext *cx, JSHandleObject obj, JSHandleId id);
+# 1421 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef JSBool
+(* JSNewResolveOp)(JSContext *cx, JSHandleObject obj, JSHandleId id, unsigned flags,
+                   JSObject **objp);
+
+
+
+
+
+typedef JSBool
+(* JSConvertOp)(JSContext *cx, JSHandleObject obj, JSType type, jsval *vp);
+
+
+
+
+typedef JSType
+(* JSTypeOfOp)(JSContext *cx, JSObject *obj);
+
+typedef struct JSFreeOp JSFreeOp;
+
+struct JSFreeOp {
+
+
+
+  private:
+    JSRuntime *runtime_;
+
+  protected:
+    JSFreeOp(JSRuntime *rt)
+      : runtime_(rt) { }
+
+  public:
+    JSRuntime *runtime() const {
+        return runtime_;
+    }
+
+};
+
+
+
+
+
+
+typedef void
+(* JSFinalizeOp)(JSFreeOp *fop, JSObject *obj);
+
+
+
+
+typedef struct JSStringFinalizer JSStringFinalizer;
+
+struct JSStringFinalizer {
+    void (*finalize)(const JSStringFinalizer *fin, jschar *chars);
+};
+
+
+
+
+
+
+
+typedef JSBool
+(* JSCheckAccessOp)(JSContext *cx, JSHandleObject obj, JSHandleId id, JSAccessMode mode,
+                    jsval *vp);
+
+
+
+
+
+
+typedef JSBool
+(* JSHasInstanceOp)(JSContext *cx, JSHandleObject obj, const jsval *v, JSBool *bp);
+# 1510 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef void
+(* JSTraceOp)(JSTracer *trc, JSObject *obj);
+
+
+
+
+
+typedef void
+(* JSTraceNamePrinter)(JSTracer *trc, char *buf, size_t bufsize);
+
+typedef JSBool
+(* JSEqualityOp)(JSContext *cx, JSHandleObject obj, const jsval *v, JSBool *bp);
+
+
+
+
+
+
+
+typedef JSBool
+(* JSNative)(JSContext *cx, unsigned argc, jsval *vp);
+
+
+
+typedef enum JSContextOp {
+    JSCONTEXT_NEW,
+    JSCONTEXT_DESTROY
+} JSContextOp;
+# 1552 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef JSBool
+(* JSContextCallback)(JSContext *cx, unsigned contextOp);
+
+typedef enum JSGCStatus {
+    JSGC_BEGIN,
+    JSGC_END
+} JSGCStatus;
+
+typedef void
+(* JSGCCallback)(JSRuntime *rt, JSGCStatus status);
+
+typedef enum JSFinalizeStatus {
+    JSFINALIZE_START,
+    JSFINALIZE_END
+} JSFinalizeStatus;
+
+typedef void
+(* JSFinalizeCallback)(JSFreeOp *fop, JSFinalizeStatus status, JSBool isCompartment);
+
+
+
+
+
+typedef void
+(* JSTraceDataOp)(JSTracer *trc, void *data);
+
+typedef JSBool
+(* JSOperationCallback)(JSContext *cx);
+
+typedef void
+(* JSErrorReporter)(JSContext *cx, const char *message, JSErrorReport *report);
+# 1597 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef enum JSExnType {
+    JSEXN_NONE = -1,
+      JSEXN_ERR,
+        JSEXN_INTERNALERR,
+        JSEXN_EVALERR,
+        JSEXN_RANGEERR,
+        JSEXN_REFERENCEERR,
+        JSEXN_SYNTAXERR,
+        JSEXN_TYPEERR,
+        JSEXN_URIERR,
+        JSEXN_LIMIT
+} JSExnType;
+
+typedef struct JSErrorFormatString {
+
+    const char *format;
+
+
+    uint16_t argCount;
+
+
+    int16_t exnType;
+} JSErrorFormatString;
+
+typedef const JSErrorFormatString *
+(* JSErrorCallback)(void *userRef, const char *locale,
+                    const unsigned errorNumber);
+# 1633 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef JSBool
+(* JSLocaleToUpperCase)(JSContext *cx, JSString *src, jsval *rval);
+
+typedef JSBool
+(* JSLocaleToLowerCase)(JSContext *cx, JSString *src, jsval *rval);
+
+typedef JSBool
+(* JSLocaleCompare)(JSContext *cx, JSString *src1, JSString *src2,
+                    jsval *rval);
+
+typedef JSBool
+(* JSLocaleToUnicode)(JSContext *cx, const char *src, jsval *rval);
+
+
+
+
+
+typedef void
+(* JSDestroyPrincipalsOp)(JSPrincipals *principals);
+
+typedef JSBool
+(* JSSubsumePrincipalsOp)(JSPrincipals *principals1, JSPrincipals *principals2);
+# 1664 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef JSPrincipals *
+(* JSObjectPrincipalsFinder)(JSObject *obj);
+
+
+
+
+
+typedef JSBool
+(* JSCSPEvalChecker)(JSContext *cx);
+
+
+
+
+
+typedef JSBool
+(* JSPushContextPrincipalOp)(JSContext *cx, JSPrincipals *principals);
+
+typedef JSBool
+(* JSPopContextPrincipalOp)(JSContext *cx);
+
+
+
+
+
+
+typedef JSObject *
+(* JSWrapObjectCallback)(JSContext *cx, JSObject *obj, JSObject *proto, JSObject *parent,
+                         unsigned flags);
+
+
+
+
+
+
+typedef JSObject *
+(* JSPreWrapCallback)(JSContext *cx, JSObject *scope, JSObject *obj, unsigned flags);
+# 1711 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef JSObject *
+(* JSSameCompartmentWrapObjectCallback)(JSContext *cx, JSObject *obj);
+
+typedef void
+(* JSDestroyCompartmentCallback)(JSFreeOp *fop, JSCompartment *compartment);
+# 1726 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef JSObject *(*ReadStructuredCloneOp)(JSContext *cx, JSStructuredCloneReader *r,
+                                           uint32_t tag, uint32_t data, void *closure);
+# 1740 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef JSBool (*WriteStructuredCloneOp)(JSContext *cx, JSStructuredCloneWriter *w,
+                                         JSObject *obj, void *closure);
+
+
+
+
+
+
+typedef void (*StructuredCloneErrorOp)(JSContext *cx, uint32_t errorid);
+
+
+
+extern "C" {
+# 1769 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) const jsval JSVAL_NULL;
+extern __attribute__((visibility("default"))) const jsval JSVAL_ZERO;
+extern __attribute__((visibility("default"))) const jsval JSVAL_ONE;
+extern __attribute__((visibility("default"))) const jsval JSVAL_FALSE;
+extern __attribute__((visibility("default"))) const jsval JSVAL_TRUE;
+extern __attribute__((visibility("default"))) const jsval JSVAL_VOID;
+
+
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_NULL(jsval v)
+{
+    return JSVAL_IS_NULL_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_VOID(jsval v)
+{
+    return JSVAL_IS_UNDEFINED_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_INT(jsval v)
+{
+    return JSVAL_IS_INT32_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline int32_t
+JSVAL_TO_INT(jsval v)
+{
+    do { } while(0);
+    return JSVAL_TO_INT32_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline jsval
+INT_TO_JSVAL(int32_t i)
+{
+    return IMPL_TO_JSVAL(INT32_TO_JSVAL_IMPL(i));
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_DOUBLE(jsval v)
+{
+    return JSVAL_IS_DOUBLE_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline double
+JSVAL_TO_DOUBLE(jsval v)
+{
+    jsval_layout l;
+    do { } while(0);
+    l = JSVAL_TO_IMPL(v);
+    return l.asDouble;
+}
+
+static __attribute__((always_inline)) inline jsval
+DOUBLE_TO_JSVAL(double d)
+{
+
+
+
+
+    jsval_layout l;
+    if ((__builtin_expect((d != d), 0))) {
+        l.asBits = 0x7FF8000000000000LL;
+    } else {
+        l.asDouble = d;
+    }
+    return IMPL_TO_JSVAL(l);
+}
+
+static __attribute__((always_inline)) inline jsval
+UINT_TO_JSVAL(uint32_t i)
+{
+    if (i <= ((int32_t)0x7fffffff))
+        return INT_TO_JSVAL((int32_t)i);
+    return DOUBLE_TO_JSVAL((double)i);
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_NUMBER(jsval v)
+{
+    return JSVAL_IS_NUMBER_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_STRING(jsval v)
+{
+    return JSVAL_IS_STRING_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline JSString *
+JSVAL_TO_STRING(jsval v)
+{
+    do { } while(0);
+    return JSVAL_TO_STRING_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline jsval
+STRING_TO_JSVAL(JSString *str)
+{
+    return IMPL_TO_JSVAL(STRING_TO_JSVAL_IMPL(str));
+}
+
+static __attribute__((always_inline)) inline JSObject *
+JSVAL_TO_OBJECT(jsval v)
+{
+    do { } while(0);
+    return JSVAL_TO_OBJECT_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline jsval
+OBJECT_TO_JSVAL(JSObject *obj)
+{
+    if (obj)
+        return IMPL_TO_JSVAL(OBJECT_TO_JSVAL_IMPL(obj));
+    return JSVAL_NULL;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_BOOLEAN(jsval v)
+{
+    return JSVAL_IS_BOOLEAN_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_TO_BOOLEAN(jsval v)
+{
+    do { } while(0);
+    return JSVAL_TO_BOOLEAN_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline jsval
+BOOLEAN_TO_JSVAL(JSBool b)
+{
+    return IMPL_TO_JSVAL(BOOLEAN_TO_JSVAL_IMPL(b));
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_PRIMITIVE(jsval v)
+{
+    return JSVAL_IS_PRIMITIVE_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_GCTHING(jsval v)
+{
+    return JSVAL_IS_GCTHING_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline void *
+JSVAL_TO_GCTHING(jsval v)
+{
+    do { } while(0);
+    return JSVAL_TO_GCTHING_IMPL(JSVAL_TO_IMPL(v));
+}
+
+
+
+static __attribute__((always_inline)) inline jsval
+PRIVATE_TO_JSVAL(void *ptr)
+{
+    return IMPL_TO_JSVAL(PRIVATE_PTR_TO_JSVAL_IMPL(ptr));
+}
+
+static __attribute__((always_inline)) inline void *
+JSVAL_TO_PRIVATE(jsval v)
+{
+    do { } while(0);
+    return JSVAL_TO_PRIVATE_PTR_IMPL(JSVAL_TO_IMPL(v));
+}
+# 1955 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JSID_TYPE_STRING 0x0
+#define JSID_TYPE_INT 0x1
+#define JSID_TYPE_VOID 0x2
+#define JSID_TYPE_OBJECT 0x4
+#define JSID_TYPE_DEFAULT_XML_NAMESPACE 0x6
+#define JSID_TYPE_MASK 0x7
+
+
+
+
+
+#define id iden
+
+static __attribute__((always_inline)) inline JSBool
+JSID_IS_STRING(jsid iden)
+{
+    return ((iden) & 0x7) == 0;
+}
+
+static __attribute__((always_inline)) inline JSString *
+JSID_TO_STRING(jsid iden)
+{
+    do { } while(0);
+    return (JSString *)(iden);
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSID_IS_ZERO(jsid iden)
+{
+    return (iden) == 0;
+}
+
+__attribute__((visibility("default"))) JSBool
+JS_StringHasBeenInterned(JSContext *cx, JSString *str);
+# 1997 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+__attribute__((visibility("default"))) jsid
+INTERNED_STRING_TO_JSID(JSContext *cx, JSString *str);
+
+static __attribute__((always_inline)) inline JSBool
+JSID_IS_INT(jsid iden)
+{
+    return !!((iden) & 0x1);
+}
+
+static __attribute__((always_inline)) inline int32_t
+JSID_TO_INT(jsid iden)
+{
+    do { } while(0);
+    return ((uint32_t)(iden)) >> 1;
+}
+
+#define JSID_INT_MIN 0
+#define JSID_INT_MAX INT32_MAX
+
+static __attribute__((always_inline)) inline JSBool
+INT_FITS_IN_JSID(int32_t i)
+{
+    return i >= 0;
+}
+
+static __attribute__((always_inline)) inline jsid
+INT_TO_JSID(int32_t i)
+{
+    jsid iden;
+    do { } while(0);
+    (iden) = ((i << 1) | 0x1);
+    return iden;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSID_IS_OBJECT(jsid iden)
+{
+    return ((iden) & 0x7) == 0x4 &&
+           (size_t)(iden) != 0x4;
+}
+
+static __attribute__((always_inline)) inline JSObject *
+JSID_TO_OBJECT(jsid iden)
+{
+    do { } while(0);
+    return (JSObject *)((iden) & ~(size_t)0x7);
+}
+
+static __attribute__((always_inline)) inline jsid
+OBJECT_TO_JSID(JSObject *obj)
+{
+    jsid iden;
+    do { } while(0);
+    do { } while(0);
+    (iden) = ((size_t)obj | 0x4);
+    return iden;
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSID_IS_GCTHING(jsid iden)
+{
+    return JSID_IS_STRING(iden) || JSID_IS_OBJECT(iden);
+}
+
+static __attribute__((always_inline)) inline void *
+JSID_TO_GCTHING(jsid iden)
+{
+    return (void *)((iden) & ~(size_t)0x7);
+}
+
+
+
+
+
+
+static __attribute__((always_inline)) inline JSBool
+JSID_IS_DEFAULT_XML_NAMESPACE(jsid iden)
+{
+    do { } while (0)
+                                                                  ;
+    return ((size_t)(iden) == 0x6);
+}
+
+
+
+
+#define JS_DEFAULT_XML_NAMESPACE_ID ((jsid)JSID_TYPE_DEFAULT_XML_NAMESPACE)
+# 2093 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+static __attribute__((always_inline)) inline JSBool
+JSID_IS_VOID(jsid iden)
+{
+    do { } while (0)
+                                                 ;
+    return ((size_t)(iden) == 0x2);
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSID_IS_EMPTY(jsid iden)
+{
+    return ((size_t)(iden) == 0x4);
+}
+
+#undef id
+
+
+
+
+
+#define JSID_VOID ((jsid)JSID_TYPE_VOID)
+#define JSID_EMPTY ((jsid)JSID_TYPE_OBJECT)
+
+
+
+
+
+
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_UNIVERSAL(jsval v)
+{
+    return !JSVAL_IS_GCTHING(v);
+}
+
+
+
+namespace JS {
+
+class AutoIdRooter : private AutoGCRooter
+{
+  public:
+    explicit AutoIdRooter(JSContext *cx, jsid id = INT_TO_JSID(0)
+                          )
+      : AutoGCRooter(cx, ID), id_(id)
+    {
+        do { } while (0);
+    }
+
+    jsid id() {
+        return id_;
+    }
+
+    jsid * addr() {
+        return &id_;
+    }
+
+    friend void AutoGCRooter::trace(JSTracer *trc);
+
+  private:
+    jsid id_;
+   
+};
+
+}
+
+
+
+
+
+
+#define JSVAL_LOCK(cx,v) (JSVAL_IS_GCTHING(v) ? JS_LockGCThing(cx, JSVAL_TO_GCTHING(v)) : JS_TRUE)
+
+
+#define JSVAL_UNLOCK(cx,v) (JSVAL_IS_GCTHING(v) ? JS_UnlockGCThing(cx, JSVAL_TO_GCTHING(v)) : JS_TRUE)
+
+
+
+
+#define JSPROP_ENUMERATE 0x01
+#define JSPROP_READONLY 0x02
+
+
+
+#define JSPROP_PERMANENT 0x04
+#define JSPROP_GETTER 0x10
+#define JSPROP_SETTER 0x20
+#define JSPROP_SHARED 0x40
+
+
+
+
+#define JSPROP_INDEX 0x80
+#define JSPROP_SHORTID 0x100
+
+#define JSPROP_NATIVE_ACCESSORS 0x08
+
+
+
+#define JSFUN_LAMBDA 0x08
+#define JSFUN_HEAVYWEIGHT 0x80
+
+#define JSFUN_HEAVYWEIGHT_TEST(f) ((f) & JSFUN_HEAVYWEIGHT)
+
+#define JSFUN_HAS_REST 0x0100
+#define JSFUN_CONSTRUCTOR 0x0200
+
+#define JSFUN_HAS_DEFAULTS 0x0400
+
+
+#define JSFUN_FLAGS_MASK 0x07f8
+
+
+
+#define JSFUN_STUB_GSOPS 0x1000
+# 2221 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JSFUN_GENERIC_NATIVE JSFUN_LAMBDA
+# 2231 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_CallOnce(JSCallOnceType *once, JSInitCallback func);
+
+
+extern __attribute__((visibility("default"))) int64_t
+JS_Now(void);
+
+
+extern __attribute__((visibility("default"))) jsval
+JS_GetNaNValue(JSContext *cx);
+
+extern __attribute__((visibility("default"))) jsval
+JS_GetNegativeInfinityValue(JSContext *cx);
+
+extern __attribute__((visibility("default"))) jsval
+JS_GetPositiveInfinityValue(JSContext *cx);
+
+extern __attribute__((visibility("default"))) jsval
+JS_GetEmptyStringValue(JSContext *cx);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_GetEmptyString(JSRuntime *rt);
+# 2286 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_ConvertArguments(JSContext *cx, unsigned argc, jsval *argv, const char *format,
+                    ...);
+# 2346 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_ConvertValue(JSContext *cx, jsval v, JSType type, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ValueToObject(JSContext *cx, jsval v, JSObject **objp);
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_ValueToFunction(JSContext *cx, jsval v);
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_ValueToConstructor(JSContext *cx, jsval v);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_ValueToString(JSContext *cx, jsval v);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_ValueToSource(JSContext *cx, jsval v);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ValueToNumber(JSContext *cx, jsval v, double *dp);
+
+
+namespace js {
+
+
+
+extern __attribute__((visibility("default"))) bool
+ToNumberSlow(JSContext *cx, JS::Value v, double *dp);
+}
+
+namespace JS {
+
+
+__attribute__((always_inline)) inline bool
+ToNumber(JSContext *cx, const Value &v, double *out)
+{
+    AssertArgumentsAreSane(cx, v);
+
+    if (v.isNumber()) {
+        *out = v.toNumber();
+        MaybeCheckStackRoots(cx);
+        return true;
+    }
+    return js::ToNumberSlow(cx, v, out);
+}
+
+}
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DoubleIsInt32(double d, int32_t *ip);
+
+extern __attribute__((visibility("default"))) int32_t
+JS_DoubleToInt32(double d);
+
+extern __attribute__((visibility("default"))) uint32_t
+JS_DoubleToUint32(double d);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ValueToECMAInt32(JSContext *cx, jsval v, int32_t *ip);
+
+
+namespace js {
+
+
+
+extern __attribute__((visibility("default"))) bool
+ToInt32Slow(JSContext *cx, const JS::Value &v, int32_t *out);
+}
+
+namespace JS {
+
+__attribute__((always_inline)) inline bool
+ToInt32(JSContext *cx, const js::Value &v, int32_t *out)
+{
+    AssertArgumentsAreSane(cx, v);
+    if (v.isInt32()) {
+        *out = v.toInt32();
+        return true;
+    }
+    return js::ToInt32Slow(cx, v, out);
+}
+
+}
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ValueToECMAUint32(JSContext *cx, jsval v, uint32_t *ip);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ValueToInt32(JSContext *cx, jsval v, int32_t *ip);
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ValueToUint16(JSContext *cx, jsval v, uint16_t *ip);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ValueToBoolean(JSContext *cx, jsval v, JSBool *bp);
+
+extern __attribute__((visibility("default"))) JSType
+JS_TypeOfValue(JSContext *cx, jsval v);
+
+extern __attribute__((visibility("default"))) const char *
+JS_GetTypeName(JSContext *cx, JSType type);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_StrictlyEqual(JSContext *cx, jsval v1, jsval v2, JSBool *equal);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_LooselyEqual(JSContext *cx, jsval v1, jsval v2, JSBool *equal);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SameValue(JSContext *cx, jsval v1, jsval v2, JSBool *same);
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsBuiltinEvalFunction(JSFunction *fun);
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsBuiltinFunctionConstructor(JSFunction *fun);
+# 2492 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JS_NewRuntime JS_Init
+#define JS_DestroyRuntime JS_Finish
+#define JS_LockRuntime JS_Lock
+#define JS_UnlockRuntime JS_Unlock
+
+extern __attribute__((visibility("default"))) JSRuntime *
+JS_Init(uint32_t maxbytes);
+
+
+#define JS_CommenceRuntimeShutDown(rt) ((void) 0)
+
+extern __attribute__((visibility("default"))) void
+JS_Finish(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) void
+JS_ShutDown(void);
+
+__attribute__((visibility("default"))) void *
+JS_GetRuntimePrivate(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) JSRuntime *
+JS_GetRuntime(JSContext *cx);
+
+__attribute__((visibility("default"))) void
+JS_SetRuntimePrivate(JSRuntime *rt, void *data);
+
+extern __attribute__((visibility("default"))) void
+JS_BeginRequest(JSContext *cx);
+
+extern __attribute__((visibility("default"))) void
+JS_EndRequest(JSContext *cx);
+
+
+extern __attribute__((visibility("default"))) void
+JS_YieldRequest(JSContext *cx);
+
+extern __attribute__((visibility("default"))) unsigned
+JS_SuspendRequest(JSContext *cx);
+
+extern __attribute__((visibility("default"))) void
+JS_ResumeRequest(JSContext *cx, unsigned saveDepth);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsInRequest(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsInSuspendedRequest(JSRuntime *rt);
+
+
+}
+
+namespace JS {
+
+inline bool
+IsPoisonedId(jsid iden)
+{
+    if (JSID_IS_STRING(iden))
+        return JS::IsPoisonedPtr(JSID_TO_STRING(iden));
+    if (JSID_IS_OBJECT(iden))
+        return JS::IsPoisonedPtr(JSID_TO_OBJECT(iden));
+    return false;
+}
+
+template <> struct RootMethods<const jsid>
+{
+    static jsid initial() { return ((jsid)0x2); }
+    static ThingRootKind kind() { return THING_ROOT_ID; }
+    static bool poisoned(jsid id) { return IsPoisonedId(id); }
+};
+
+template <> struct RootMethods<jsid>
+{
+    static jsid initial() { return ((jsid)0x2); }
+    static ThingRootKind kind() { return THING_ROOT_ID; }
+    static bool poisoned(jsid id) { return IsPoisonedId(id); }
+};
+
+}
+
+class JSAutoRequest {
+  public:
+    JSAutoRequest(JSContext *cx )
+        : mContext(cx), mSaveDepth(0) {
+        do { } while (0);
+        JS_BeginRequest(mContext);
+    }
+    ~JSAutoRequest() {
+        JS_EndRequest(mContext);
+    }
+
+    void suspend() {
+        mSaveDepth = JS_SuspendRequest(mContext);
+    }
+    void resume() {
+        JS_ResumeRequest(mContext, mSaveDepth);
+    }
+
+  protected:
+    JSContext *mContext;
+    unsigned mSaveDepth;
+   
+
+
+
+
+
+
+};
+
+class JSAutoSuspendRequest {
+  public:
+    JSAutoSuspendRequest(JSContext *cx )
+        : mContext(cx), mSaveDepth(0) {
+        do { } while (0);
+        if (mContext) {
+            mSaveDepth = JS_SuspendRequest(mContext);
+        }
+    }
+    ~JSAutoSuspendRequest() {
+        resume();
+    }
+
+    void resume() {
+        if (mContext) {
+            JS_ResumeRequest(mContext, mSaveDepth);
+            mContext = 0;
+        }
+    }
+
+  protected:
+    JSContext *mContext;
+    unsigned mSaveDepth;
+   
+
+
+
+
+
+
+};
+
+class JSAutoCheckRequest {
+  public:
+    JSAutoCheckRequest(JSContext *cx ) {
+
+
+
+
+        do { } while (0);
+    }
+
+    ~JSAutoCheckRequest() {
+
+
+
+    }
+
+
+  private:
+
+
+
+   
+};
+
+extern "C" {
+
+
+extern __attribute__((visibility("default"))) JSContextCallback
+JS_SetContextCallback(JSRuntime *rt, JSContextCallback cxCallback);
+
+extern __attribute__((visibility("default"))) JSContext *
+JS_NewContext(JSRuntime *rt, size_t stackChunkSize);
+
+extern __attribute__((visibility("default"))) void
+JS_DestroyContext(JSContext *cx);
+
+extern __attribute__((visibility("default"))) void
+JS_DestroyContextNoGC(JSContext *cx);
+
+extern __attribute__((visibility("default"))) void *
+JS_GetContextPrivate(JSContext *cx);
+
+extern __attribute__((visibility("default"))) void
+JS_SetContextPrivate(JSContext *cx, void *data);
+
+extern __attribute__((visibility("default"))) void *
+JS_GetSecondContextPrivate(JSContext *cx);
+
+extern __attribute__((visibility("default"))) void
+JS_SetSecondContextPrivate(JSContext *cx, void *data);
+
+extern __attribute__((visibility("default"))) JSRuntime *
+JS_GetRuntime(JSContext *cx);
+
+extern __attribute__((visibility("default"))) JSContext *
+JS_ContextIterator(JSRuntime *rt, JSContext **iterp);
+
+extern __attribute__((visibility("default"))) JSVersion
+JS_GetVersion(JSContext *cx);
+
+extern __attribute__((visibility("default"))) JSVersion
+JS_SetVersion(JSContext *cx, JSVersion version);
+
+extern __attribute__((visibility("default"))) const char *
+JS_VersionToString(JSVersion version);
+
+extern __attribute__((visibility("default"))) JSVersion
+JS_StringToVersion(const char *string);
+# 2709 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JSOPTION_STRICT JS_BIT(0)
+#define JSOPTION_WERROR JS_BIT(1)
+#define JSOPTION_VAROBJFIX JS_BIT(2)
+
+
+
+#define JSOPTION_PRIVATE_IS_NSISUPPORTS JS_BIT(3)
+
+
+#define JSOPTION_COMPILE_N_GO JS_BIT(4)
+
+
+
+
+#define JSOPTION_ATLINE JS_BIT(5)
+
+
+
+#define JSOPTION_ALLOW_XML JS_BIT(6)
+
+
+
+#define JSOPTION_MOAR_XML JS_BIT(7)
+
+
+
+
+
+#define JSOPTION_DONT_REPORT_UNCAUGHT JS_BIT(8)
+
+
+
+
+
+
+#define JSOPTION_RELIMIT JS_BIT(9)
+# 2753 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JSOPTION_NO_SCRIPT_RVAL JS_BIT(12)
+
+
+
+#define JSOPTION_UNROOTED_GLOBAL JS_BIT(13)
+
+
+
+
+
+#define JSOPTION_METHODJIT JS_BIT(14)
+
+
+
+#define JSOPTION_METHODJIT_ALWAYS JS_BIT(16)
+
+
+#define JSOPTION_PCCOUNT JS_BIT(17)
+
+#define JSOPTION_TYPE_INFERENCE JS_BIT(18)
+#define JSOPTION_STRICT_MODE JS_BIT(19)
+
+
+
+
+
+#define JSCOMPILEOPTION_MASK (JSOPTION_ALLOW_XML | JSOPTION_MOAR_XML)
+
+#define JSRUNOPTION_MASK (JS_BITMASK(20) & ~JSCOMPILEOPTION_MASK)
+#define JSALLOPTION_MASK (JSCOMPILEOPTION_MASK | JSRUNOPTION_MASK)
+
+extern __attribute__((visibility("default"))) uint32_t
+JS_GetOptions(JSContext *cx);
+
+extern __attribute__((visibility("default"))) uint32_t
+JS_SetOptions(JSContext *cx, uint32_t options);
+
+extern __attribute__((visibility("default"))) uint32_t
+JS_ToggleOptions(JSContext *cx, uint32_t options);
+
+extern __attribute__((visibility("default"))) void
+JS_SetJitHardening(JSRuntime *rt, JSBool enabled);
+
+extern __attribute__((visibility("default"))) const char *
+JS_GetImplementationVersion(void);
+
+extern __attribute__((visibility("default"))) void
+JS_SetDestroyCompartmentCallback(JSRuntime *rt, JSDestroyCompartmentCallback callback);
+
+extern __attribute__((visibility("default"))) JSWrapObjectCallback
+JS_SetWrapObjectCallbacks(JSRuntime *rt,
+                          JSWrapObjectCallback callback,
+                          JSSameCompartmentWrapObjectCallback sccallback,
+                          JSPreWrapCallback precallback);
+
+extern __attribute__((visibility("default"))) JSCrossCompartmentCall *
+JS_EnterCrossCompartmentCall(JSContext *cx, JSObject *target);
+
+extern __attribute__((visibility("default"))) void
+JS_LeaveCrossCompartmentCall(JSCrossCompartmentCall *call);
+
+extern __attribute__((visibility("default"))) void
+JS_SetCompartmentPrivate(JSCompartment *compartment, void *data);
+
+extern __attribute__((visibility("default"))) void *
+JS_GetCompartmentPrivate(JSCompartment *compartment);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_WrapObject(JSContext *cx, JSObject **objp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_WrapValue(JSContext *cx, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_TransplantObject(JSContext *cx, JSObject *origobj, JSObject *target);
+
+extern __attribute__((visibility("default"))) JSObject *
+js_TransplantObjectWithWrapper(JSContext *cx,
+                               JSObject *origobj,
+                               JSObject *origwrapper,
+                               JSObject *targetobj,
+                               JSObject *targetwrapper);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_RefreshCrossCompartmentWrappers(JSContext *cx, JSObject *ob);
+
+
+}
+
+namespace js {
+class AutoCompartment;
+}
+
+class __attribute__((visibility("default"))) JSAutoEnterCompartment
+{
+# 2856 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+    void* bytes[sizeof(void*) == 4 && mozilla::AlignmentFinder<uint64_t>::alignment == 8 ? 16 : 13];
+
+  protected:
+    js::AutoCompartment *getAutoCompartment() {
+        do { } while(0);
+        return reinterpret_cast<js::AutoCompartment*>(bytes);
+    }
+# 2872 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+    enum State {
+        STATE_UNENTERED,
+        STATE_SAME_COMPARTMENT,
+        STATE_OTHER_COMPARTMENT
+    } state;
+
+  public:
+    JSAutoEnterCompartment() : state(STATE_UNENTERED) {}
+
+    bool enter(JSContext *cx, JSObject *target);
+
+    void enterAndIgnoreErrors(JSContext *cx, JSObject *target);
+
+    bool entered() const { return state != STATE_UNENTERED; }
+
+    ~JSAutoEnterCompartment();
+};
+
+extern "C" {
+
+
+typedef void (*JSIterateCompartmentCallback)(JSRuntime *rt, void *data, JSCompartment *compartment);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_IterateCompartments(JSRuntime *rt, void *data,
+                       JSIterateCompartmentCallback compartmentCallback);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetGlobalObject(JSContext *cx);
+
+extern __attribute__((visibility("default"))) void
+JS_SetGlobalObject(JSContext *cx, JSObject *obj);
+# 2917 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_InitStandardClasses(JSContext *cx, JSObject *obj);
+# 2933 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_ResolveStandardClass(JSContext *cx, JSObject *obj, jsid id,
+                        JSBool *resolved);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_EnumerateStandardClasses(JSContext *cx, JSObject *obj);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSIdArray *
+JS_EnumerateResolvedStandardClasses(JSContext *cx, JSObject *obj,
+                                    JSIdArray *ida);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetClassObject(JSContext *cx, JSObject *obj, JSProtoKey key,
+                  JSObject **objp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetClassPrototype(JSContext *cx, JSProtoKey key, JSObject **objp);
+
+extern __attribute__((visibility("default"))) JSProtoKey
+JS_IdentifyClassPrototype(JSContext *cx, JSObject *obj);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetFunctionPrototype(JSContext *cx, JSObject *forObj);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetObjectPrototype(JSContext *cx, JSObject *forObj);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetGlobalForObject(JSContext *cx, JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetGlobalForScopeChain(JSContext *cx);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetScriptedGlobal(JSContext *cx);
+
+
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_InitReflect(JSContext *cx, JSObject *global);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_InitCTypesClass(JSContext *cx, JSObject *global);
+
+
+
+
+
+
+typedef char *
+(* JSCTypesUnicodeToNativeFun)(JSContext *cx, const jschar *source, size_t slen);
+
+
+
+
+
+
+struct JSCTypesCallbacks {
+    JSCTypesUnicodeToNativeFun unicodeToNative;
+};
+
+typedef struct JSCTypesCallbacks JSCTypesCallbacks;
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_SetCTypesCallbacks(JSObject *ctypesObj, JSCTypesCallbacks *callbacks);
+
+
+typedef JSBool
+(* JSEnumerateDiagnosticMemoryCallback)(void *ptr, size_t length);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_EnumerateDiagnosticMemoryRegions(JSEnumerateDiagnosticMemoryCallback callback);
+# 3063 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JS_CALLEE(cx,vp) ((vp)[0])
+#define JS_THIS(cx,vp) JS_ComputeThis(cx, vp)
+#define JS_THIS_OBJECT(cx,vp) (JSVAL_TO_OBJECT(JS_THIS(cx,vp)))
+#define JS_ARGV(cx,vp) ((vp) + 2)
+#define JS_RVAL(cx,vp) (*(vp))
+#define JS_SET_RVAL(cx,vp,v) (*(vp) = (v))
+
+extern __attribute__((visibility("default"))) jsval
+JS_ComputeThis(JSContext *cx, jsval *vp);
+
+
+#undef JS_THIS
+static inline jsval
+JS_THIS(JSContext *cx, jsval *vp)
+{
+    return JSVAL_IS_PRIMITIVE(vp[1]) ? JS_ComputeThis(cx, vp) : vp[1];
+}
+# 3094 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JS_THIS_VALUE(cx,vp) ((vp)[1])
+
+extern __attribute__((visibility("default"))) void
+JS_MallocInCompartment(JSCompartment *comp, size_t nbytes);
+
+extern __attribute__((visibility("default"))) void
+JS_FreeInCompartment(JSCompartment *comp, size_t nbytes);
+
+extern __attribute__((visibility("default"))) void *
+JS_malloc(JSContext *cx, size_t nbytes);
+
+extern __attribute__((visibility("default"))) void *
+JS_realloc(JSContext *cx, void *p, size_t nbytes);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_free(JSContext *cx, void *p);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_freeop(JSFreeOp *fop, void *p);
+
+extern __attribute__((visibility("default"))) JSFreeOp *
+JS_GetDefaultFreeOp(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) void
+JS_updateMallocCounter(JSContext *cx, size_t nbytes);
+
+extern __attribute__((visibility("default"))) char *
+JS_strdup(JSContext *cx, const char *s);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_NewNumberValue(JSContext *cx, double d, jsval *rval);
+# 3159 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_AddValueRoot(JSContext *cx, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_AddStringRoot(JSContext *cx, JSString **rp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_AddObjectRoot(JSContext *cx, JSObject **rp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_AddGCThingRoot(JSContext *cx, void **rp);
+# 3180 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_AddNamedValueRoot(JSContext *cx, jsval *vp, const char *name);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_AddNamedStringRoot(JSContext *cx, JSString **rp, const char *name);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_AddNamedObjectRoot(JSContext *cx, JSObject **rp, const char *name);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_AddNamedScriptRoot(JSContext *cx, JSScript **rp, const char *name);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_AddNamedGCThingRoot(JSContext *cx, void **rp, const char *name);
+
+extern __attribute__((visibility("default"))) void
+JS_RemoveValueRoot(JSContext *cx, jsval *vp);
+
+extern __attribute__((visibility("default"))) void
+JS_RemoveStringRoot(JSContext *cx, JSString **rp);
+
+extern __attribute__((visibility("default"))) void
+JS_RemoveObjectRoot(JSContext *cx, JSObject **rp);
+
+extern __attribute__((visibility("default"))) void
+JS_RemoveScriptRoot(JSContext *cx, JSScript **rp);
+
+extern __attribute__((visibility("default"))) void
+JS_RemoveGCThingRoot(JSContext *cx, void **rp);
+
+extern __attribute__((visibility("default"))) void
+JS_RemoveValueRootRT(JSRuntime *rt, jsval *vp);
+
+extern __attribute__((visibility("default"))) void
+JS_RemoveStringRootRT(JSRuntime *rt, JSString **rp);
+
+extern __attribute__((visibility("default"))) void
+JS_RemoveObjectRootRT(JSRuntime *rt, JSObject **rp);
+
+extern __attribute__((visibility("default"))) void
+JS_RemoveScriptRootRT(JSRuntime *rt, JSScript **rp);
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+js_AddRootRT(JSRuntime *rt, jsval *vp, const char *name);
+
+extern __attribute__((visibility("default"))) JSBool
+js_AddGCThingRootRT(JSRuntime *rt, void **rp, const char *name);
+
+extern __attribute__((visibility("default"))) void
+js_RemoveRoot(JSRuntime *rt, void *rp);
+
+
+
+
+
+extern __attribute__((noinline)) __attribute__((visibility("default"))) void
+JS_AnchorPtr(void *p);
+
+
+
+
+
+#define JS_TYPED_ROOTING_API 
+
+
+#define JS_EnterLocalRootScope(cx) (JS_TRUE)
+#define JS_LeaveLocalRootScope(cx) ((void) 0)
+#define JS_LeaveLocalRootScopeWithResult(cx,rval) ((void) 0)
+#define JS_ForgetLocalRoot(cx,thing) ((void) 0)
+
+typedef enum JSGCRootType {
+    JS_GC_ROOT_VALUE_PTR,
+    JS_GC_ROOT_GCTHING_PTR
+} JSGCRootType;
+# 3280 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JS_MAP_GCROOT_NEXT 0
+#define JS_MAP_GCROOT_STOP 1
+#define JS_MAP_GCROOT_REMOVE 2
+
+typedef int
+(* JSGCRootMapFun)(void *rp, JSGCRootType type, const char *name, void *data);
+
+extern __attribute__((visibility("default"))) uint32_t
+JS_MapGCRoots(JSRuntime *rt, JSGCRootMapFun map, void *data);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_LockGCThing(JSContext *cx, void *thing);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_LockGCThingRT(JSRuntime *rt, void *thing);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_UnlockGCThing(JSContext *cx, void *thing);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_UnlockGCThingRT(JSRuntime *rt, void *thing);
+# 3309 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) void
+JS_SetExtraGCRootsTracer(JSRuntime *rt, JSTraceDataOp traceOp, void *data);
+# 3325 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+static __attribute__((always_inline)) inline JSBool
+JSVAL_IS_TRACEABLE(jsval v)
+{
+    return JSVAL_IS_TRACEABLE_IMPL(JSVAL_TO_IMPL(v));
+}
+
+static __attribute__((always_inline)) inline void *
+JSVAL_TO_TRACEABLE(jsval v)
+{
+    return JSVAL_TO_GCTHING(v);
+}
+
+static __attribute__((always_inline)) inline JSGCTraceKind
+JSVAL_TRACE_KIND(jsval v)
+{
+    do { } while(0);
+    return (JSGCTraceKind) JSVAL_TRACE_KIND_IMPL(JSVAL_TO_IMPL(v));
+}
+# 3360 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+typedef void
+(* JSTraceCallback)(JSTracer *trc, void **thingp, JSGCTraceKind kind);
+
+struct JSTracer {
+    JSRuntime *runtime;
+    JSTraceCallback callback;
+    JSTraceNamePrinter debugPrinter;
+    const void *debugPrintArg;
+    size_t debugPrintIndex;
+    JSBool eagerlyTraceWeakMaps;
+
+
+
+};
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_CallTracer(JSTracer *trc, void *thing, JSGCTraceKind kind);
+# 3400 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JS_SET_TRACING_DETAILS(trc,printer,arg,index) JS_BEGIN_MACRO (trc)->debugPrinter = (printer); (trc)->debugPrintArg = (arg); (trc)->debugPrintIndex = (index); JS_END_MACRO
+# 3417 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JS_SET_TRACING_LOCATION(trc,location) JS_BEGIN_MACRO JS_END_MACRO
+# 3427 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JS_SET_TRACING_INDEX(trc,name,index) JS_SET_TRACING_DETAILS(trc, NULL, name, index)
+
+
+
+
+
+#define JS_SET_TRACING_NAME(trc,name) JS_SET_TRACING_DETAILS(trc, NULL, name, (size_t)-1)
+
+
+
+
+
+
+#define JS_CALL_TRACER(trc,thing,kind,name) JS_BEGIN_MACRO JS_SET_TRACING_NAME(trc, name); JS_CallTracer((trc), (thing), (kind)); JS_END_MACRO
+# 3450 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JS_CALL_VALUE_TRACER(trc,val,name) JS_BEGIN_MACRO if (JSVAL_IS_TRACEABLE(val)) { JS_CALL_TRACER((trc), JSVAL_TO_GCTHING(val), JSVAL_TRACE_KIND(val), name); } JS_END_MACRO
+
+
+
+
+
+
+
+#define JS_CALL_OBJECT_TRACER(trc,object,name) JS_BEGIN_MACRO JSObject *obj_ = (object); JS_ASSERT(obj_); JS_CALL_TRACER((trc), obj_, JSTRACE_OBJECT, name); JS_END_MACRO
+
+
+
+
+
+
+#define JS_CALL_STRING_TRACER(trc,string,name) JS_BEGIN_MACRO JSString *str_ = (string); JS_ASSERT(str_); JS_CALL_TRACER((trc), str_, JSTRACE_STRING, name); JS_END_MACRO
+# 3475 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) void
+JS_TracerInit(JSTracer *trc, JSRuntime *rt, JSTraceCallback callback);
+
+extern __attribute__((visibility("default"))) void
+JS_TraceChildren(JSTracer *trc, void *thing, JSGCTraceKind kind);
+
+extern __attribute__((visibility("default"))) void
+JS_TraceRuntime(JSTracer *trc);
+# 3517 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) void
+JS_GC(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) void
+JS_MaybeGC(JSContext *cx);
+
+extern __attribute__((visibility("default"))) void
+JS_SetGCCallback(JSRuntime *rt, JSGCCallback cb);
+
+extern __attribute__((visibility("default"))) void
+JS_SetFinalizeCallback(JSRuntime *rt, JSFinalizeCallback cb);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsGCMarkingTracer(JSTracer *trc);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsAboutToBeFinalized(void *thing);
+
+typedef enum JSGCParamKey {
+
+    JSGC_MAX_BYTES = 0,
+
+
+    JSGC_MAX_MALLOC_BYTES = 1,
+
+
+    JSGC_BYTES = 3,
+
+
+    JSGC_NUMBER = 4,
+
+
+    JSGC_MAX_CODE_CACHE_BYTES = 5,
+
+
+    JSGC_MODE = 6,
+
+
+    JSGC_UNUSED_CHUNKS = 7,
+
+
+    JSGC_TOTAL_CHUNKS = 8,
+
+
+    JSGC_SLICE_TIME_BUDGET = 9,
+
+
+    JSGC_MARK_STACK_LIMIT = 10
+} JSGCParamKey;
+
+typedef enum JSGCMode {
+
+    JSGC_MODE_GLOBAL = 0,
+
+
+    JSGC_MODE_COMPARTMENT = 1,
+
+
+
+
+
+    JSGC_MODE_INCREMENTAL = 2
+} JSGCMode;
+
+extern __attribute__((visibility("default"))) void
+JS_SetGCParameter(JSRuntime *rt, JSGCParamKey key, uint32_t value);
+
+extern __attribute__((visibility("default"))) uint32_t
+JS_GetGCParameter(JSRuntime *rt, JSGCParamKey key);
+
+extern __attribute__((visibility("default"))) void
+JS_SetGCParameterForThread(JSContext *cx, JSGCParamKey key, uint32_t value);
+
+extern __attribute__((visibility("default"))) uint32_t
+JS_GetGCParameterForThread(JSContext *cx, JSGCParamKey key);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSString *
+JS_NewExternalString(JSContext *cx, const jschar *chars, size_t length,
+                     const JSStringFinalizer *fin);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsExternalString(JSString *str);
+
+
+
+
+
+extern __attribute__((visibility("default"))) const JSStringFinalizer *
+JS_GetExternalStringFinalizer(JSString *str);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_SetNativeStackQuota(JSRuntime *cx, size_t stackSize);
+
+
+
+
+
+
+typedef void (*JSClassInternal)();
+
+struct JSClass {
+    const char *name;
+    uint32_t flags;
+
+
+    JSPropertyOp addProperty;
+    JSPropertyOp delProperty;
+    JSPropertyOp getProperty;
+    JSStrictPropertyOp setProperty;
+    JSEnumerateOp enumerate;
+    JSResolveOp resolve;
+    JSConvertOp convert;
+    JSFinalizeOp finalize;
+
+
+    JSCheckAccessOp checkAccess;
+    JSNative call;
+    JSHasInstanceOp hasInstance;
+    JSNative construct;
+    JSTraceOp trace;
+
+    void *reserved[40];
+};
+
+#define JSCLASS_HAS_PRIVATE (1<<0)
+#define JSCLASS_NEW_ENUMERATE (1<<1)
+#define JSCLASS_NEW_RESOLVE (1<<2)
+#define JSCLASS_PRIVATE_IS_NSISUPPORTS (1<<3)
+#define JSCLASS_NEW_RESOLVE_GETS_START (1<<4)
+
+
+
+#define JSCLASS_IMPLEMENTS_BARRIERS (1<<5)
+
+#define JSCLASS_DOCUMENT_OBSERVER (1<<6)
+#define JSCLASS_USERBIT1 (1<<7)
+
+
+
+
+
+
+#define JSCLASS_RESERVED_SLOTS_SHIFT 8
+#define JSCLASS_RESERVED_SLOTS_WIDTH 8
+#define JSCLASS_RESERVED_SLOTS_MASK JS_BITMASK(JSCLASS_RESERVED_SLOTS_WIDTH)
+#define JSCLASS_HAS_RESERVED_SLOTS(n) (((n) & JSCLASS_RESERVED_SLOTS_MASK) << JSCLASS_RESERVED_SLOTS_SHIFT)
+
+#define JSCLASS_RESERVED_SLOTS(clasp) (((clasp)->flags >> JSCLASS_RESERVED_SLOTS_SHIFT) & JSCLASS_RESERVED_SLOTS_MASK)
+
+
+
+#define JSCLASS_HIGH_FLAGS_SHIFT (JSCLASS_RESERVED_SLOTS_SHIFT + JSCLASS_RESERVED_SLOTS_WIDTH)
+
+
+
+
+
+
+#define JSCLASS_FOR_OF_ITERATION (1<<(JSCLASS_HIGH_FLAGS_SHIFT+0))
+
+#define JSCLASS_IS_ANONYMOUS (1<<(JSCLASS_HIGH_FLAGS_SHIFT+1))
+#define JSCLASS_IS_GLOBAL (1<<(JSCLASS_HIGH_FLAGS_SHIFT+2))
+#define JSCLASS_INTERNAL_FLAG2 (1<<(JSCLASS_HIGH_FLAGS_SHIFT+3))
+#define JSCLASS_INTERNAL_FLAG3 (1<<(JSCLASS_HIGH_FLAGS_SHIFT+4))
+
+
+#define JSCLASS_FREEZE_PROTO (1<<(JSCLASS_HIGH_FLAGS_SHIFT+5))
+#define JSCLASS_FREEZE_CTOR (1<<(JSCLASS_HIGH_FLAGS_SHIFT+6))
+
+#define JSCLASS_XPCONNECT_GLOBAL (1<<(JSCLASS_HIGH_FLAGS_SHIFT+7))
+
+
+#define JSCLASS_USERBIT2 (1<<(JSCLASS_HIGH_FLAGS_SHIFT+8))
+#define JSCLASS_USERBIT3 (1<<(JSCLASS_HIGH_FLAGS_SHIFT+9))
+
+
+
+
+
+
+
+#define JSGLOBAL_FLAGS_CLEARED 0x1
+# 3723 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JSCLASS_GLOBAL_SLOT_COUNT (JSProto_LIMIT * 3 + 8)
+#define JSCLASS_GLOBAL_FLAGS_WITH_SLOTS(n) (JSCLASS_IS_GLOBAL | JSCLASS_HAS_RESERVED_SLOTS(JSCLASS_GLOBAL_SLOT_COUNT + (n)))
+
+#define JSCLASS_GLOBAL_FLAGS JSCLASS_GLOBAL_FLAGS_WITH_SLOTS(0)
+
+#define JSCLASS_HAS_GLOBAL_FLAG_AND_SLOTS(clasp) (((clasp)->flags & JSCLASS_IS_GLOBAL) && JSCLASS_RESERVED_SLOTS(clasp) >= JSCLASS_GLOBAL_SLOT_COUNT)
+
+
+
+
+#define JSCLASS_CACHED_PROTO_SHIFT (JSCLASS_HIGH_FLAGS_SHIFT + 10)
+#define JSCLASS_CACHED_PROTO_WIDTH 6
+#define JSCLASS_CACHED_PROTO_MASK JS_BITMASK(JSCLASS_CACHED_PROTO_WIDTH)
+#define JSCLASS_HAS_CACHED_PROTO(key) (uint32_t(key) << JSCLASS_CACHED_PROTO_SHIFT)
+#define JSCLASS_CACHED_PROTO_KEY(clasp) ((JSProtoKey) (((clasp)->flags >> JSCLASS_CACHED_PROTO_SHIFT) & JSCLASS_CACHED_PROTO_MASK))
+
+
+
+
+
+#define JSCLASS_NO_INTERNAL_MEMBERS {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
+#define JSCLASS_NO_OPTIONAL_MEMBERS 0,0,0,0,0,JSCLASS_NO_INTERNAL_MEMBERS
+
+extern __attribute__((visibility("default"))) int
+JS_IdArrayLength(JSContext *cx, JSIdArray *ida);
+
+extern __attribute__((visibility("default"))) jsid
+JS_IdArrayGet(JSContext *cx, JSIdArray *ida, int index);
+
+extern __attribute__((visibility("default"))) void
+JS_DestroyIdArray(JSContext *cx, JSIdArray *ida);
+
+
+
+namespace JS {
+
+class AutoIdArray : private AutoGCRooter {
+  public:
+    AutoIdArray(JSContext *cx, JSIdArray *ida )
+      : AutoGCRooter(cx, IDARRAY), context(cx), idArray(ida)
+    {
+        do { } while (0);
+    }
+    ~AutoIdArray() {
+        if (idArray)
+            JS_DestroyIdArray(context, idArray);
+    }
+    bool operator!() {
+        return !idArray;
+    }
+    jsid operator[](size_t i) const {
+        do { } while(0);
+        do { } while(0);
+        return JS_IdArrayGet(context, idArray, i);
+    }
+    size_t length() const {
+        return JS_IdArrayLength(context, idArray);
+    }
+
+    friend void AutoGCRooter::trace(JSTracer *trc);
+
+    JSIdArray *steal() {
+        JSIdArray *copy = idArray;
+        idArray = __null;
+        return copy;
+    }
+
+  protected:
+    inline void trace(JSTracer *trc);
+
+  private:
+    JSContext *context;
+    JSIdArray *idArray;
+   
+
+
+    AutoIdArray(AutoIdArray &ida) ;
+    void operator=(AutoIdArray &ida) ;
+};
+
+}
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ValueToId(JSContext *cx, jsval v, jsid *idp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IdToValue(JSContext *cx, jsid id, jsval *vp);
+
+
+
+
+#define JSRESOLVE_QUALIFIED 0x01
+#define JSRESOLVE_ASSIGNING 0x02
+#define JSRESOLVE_DETECTING 0x04
+#define JSRESOLVE_DECLARING 0x08
+#define JSRESOLVE_WITH 0x10
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DefaultValue(JSContext *cx, JSObject *obj, JSType hint, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_PropertyStub(JSContext *cx, JSHandleObject obj, JSHandleId id, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_StrictPropertyStub(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool strict, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_EnumerateStub(JSContext *cx, JSHandleObject obj);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ResolveStub(JSContext *cx, JSHandleObject obj, JSHandleId id);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ConvertStub(JSContext *cx, JSHandleObject obj, JSType type, jsval *vp);
+
+struct JSConstDoubleSpec {
+    double dval;
+    const char *name;
+    uint8_t flags;
+    uint8_t spare[3];
+};
+
+
+
+
+
+
+struct JSPropertySpec {
+    const char *name;
+    int8_t tinyid;
+    uint8_t flags;
+    JSPropertyOp getter;
+    JSStrictPropertyOp setter;
+};
+
+struct JSFunctionSpec {
+    const char *name;
+    JSNative call;
+    uint16_t nargs;
+    uint16_t flags;
+};
+
+
+
+
+
+#define JS_FS_END JS_FS(NULL,NULL,0,0)
+
+
+
+
+
+
+#define JS_FS(name,call,nargs,flags) {name, call, nargs, flags}
+
+#define JS_FN(name,call,nargs,flags) {name, call, nargs, (flags) | JSFUN_STUB_GSOPS}
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_InitClass(JSContext *cx, JSObject *obj, JSObject *parent_proto,
+             JSClass *clasp, JSNative constructor, unsigned nargs,
+             JSPropertySpec *ps, JSFunctionSpec *fs,
+             JSPropertySpec *static_ps, JSFunctionSpec *static_fs);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_LinkConstructorAndPrototype(JSContext *cx, JSObject *ctor, JSObject *proto);
+
+extern __attribute__((visibility("default"))) JSClass *
+JS_GetClass(JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_InstanceOf(JSContext *cx, JSObject *obj, JSClass *clasp, jsval *argv);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_HasInstance(JSContext *cx, JSObject *obj, jsval v, JSBool *bp);
+
+extern __attribute__((visibility("default"))) void *
+JS_GetPrivate(JSObject *obj);
+
+extern __attribute__((visibility("default"))) void
+JS_SetPrivate(JSObject *obj, void *data);
+
+extern __attribute__((visibility("default"))) void *
+JS_GetInstancePrivate(JSContext *cx, JSObject *obj, JSClass *clasp,
+                      jsval *argv);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetPrototype(JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetPrototype(JSContext *cx, JSObject *obj, JSObject *proto);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetParent(JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetParent(JSContext *cx, JSObject *obj, JSObject *parent);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetConstructor(JSContext *cx, JSObject *proto);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetObjectId(JSContext *cx, JSObject *obj, jsid *idp);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewGlobalObject(JSContext *cx, JSClass *clasp);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewCompartmentAndGlobalObject(JSContext *cx, JSClass *clasp, JSPrincipals *principals);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewObject(JSContext *cx, JSClass *clasp, JSObject *proto, JSObject *parent);
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsExtensible(JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsNative(JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSRuntime *
+JS_GetObjectRuntime(JSObject *obj);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewObjectWithGivenProto(JSContext *cx, JSClass *clasp, JSObject *proto,
+                           JSObject *parent);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DeepFreezeObject(JSContext *cx, JSObject *obj);
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_FreezeObject(JSContext *cx, JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_ConstructObject(JSContext *cx, JSClass *clasp, JSObject *parent);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_ConstructObjectWithArguments(JSContext *cx, JSClass *clasp, JSObject *parent,
+                                unsigned argc, jsval *argv);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_New(JSContext *cx, JSObject *ctor, unsigned argc, jsval *argv);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_DefineObject(JSContext *cx, JSObject *obj, const char *name, JSClass *clasp,
+                JSObject *proto, unsigned attrs);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DefineConstDoubles(JSContext *cx, JSObject *obj, JSConstDoubleSpec *cds);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DefineProperties(JSContext *cx, JSObject *obj, JSPropertySpec *ps);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DefineProperty(JSContext *cx, JSObject *obj, const char *name, jsval value,
+                  JSPropertyOp getter, JSStrictPropertyOp setter, unsigned attrs);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DefinePropertyById(JSContext *cx, JSObject *obj, jsid id, jsval value,
+                      JSPropertyOp getter, JSStrictPropertyOp setter, unsigned attrs);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DefineOwnProperty(JSContext *cx, JSObject *obj, jsid id, jsval descriptor, JSBool *bp);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetPropertyAttributes(JSContext *cx, JSObject *obj, const char *name,
+                         unsigned *attrsp, JSBool *foundp);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetPropertyAttrsGetterAndSetter(JSContext *cx, JSObject *obj,
+                                   const char *name,
+                                   unsigned *attrsp, JSBool *foundp,
+                                   JSPropertyOp *getterp,
+                                   JSStrictPropertyOp *setterp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetPropertyAttrsGetterAndSetterById(JSContext *cx, JSObject *obj,
+                                       jsid id,
+                                       unsigned *attrsp, JSBool *foundp,
+                                       JSPropertyOp *getterp,
+                                       JSStrictPropertyOp *setterp);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetPropertyAttributes(JSContext *cx, JSObject *obj, const char *name,
+                         unsigned attrs, JSBool *foundp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DefinePropertyWithTinyId(JSContext *cx, JSObject *obj, const char *name,
+                            int8_t tinyid, jsval value,
+                            JSPropertyOp getter, JSStrictPropertyOp setter,
+                            unsigned attrs);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_AlreadyHasOwnProperty(JSContext *cx, JSObject *obj, const char *name,
+                         JSBool *foundp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_AlreadyHasOwnPropertyById(JSContext *cx, JSObject *obj, jsid id,
+                             JSBool *foundp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_HasProperty(JSContext *cx, JSObject *obj, const char *name, JSBool *foundp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_HasPropertyById(JSContext *cx, JSObject *obj, jsid id, JSBool *foundp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_LookupProperty(JSContext *cx, JSObject *obj, const char *name, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_LookupPropertyById(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_LookupPropertyWithFlags(JSContext *cx, JSObject *obj, const char *name,
+                           unsigned flags, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_LookupPropertyWithFlagsById(JSContext *cx, JSObject *obj, jsid id,
+                               unsigned flags, JSObject **objp, jsval *vp);
+
+struct JSPropertyDescriptor {
+    JSObject *obj;
+    unsigned attrs;
+    unsigned shortid;
+    JSPropertyOp getter;
+    JSStrictPropertyOp setter;
+    jsval value;
+};
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetPropertyDescriptorById(JSContext *cx, JSObject *obj, jsid id, unsigned flags,
+                             JSPropertyDescriptor *desc);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetOwnPropertyDescriptor(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetProperty(JSContext *cx, JSObject *obj, const char *name, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetPropertyDefault(JSContext *cx, JSObject *obj, const char *name, jsval def, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetPropertyById(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetPropertyByIdDefault(JSContext *cx, JSObject *obj, jsid id, jsval def, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ForwardGetPropertyTo(JSContext *cx, JSObject *obj, jsid id, JSObject *onBehalfOf, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetMethodById(JSContext *cx, JSObject *obj, jsid id, JSObject **objp,
+                 jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetMethod(JSContext *cx, JSObject *obj, const char *name, JSObject **objp,
+             jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetProperty(JSContext *cx, JSObject *obj, const char *name, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetPropertyById(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DeleteProperty(JSContext *cx, JSObject *obj, const char *name);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DeleteProperty2(JSContext *cx, JSObject *obj, const char *name,
+                   jsval *rval);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DeletePropertyById(JSContext *cx, JSObject *obj, jsid id);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DeletePropertyById2(JSContext *cx, JSObject *obj, jsid id, jsval *rval);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DefineUCProperty(JSContext *cx, JSObject *obj,
+                    const jschar *name, size_t namelen, jsval value,
+                    JSPropertyOp getter, JSStrictPropertyOp setter,
+                    unsigned attrs);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetUCPropertyAttributes(JSContext *cx, JSObject *obj,
+                           const jschar *name, size_t namelen,
+                           unsigned *attrsp, JSBool *foundp);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetUCPropertyAttrsGetterAndSetter(JSContext *cx, JSObject *obj,
+                                     const jschar *name, size_t namelen,
+                                     unsigned *attrsp, JSBool *foundp,
+                                     JSPropertyOp *getterp,
+                                     JSStrictPropertyOp *setterp);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetUCPropertyAttributes(JSContext *cx, JSObject *obj,
+                           const jschar *name, size_t namelen,
+                           unsigned attrs, JSBool *foundp);
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DefineUCPropertyWithTinyId(JSContext *cx, JSObject *obj,
+                              const jschar *name, size_t namelen,
+                              int8_t tinyid, jsval value,
+                              JSPropertyOp getter, JSStrictPropertyOp setter,
+                              unsigned attrs);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_AlreadyHasOwnUCProperty(JSContext *cx, JSObject *obj, const jschar *name,
+                           size_t namelen, JSBool *foundp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_HasUCProperty(JSContext *cx, JSObject *obj,
+                 const jschar *name, size_t namelen,
+                 JSBool *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_LookupUCProperty(JSContext *cx, JSObject *obj,
+                    const jschar *name, size_t namelen,
+                    jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetUCProperty(JSContext *cx, JSObject *obj,
+                 const jschar *name, size_t namelen,
+                 jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetUCProperty(JSContext *cx, JSObject *obj,
+                 const jschar *name, size_t namelen,
+                 jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DeleteUCProperty2(JSContext *cx, JSObject *obj,
+                     const jschar *name, size_t namelen,
+                     jsval *rval);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewArrayObject(JSContext *cx, int length, jsval *vector);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsArrayObject(JSContext *cx, JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetArrayLength(JSContext *cx, JSObject *obj, uint32_t *lengthp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetArrayLength(JSContext *cx, JSObject *obj, uint32_t length);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DefineElement(JSContext *cx, JSObject *obj, uint32_t index, jsval value,
+                 JSPropertyOp getter, JSStrictPropertyOp setter, unsigned attrs);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_AlreadyHasOwnElement(JSContext *cx, JSObject *obj, uint32_t index, JSBool *foundp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_HasElement(JSContext *cx, JSObject *obj, uint32_t index, JSBool *foundp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_LookupElement(JSContext *cx, JSObject *obj, uint32_t index, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetElement(JSContext *cx, JSObject *obj, uint32_t index, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ForwardGetElementTo(JSContext *cx, JSObject *obj, uint32_t index, JSObject *onBehalfOf,
+                       jsval *vp);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetElementIfPresent(JSContext *cx, JSObject *obj, uint32_t index, JSObject *onBehalfOf,
+                       jsval *vp, JSBool* present);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetElement(JSContext *cx, JSObject *obj, uint32_t index, jsval *vp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DeleteElement(JSContext *cx, JSObject *obj, uint32_t index);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DeleteElement2(JSContext *cx, JSObject *obj, uint32_t index, jsval *rval);
+
+extern __attribute__((visibility("default"))) void
+JS_ClearScope(JSContext *cx, JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSIdArray *
+JS_Enumerate(JSContext *cx, JSObject *obj);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewPropertyIterator(JSContext *cx, JSObject *obj);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_NextProperty(JSContext *cx, JSObject *iterobj, jsid *idp);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewElementIterator(JSContext *cx, JSObject *obj);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_ElementIteratorStub(JSContext *cx, JSHandleObject obj, JSBool keysonly);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_CheckAccess(JSContext *cx, JSObject *obj, jsid id, JSAccessMode mode,
+               jsval *vp, unsigned *attrsp);
+
+extern __attribute__((visibility("default"))) jsval
+JS_GetReservedSlot(JSObject *obj, uint32_t index);
+
+extern __attribute__((visibility("default"))) void
+JS_SetReservedSlot(JSObject *obj, uint32_t index, jsval v);
+
+
+
+
+
+
+struct JSPrincipals {
+
+    int refcount;
+
+
+
+
+
+
+
+    void setDebugToken(uint32_t token) {
+
+
+
+    }
+
+
+
+
+
+    __attribute__((visibility("default"))) void dump();
+
+};
+
+extern __attribute__((visibility("default"))) void
+JS_HoldPrincipals(JSPrincipals *principals);
+
+extern __attribute__((visibility("default"))) void
+JS_DropPrincipals(JSRuntime *rt, JSPrincipals *principals);
+
+struct JSSecurityCallbacks {
+    JSCheckAccessOp checkObjectAccess;
+    JSSubsumePrincipalsOp subsumePrincipals;
+    JSObjectPrincipalsFinder findObjectPrincipals;
+    JSCSPEvalChecker contentSecurityPolicyAllows;
+    JSPushContextPrincipalOp pushContextPrincipal;
+    JSPopContextPrincipalOp popContextPrincipal;
+};
+
+extern __attribute__((visibility("default"))) void
+JS_SetSecurityCallbacks(JSRuntime *rt, const JSSecurityCallbacks *callbacks);
+
+extern __attribute__((visibility("default"))) const JSSecurityCallbacks *
+JS_GetSecurityCallbacks(JSRuntime *rt);
+# 4388 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) void
+JS_SetTrustedPrincipals(JSRuntime *rt, JSPrincipals *prin);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_InitDestroyPrincipalsCallback(JSRuntime *rt, JSDestroyPrincipalsOp destroyPrincipals);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_NewFunction(JSContext *cx, JSNative call, unsigned nargs, unsigned flags,
+               JSObject *parent, const char *name);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_NewFunctionById(JSContext *cx, JSNative call, unsigned nargs, unsigned flags,
+                   JSObject *parent, jsid id);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetFunctionObject(JSFunction *fun);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSString *
+JS_GetFunctionId(JSFunction *fun);
+
+
+
+
+extern __attribute__((visibility("default"))) unsigned
+JS_GetFunctionFlags(JSFunction *fun);
+
+
+
+
+extern __attribute__((visibility("default"))) uint16_t
+JS_GetFunctionArity(JSFunction *fun);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ObjectIsFunction(JSContext *cx, JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ObjectIsCallable(JSContext *cx, JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsNativeFunction(JSObject *funobj, JSNative call);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSObject*
+JS_BindCallable(JSContext *cx, JSObject *callable, JSObject *newThis);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DefineFunctions(JSContext *cx, JSObject *obj, JSFunctionSpec *fs);
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_DefineFunction(JSContext *cx, JSObject *obj, const char *name, JSNative call,
+                  unsigned nargs, unsigned attrs);
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_DefineUCFunction(JSContext *cx, JSObject *obj,
+                    const jschar *name, size_t namelen, JSNative call,
+                    unsigned nargs, unsigned attrs);
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_DefineFunctionById(JSContext *cx, JSObject *obj, jsid id, JSNative call,
+                      unsigned nargs, unsigned attrs);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_CloneFunctionObject(JSContext *cx, JSObject *funobj, JSObject *parent);
+# 4489 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_BufferIsCompilableUnit(JSContext *cx, JSBool bytes_are_utf8,
+                          JSObject *obj, const char *bytes, size_t length);
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_CompileScript(JSContext *cx, JSObject *obj,
+                 const char *bytes, size_t length,
+                 const char *filename, unsigned lineno);
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_CompileScriptForPrincipals(JSContext *cx, JSObject *obj,
+                              JSPrincipals *principals,
+                              const char *bytes, size_t length,
+                              const char *filename, unsigned lineno);
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_CompileScriptForPrincipalsVersion(JSContext *cx, JSObject *obj,
+                                     JSPrincipals *principals,
+                                     const char *bytes, size_t length,
+                                     const char *filename, unsigned lineno,
+                                     JSVersion version);
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_CompileUCScript(JSContext *cx, JSObject *obj,
+                   const jschar *chars, size_t length,
+                   const char *filename, unsigned lineno);
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_CompileUCScriptForPrincipals(JSContext *cx, JSObject *obj,
+                                JSPrincipals *principals,
+                                const jschar *chars, size_t length,
+                                const char *filename, unsigned lineno);
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_CompileUCScriptForPrincipalsVersion(JSContext *cx, JSObject *obj,
+                                       JSPrincipals *principals,
+                                       const jschar *chars, size_t length,
+                                       const char *filename, unsigned lineno,
+                                       JSVersion version);
+
+
+
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_CompileUCScriptForPrincipalsVersionOrigin(JSContext *cx, JSObject *obj,
+                                             JSPrincipals *principals,
+                                             JSPrincipals *originPrincipals,
+                                             const jschar *chars, size_t length,
+                                             const char *filename, unsigned lineno,
+                                             JSVersion version);
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_CompileUTF8File(JSContext *cx, JSObject *obj, const char *filename);
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_CompileUTF8FileHandle(JSContext *cx, JSObject *obj, const char *filename,
+                         FILE *fh);
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_CompileUTF8FileHandleForPrincipals(JSContext *cx, JSObject *obj,
+                                      const char *filename, FILE *fh,
+                                      JSPrincipals *principals);
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_CompileUTF8FileHandleForPrincipalsVersion(JSContext *cx, JSObject *obj,
+                                             const char *filename, FILE *fh,
+                                             JSPrincipals *principals,
+                                             JSVersion version);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetGlobalFromScript(JSScript *script);
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_CompileFunction(JSContext *cx, JSObject *obj, const char *name,
+                   unsigned nargs, const char **argnames,
+                   const char *bytes, size_t length,
+                   const char *filename, unsigned lineno);
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_CompileFunctionForPrincipals(JSContext *cx, JSObject *obj,
+                                JSPrincipals *principals, const char *name,
+                                unsigned nargs, const char **argnames,
+                                const char *bytes, size_t length,
+                                const char *filename, unsigned lineno);
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_CompileUCFunction(JSContext *cx, JSObject *obj, const char *name,
+                     unsigned nargs, const char **argnames,
+                     const jschar *chars, size_t length,
+                     const char *filename, unsigned lineno);
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_CompileUCFunctionForPrincipals(JSContext *cx, JSObject *obj,
+                                  JSPrincipals *principals, const char *name,
+                                  unsigned nargs, const char **argnames,
+                                  const jschar *chars, size_t length,
+                                  const char *filename, unsigned lineno);
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_CompileUCFunctionForPrincipalsVersion(JSContext *cx, JSObject *obj,
+                                         JSPrincipals *principals, const char *name,
+                                         unsigned nargs, const char **argnames,
+                                         const jschar *chars, size_t length,
+                                         const char *filename, unsigned lineno,
+                                         JSVersion version);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_DecompileScript(JSContext *cx, JSScript *script, const char *name, unsigned indent);
+
+
+
+
+
+#define JS_DONT_PRETTY_PRINT ((unsigned)0x8000)
+
+extern __attribute__((visibility("default"))) JSString *
+JS_DecompileFunction(JSContext *cx, JSFunction *fun, unsigned indent);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_DecompileFunctionBody(JSContext *cx, JSFunction *fun, unsigned indent);
+# 4645 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_ExecuteScript(JSContext *cx, JSObject *obj, JSScript *script, jsval *rval);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ExecuteScriptVersion(JSContext *cx, JSObject *obj, JSScript *script, jsval *rval,
+                        JSVersion version);
+
+
+
+
+
+typedef enum JSExecPart { JSEXEC_PROLOG, JSEXEC_MAIN } JSExecPart;
+
+extern __attribute__((visibility("default"))) JSBool
+JS_EvaluateScript(JSContext *cx, JSObject *obj,
+                  const char *bytes, unsigned length,
+                  const char *filename, unsigned lineno,
+                  jsval *rval);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_EvaluateScriptForPrincipals(JSContext *cx, JSObject *obj,
+                               JSPrincipals *principals,
+                               const char *bytes, unsigned length,
+                               const char *filename, unsigned lineno,
+                               jsval *rval);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_EvaluateScriptForPrincipalsVersion(JSContext *cx, JSObject *obj,
+                                      JSPrincipals *principals,
+                                      const char *bytes, unsigned length,
+                                      const char *filename, unsigned lineno,
+                                      jsval *rval, JSVersion version);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_EvaluateUCScript(JSContext *cx, JSObject *obj,
+                    const jschar *chars, unsigned length,
+                    const char *filename, unsigned lineno,
+                    jsval *rval);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_EvaluateUCScriptForPrincipals(JSContext *cx, JSObject *obj,
+                                 JSPrincipals *principals,
+                                 const jschar *chars, unsigned length,
+                                 const char *filename, unsigned lineno,
+                                 jsval *rval);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_EvaluateUCScriptForPrincipalsVersion(JSContext *cx, JSObject *obj,
+                                        JSPrincipals *principals,
+                                        const jschar *chars, unsigned length,
+                                        const char *filename, unsigned lineno,
+                                        jsval *rval, JSVersion version);
+# 4706 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_EvaluateUCScriptForPrincipalsVersionOrigin(JSContext *cx, JSObject *obj,
+                                              JSPrincipals *principals,
+                                              JSPrincipals *originPrincipals,
+                                              const jschar *chars, unsigned length,
+                                              const char *filename, unsigned lineno,
+                                              jsval *rval, JSVersion version);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_CallFunction(JSContext *cx, JSObject *obj, JSFunction *fun, unsigned argc,
+                jsval *argv, jsval *rval);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_CallFunctionName(JSContext *cx, JSObject *obj, const char *name, unsigned argc,
+                    jsval *argv, jsval *rval);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_CallFunctionValue(JSContext *cx, JSObject *obj, jsval fval, unsigned argc,
+                     jsval *argv, jsval *rval);
+
+
+}
+
+namespace JS {
+
+static inline bool
+Call(JSContext *cx, JSObject *thisObj, JSFunction *fun, unsigned argc, jsval *argv, jsval *rval) {
+    return !!JS_CallFunction(cx, thisObj, fun, argc, argv, rval);
+}
+
+static inline bool
+Call(JSContext *cx, JSObject *thisObj, const char *name, unsigned argc, jsval *argv, jsval *rval) {
+    return !!JS_CallFunctionName(cx, thisObj, name, argc, argv, rval);
+}
+
+static inline bool
+Call(JSContext *cx, JSObject *thisObj, jsval fun, unsigned argc, jsval *argv, jsval *rval) {
+    return !!JS_CallFunctionValue(cx, thisObj, fun, argc, argv, rval);
+}
+
+extern __attribute__((visibility("default"))) bool
+Call(JSContext *cx, jsval thisv, jsval fun, unsigned argc, jsval *argv, jsval *rval);
+
+static inline bool
+Call(JSContext *cx, jsval thisv, JSObject *funObj, unsigned argc, jsval *argv, jsval *rval) {
+    return Call(cx, thisv, OBJECT_TO_JSVAL(funObj), argc, argv, rval);
+}
+
+}
+
+extern "C" {
+# 4772 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSOperationCallback
+JS_SetOperationCallback(JSContext *cx, JSOperationCallback callback);
+
+extern __attribute__((visibility("default"))) JSOperationCallback
+JS_GetOperationCallback(JSContext *cx);
+
+extern __attribute__((visibility("default"))) void
+JS_TriggerOperationCallback(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsRunning(JSContext *cx);
+# 4795 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_SaveFrameChain(JSContext *cx);
+
+extern __attribute__((visibility("default"))) void
+JS_RestoreFrameChain(JSContext *cx);
+# 4829 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSString *
+JS_NewStringCopyN(JSContext *cx, const char *s, size_t n);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_NewStringCopyZ(JSContext *cx, const char *s);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_InternJSString(JSContext *cx, JSString *str);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_InternString(JSContext *cx, const char *s);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_NewUCString(JSContext *cx, jschar *chars, size_t length);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_NewUCStringCopyN(JSContext *cx, const jschar *s, size_t n);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_NewUCStringCopyZ(JSContext *cx, const jschar *s);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_InternUCStringN(JSContext *cx, const jschar *s, size_t length);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_InternUCString(JSContext *cx, const jschar *s);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_CompareStrings(JSContext *cx, JSString *str1, JSString *str2, int32_t *result);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_StringEqualsAscii(JSContext *cx, JSString *str, const char *asciiBytes, JSBool *match);
+
+extern __attribute__((visibility("default"))) size_t
+JS_PutEscapedString(JSContext *cx, char *buffer, size_t size, JSString *str, char quote);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_FileEscapedString(FILE *fp, JSString *str, char quote);
+# 4903 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) size_t
+JS_GetStringLength(JSString *str);
+
+extern __attribute__((visibility("default"))) const jschar *
+JS_GetStringCharsAndLength(JSContext *cx, JSString *str, size_t *length);
+
+extern __attribute__((visibility("default"))) const jschar *
+JS_GetInternedStringChars(JSString *str);
+
+extern __attribute__((visibility("default"))) const jschar *
+JS_GetInternedStringCharsAndLength(JSString *str, size_t *length);
+
+extern __attribute__((visibility("default"))) const jschar *
+JS_GetStringCharsZ(JSContext *cx, JSString *str);
+
+extern __attribute__((visibility("default"))) const jschar *
+JS_GetStringCharsZAndLength(JSContext *cx, JSString *str, size_t *length);
+
+extern __attribute__((visibility("default"))) JSFlatString *
+JS_FlattenString(JSContext *cx, JSString *str);
+
+extern __attribute__((visibility("default"))) const jschar *
+JS_GetFlatStringChars(JSFlatString *str);
+
+static __attribute__((always_inline)) inline JSFlatString *
+JSID_TO_FLAT_STRING(jsid id)
+{
+    do { } while(0);
+    return (JSFlatString *)((id));
+}
+
+static __attribute__((always_inline)) inline JSFlatString *
+JS_ASSERT_STRING_IS_FLAT(JSString *str)
+{
+    do { } while(0);
+    return (JSFlatString *)str;
+}
+
+static __attribute__((always_inline)) inline JSString *
+JS_FORGET_STRING_FLATNESS(JSFlatString *fstr)
+{
+    return (JSString *)fstr;
+}
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_FlatStringEqualsAscii(JSFlatString *str, const char *asciiBytes);
+
+extern __attribute__((visibility("default"))) size_t
+JS_PutEscapedFlatString(char *buffer, size_t size, JSFlatString *str, char quote);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSString *
+JS_NewGrowableString(JSContext *cx, jschar *chars, size_t length);
+# 4990 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSString *
+JS_NewDependentString(JSContext *cx, JSString *str, size_t start,
+                      size_t length);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSString *
+JS_ConcatStrings(JSContext *cx, JSString *left, JSString *right);
+
+
+
+
+
+extern __attribute__((visibility("default"))) const jschar *
+JS_UndependString(JSContext *cx, JSString *str);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_MakeStringImmutable(JSContext *cx, JSString *str);
+
+
+
+
+
+__attribute__((visibility("default"))) JSBool
+JS_CStringsAreUTF8(void);
+
+
+
+
+
+
+__attribute__((visibility("default"))) void
+JS_SetCStringsAreUTF8(void);
+# 5053 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+__attribute__((visibility("default"))) JSBool
+JS_EncodeCharacters(JSContext *cx, const jschar *src, size_t srclen, char *dst,
+                    size_t *dstlenp);
+
+__attribute__((visibility("default"))) JSBool
+JS_DecodeBytes(JSContext *cx, const char *src, size_t srclen, jschar *dst,
+               size_t *dstlenp);
+
+__attribute__((visibility("default"))) JSBool
+JS_DecodeUTF8(JSContext *cx, const char *src, size_t srclen, jschar *dst,
+              size_t *dstlenp);
+
+
+
+
+
+__attribute__((visibility("default"))) char *
+JS_EncodeString(JSContext *cx, JSString *str);
+
+
+
+
+
+
+__attribute__((visibility("default"))) size_t
+JS_GetStringEncodingLength(JSContext *cx, JSString *str);
+# 5093 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+__attribute__((visibility("default"))) size_t
+JS_EncodeStringToBuffer(JSString *str, char *buffer, size_t length);
+
+
+
+class JSAutoByteString {
+  public:
+    JSAutoByteString(JSContext *cx, JSString *str )
+      : mBytes(JS_EncodeString(cx, str)) {
+        do { } while(0);
+        do { } while (0);
+    }
+
+    JSAutoByteString()
+      : mBytes(__null) {
+        do { } while (0);
+    }
+
+    ~JSAutoByteString() {
+        js::UnwantedForeground::free_(mBytes);
+    }
+
+
+    void initBytes(char *bytes) {
+        do { } while(0);
+        mBytes = bytes;
+    }
+
+    char *encode(JSContext *cx, JSString *str) {
+        do { } while(0);
+        do { } while(0);
+        mBytes = JS_EncodeString(cx, str);
+        return mBytes;
+    }
+
+    void clear() {
+        js::UnwantedForeground::free_(mBytes);
+        mBytes = __null;
+    }
+
+    char *ptr() const {
+        return mBytes;
+    }
+
+    bool operator!() const {
+        return !mBytes;
+    }
+
+  private:
+    char *mBytes;
+   
+
+
+    JSAutoByteString(const JSAutoByteString &another);
+    JSAutoByteString &operator=(const JSAutoByteString &another);
+};
+
+
+
+
+
+
+
+typedef JSBool (* JSONWriteCallback)(const jschar *buf, uint32_t len, void *data);
+
+
+
+
+__attribute__((visibility("default"))) JSBool
+JS_Stringify(JSContext *cx, jsval *vp, JSObject *replacer, jsval space,
+             JSONWriteCallback callback, void *data);
+
+
+
+
+__attribute__((visibility("default"))) JSBool
+JS_ParseJSON(JSContext *cx, const jschar *chars, uint32_t len, jsval *vp);
+
+__attribute__((visibility("default"))) JSBool
+JS_ParseJSONWithReviver(JSContext *cx, const jschar *chars, uint32_t len, jsval reviver,
+                        jsval *vp);
+
+
+
+
+
+
+#define JS_STRUCTURED_CLONE_VERSION 1
+
+struct JSStructuredCloneCallbacks {
+    ReadStructuredCloneOp read;
+    WriteStructuredCloneOp write;
+    StructuredCloneErrorOp reportError;
+};
+
+__attribute__((visibility("default"))) JSBool
+JS_ReadStructuredClone(JSContext *cx, const uint64_t *data, size_t nbytes,
+                       uint32_t version, jsval *vp,
+                       const JSStructuredCloneCallbacks *optionalCallbacks,
+                       void *closure);
+
+
+__attribute__((visibility("default"))) JSBool
+JS_WriteStructuredClone(JSContext *cx, jsval v, uint64_t **datap, size_t *nbytesp,
+                        const JSStructuredCloneCallbacks *optionalCallbacks,
+                        void *closure);
+
+__attribute__((visibility("default"))) JSBool
+JS_StructuredClone(JSContext *cx, jsval v, jsval *vp,
+                   const JSStructuredCloneCallbacks *optionalCallbacks,
+                   void *closure);
+
+
+}
+
+
+class __attribute__((visibility("default"))) JSAutoStructuredCloneBuffer {
+    uint64_t *data_;
+    size_t nbytes_;
+    uint32_t version_;
+
+  public:
+    JSAutoStructuredCloneBuffer()
+        : data_(__null), nbytes_(0), version_(1) {}
+
+    ~JSAutoStructuredCloneBuffer() { clear(); }
+
+    uint64_t *data() const { return data_; }
+    size_t nbytes() const { return nbytes_; }
+
+    void clear();
+
+
+    bool copy(const uint64_t *data, size_t nbytes, uint32_t version=1);
+
+
+
+
+
+
+    void adopt(uint64_t *data, size_t nbytes, uint32_t version=1);
+
+
+
+
+
+
+    void steal(uint64_t **datap, size_t *nbytesp, uint32_t *versionp=__null);
+
+    bool read(JSContext *cx, jsval *vp,
+              const JSStructuredCloneCallbacks *optionalCallbacks=__null,
+              void *closure=__null) const;
+
+    bool write(JSContext *cx, jsval v,
+               const JSStructuredCloneCallbacks *optionalCallbacks=__null,
+               void *closure=__null);
+
+
+
+
+    void swap(JSAutoStructuredCloneBuffer &other);
+
+  private:
+
+    JSAutoStructuredCloneBuffer(const JSAutoStructuredCloneBuffer &other);
+    JSAutoStructuredCloneBuffer &operator=(const JSAutoStructuredCloneBuffer &other);
+};
+
+extern "C" {
+
+
+
+
+
+#define JS_SCTAG_USER_MIN ((uint32_t) 0xFFFF8000)
+#define JS_SCTAG_USER_MAX ((uint32_t) 0xFFFFFFFF)
+
+#define JS_SCERR_RECURSION 0
+
+__attribute__((visibility("default"))) void
+JS_SetStructuredCloneCallbacks(JSRuntime *rt, const JSStructuredCloneCallbacks *callbacks);
+
+__attribute__((visibility("default"))) JSBool
+JS_ReadUint32Pair(JSStructuredCloneReader *r, uint32_t *p1, uint32_t *p2);
+
+__attribute__((visibility("default"))) JSBool
+JS_ReadBytes(JSStructuredCloneReader *r, void *p, size_t len);
+
+__attribute__((visibility("default"))) JSBool
+JS_ReadTypedArray(JSStructuredCloneReader *r, jsval *vp);
+
+__attribute__((visibility("default"))) JSBool
+JS_WriteUint32Pair(JSStructuredCloneWriter *w, uint32_t tag, uint32_t data);
+
+__attribute__((visibility("default"))) JSBool
+JS_WriteBytes(JSStructuredCloneWriter *w, const void *p, size_t len);
+
+__attribute__((visibility("default"))) JSBool
+JS_WriteTypedArray(JSStructuredCloneWriter *w, jsval v);
+
+
+
+
+
+
+struct JSLocaleCallbacks {
+    JSLocaleToUpperCase localeToUpperCase;
+    JSLocaleToLowerCase localeToLowerCase;
+    JSLocaleCompare localeCompare;
+    JSLocaleToUnicode localeToUnicode;
+    JSErrorCallback localeGetErrorMessage;
+};
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_SetLocaleCallbacks(JSContext *cx, JSLocaleCallbacks *callbacks);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSLocaleCallbacks *
+JS_GetLocaleCallbacks(JSContext *cx);
+# 5331 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) void
+JS_ReportError(JSContext *cx, const char *format, ...);
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_ReportErrorNumber(JSContext *cx, JSErrorCallback errorCallback,
+                     void *userRef, const unsigned errorNumber, ...);
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_ReportErrorNumberUC(JSContext *cx, JSErrorCallback errorCallback,
+                     void *userRef, const unsigned errorNumber, ...);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ReportWarning(JSContext *cx, const char *format, ...);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ReportErrorFlagsAndNumber(JSContext *cx, unsigned flags,
+                             JSErrorCallback errorCallback, void *userRef,
+                             const unsigned errorNumber, ...);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ReportErrorFlagsAndNumberUC(JSContext *cx, unsigned flags,
+                               JSErrorCallback errorCallback, void *userRef,
+                               const unsigned errorNumber, ...);
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_ReportOutOfMemory(JSContext *cx);
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_ReportAllocationOverflow(JSContext *cx);
+
+struct JSErrorReport {
+    const char *filename;
+    JSPrincipals *originPrincipals;
+    unsigned lineno;
+    const char *linebuf;
+    const char *tokenptr;
+    const jschar *uclinebuf;
+    const jschar *uctokenptr;
+    unsigned flags;
+    unsigned errorNumber;
+    const jschar *ucmessage;
+    const jschar **messageArgs;
+};
+
+
+
+
+#define JSREPORT_ERROR 0x0
+#define JSREPORT_WARNING 0x1
+#define JSREPORT_EXCEPTION 0x2
+#define JSREPORT_STRICT 0x4
+# 5408 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JSREPORT_STRICT_MODE_ERROR 0x8
+# 5417 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+#define JSREPORT_IS_WARNING(flags) (((flags) & JSREPORT_WARNING) != 0)
+#define JSREPORT_IS_EXCEPTION(flags) (((flags) & JSREPORT_EXCEPTION) != 0)
+#define JSREPORT_IS_STRICT(flags) (((flags) & JSREPORT_STRICT) != 0)
+#define JSREPORT_IS_STRICT_MODE_ERROR(flags) (((flags) & JSREPORT_STRICT_MODE_ERROR) != 0)
+
+extern __attribute__((visibility("default"))) JSErrorReporter
+JS_GetErrorReporter(JSContext *cx);
+
+extern __attribute__((visibility("default"))) JSErrorReporter
+JS_SetErrorReporter(JSContext *cx, JSErrorReporter er);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewDateObject(JSContext *cx, int year, int mon, int mday, int hour, int min, int sec);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewDateObjectMsec(JSContext *cx, double msec);
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ObjectIsDate(JSContext *cx, JSObject *obj);
+
+
+
+
+
+
+#define JSREG_FOLD 0x01
+#define JSREG_GLOB 0x02
+#define JSREG_MULTILINE 0x04
+#define JSREG_STICKY 0x08
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewRegExpObject(JSContext *cx, JSObject *obj, char *bytes, size_t length, unsigned flags);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUCRegExpObject(JSContext *cx, JSObject *obj, jschar *chars, size_t length, unsigned flags);
+
+extern __attribute__((visibility("default"))) void
+JS_SetRegExpInput(JSContext *cx, JSObject *obj, JSString *input, JSBool multiline);
+
+extern __attribute__((visibility("default"))) void
+JS_ClearRegExpStatics(JSContext *cx, JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ExecuteRegExp(JSContext *cx, JSObject *obj, JSObject *reobj, jschar *chars, size_t length,
+                 size_t *indexp, JSBool test, jsval *rval);
+
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewRegExpObjectNoStatics(JSContext *cx, char *bytes, size_t length, unsigned flags);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUCRegExpObjectNoStatics(JSContext *cx, jschar *chars, size_t length, unsigned flags);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ExecuteRegExpNoStatics(JSContext *cx, JSObject *reobj, jschar *chars, size_t length,
+                          size_t *indexp, JSBool test, jsval *rval);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ObjectIsRegExp(JSContext *cx, JSObject *obj);
+
+extern __attribute__((visibility("default"))) unsigned
+JS_GetRegExpFlags(JSContext *cx, JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_GetRegExpSource(JSContext *cx, JSObject *obj);
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsExceptionPending(JSContext *cx);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetPendingException(JSContext *cx, jsval *vp);
+
+extern __attribute__((visibility("default"))) void
+JS_SetPendingException(JSContext *cx, jsval v);
+
+extern __attribute__((visibility("default"))) void
+JS_ClearPendingException(JSContext *cx);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ReportPendingException(JSContext *cx);
+# 5521 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSExceptionState *
+JS_SaveExceptionState(JSContext *cx);
+
+extern __attribute__((visibility("default"))) void
+JS_RestoreExceptionState(JSContext *cx, JSExceptionState *state);
+
+extern __attribute__((visibility("default"))) void
+JS_DropExceptionState(JSContext *cx, JSExceptionState *state);
+# 5537 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSErrorReport *
+JS_ErrorFromException(JSContext *cx, jsval v);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ThrowReportedError(JSContext *cx, const char *message,
+                      JSErrorReport *reportp);
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ThrowStopIteration(JSContext *cx);
+
+extern __attribute__((visibility("default"))) intptr_t
+JS_GetCurrentThread();
+# 5573 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) void
+JS_AbortIfWrongThread(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) void
+JS_ClearRuntimeThread(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) void
+JS_SetRuntimeThread(JSRuntime *rt);
+
+
+}
+
+class JSAutoSetRuntimeThread
+{
+    JSRuntime *runtime;
+
+  public:
+    JSAutoSetRuntimeThread(JSRuntime *runtime) : runtime(runtime) {
+        JS_SetRuntimeThread(runtime);
+    }
+
+    ~JSAutoSetRuntimeThread() {
+        JS_ClearRuntimeThread(runtime);
+    }
+};
+
+extern "C" {
+# 5611 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+static __attribute__((always_inline)) inline JSBool
+JS_IsConstructing(JSContext *cx, const jsval *vp)
+{
+# 5623 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+    (void)cx;
+
+
+    return JSVAL_IS_MAGIC_IMPL(JSVAL_TO_IMPL(vp[1]));
+}
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewObjectForConstructor(JSContext *cx, JSClass *clasp, const jsval *vp);
+# 5656 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_IndexToId(JSContext *cx, uint32_t index, jsid *id);
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsIdentifier(JSContext *cx, JSString *str, JSBool *isIdentifier);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DescribeScriptedCaller(JSContext *cx, JSScript **script, unsigned *lineno);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) void *
+JS_EncodeScript(JSContext *cx, JSScript *script, uint32_t *lengthp);
+
+extern __attribute__((visibility("default"))) void *
+JS_EncodeInterpretedFunction(JSContext *cx, JSObject *funobj, uint32_t *lengthp);
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_DecodeScript(JSContext *cx, const void *data, uint32_t length,
+                JSPrincipals *principals, JSPrincipals *originPrincipals);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_DecodeInterpretedFunction(JSContext *cx, const void *data, uint32_t length,
+                             JSPrincipals *principals, JSPrincipals *originPrincipals);
+
+}
+# 20 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h" 1
+
+
+
+
+
+
+
+#define jsatom_h___ 
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 11 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h" 1
+# 42 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_VERSION_ECMA_3 148
+#define JS_VERSION_ECMA_3_TEST 149
+# 124 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_HAS_STR_HTML_HELPERS 1
+#define JS_HAS_OBJ_PROTO_PROP 1
+#define JS_HAS_OBJ_WATCHPOINT 1
+#define JS_HAS_TOSOURCE 1
+#define JS_HAS_CATCH_GUARD 1
+#define JS_HAS_UNEVAL 1
+#define JS_HAS_CONST 1
+#define JS_HAS_FUN_EXPR_STMT 1
+#define JS_HAS_NO_SUCH_METHOD 1
+#define JS_HAS_GENERATORS 1
+#define JS_HAS_BLOCK_SCOPE 1
+#define JS_HAS_DESTRUCTURING 2
+#define JS_HAS_GENERATOR_EXPRS 1
+#define JS_HAS_EXPR_CLOSURES 1
+# 146 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_HAS_NEW_GLOBAL_OBJECT 1
+
+
+#define JS_HAS_MAKE_SYSTEM_OBJECT 1
+
+
+#define JS_HAS_DESTRUCTURING_SHORTHAND (JS_HAS_DESTRUCTURING == 2)
+
+
+
+
+
+#define OLD_GETTER_SETTER_METHODS 1
+
+
+#define USE_NEW_OBJECT_REPRESENTATION 0
+
+
+
+
+#define NEW_OBJECT_REPRESENTATION_ONLY() MOZ_NOT_REACHED("don't call this!  to be used in the new object representation")
+# 12 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprvtd.h" 1
+
+
+
+
+
+
+
+#define jsprvtd_h___ 
+# 28 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprvtd.h"
+# 1 "./../../dist/include/js/HashTable.h" 1
+# 9 "./../../dist/include/js/HashTable.h"
+#define jshashtable_h_ 
+
+
+
+
+namespace js {
+
+class TempAllocPolicy;
+
+
+typedef uint32_t HashNumber;
+
+
+
+namespace detail {
+
+template <class T, class HashPolicy, class AllocPolicy>
+class HashTable;
+
+template <class T>
+class HashTableEntry {
+    HashNumber keyHash;
+
+    typedef typename tl::StripConst<T>::result NonConstT;
+
+    static const HashNumber sFreeKey = 0;
+    static const HashNumber sRemovedKey = 1;
+    static const HashNumber sCollisionBit = 1;
+
+    template <class, class, class> friend class HashTable;
+
+    static bool isLiveHash(HashNumber hash)
+    {
+        return hash > sRemovedKey;
+    }
+
+  public:
+    HashTableEntry() : keyHash(0), t() {}
+    HashTableEntry(MoveRef<HashTableEntry> rhs) : keyHash(rhs->keyHash), t(Move(rhs->t)) { }
+    void operator=(const HashTableEntry &rhs) { keyHash = rhs.keyHash; t = rhs.t; }
+    void operator=(MoveRef<HashTableEntry> rhs) { keyHash = rhs->keyHash; t = Move(rhs->t); }
+
+    NonConstT t;
+
+    bool isFree() const { return keyHash == sFreeKey; }
+    void setFree() { keyHash = sFreeKey; t = T(); }
+    bool isRemoved() const { return keyHash == sRemovedKey; }
+    void setRemoved() { keyHash = sRemovedKey; t = T(); }
+    bool isLive() const { return isLiveHash(keyHash); }
+    void setLive(HashNumber hn) { do { } while(0); keyHash = hn; }
+
+    void setCollision() { do { } while(0); keyHash |= sCollisionBit; }
+    void setCollision(HashNumber collisionBit) {
+        do { } while(0); keyHash |= collisionBit;
+    }
+    void unsetCollision() { keyHash &= ~sCollisionBit; }
+    bool hasCollision() const { do { } while(0); return keyHash & sCollisionBit; }
+    bool matchHash(HashNumber hn) { return (keyHash & ~sCollisionBit) == hn; }
+    HashNumber getKeyHash() const { do { } while(0); return keyHash; }
+};
+# 77 "./../../dist/include/js/HashTable.h"
+template <class T, class HashPolicy, class AllocPolicy>
+class HashTable : private AllocPolicy
+{
+    typedef typename tl::StripConst<T>::result NonConstT;
+    typedef typename HashPolicy::KeyType Key;
+    typedef typename HashPolicy::Lookup Lookup;
+
+  public:
+    typedef HashTableEntry<T> Entry;
+
+
+
+
+
+
+
+    class Ptr
+    {
+        friend class HashTable;
+        typedef void (Ptr::* ConvertibleToBool)();
+        void nonNull() {}
+
+        Entry *entry;
+
+      protected:
+        Ptr(Entry &entry) : entry(&entry) {}
+
+      public:
+
+        Ptr() {
+
+
+
+        }
+
+        bool found() const { return entry->isLive(); }
+        operator ConvertibleToBool() const { return found() ? &Ptr::nonNull : 0; }
+        bool operator==(const Ptr &rhs) const { do { } while(0); return entry == rhs.entry; }
+        bool operator!=(const Ptr &rhs) const { return !(*this == rhs); }
+
+        T &operator*() const { return entry->t; }
+        T *operator->() const { return &entry->t; }
+    };
+
+
+    class AddPtr : public Ptr
+    {
+        friend class HashTable;
+        HashNumber keyHash;
+        DebugOnly<uint64_t> mutationCount;
+
+        AddPtr(Entry &entry, HashNumber hn) : Ptr(entry), keyHash(hn) {}
+      public:
+
+        AddPtr() {}
+    };
+
+
+
+
+
+
+
+    class Range
+    {
+      protected:
+        friend class HashTable;
+
+        Range(Entry *c, Entry *e) : cur(c), end(e), validEntry(true) {
+            while (cur < end && !cur->isLive())
+                ++cur;
+        }
+
+        Entry *cur, *end;
+        DebugOnly<bool> validEntry;
+
+      public:
+        Range() : cur(__null), end(__null), validEntry(false) {}
+
+        bool empty() const {
+            return cur == end;
+        }
+
+        T &front() const {
+            do { } while(0);
+            do { } while(0);
+            return cur->t;
+        }
+
+        void popFront() {
+            do { } while(0);
+            while (++cur < end && !cur->isLive())
+                continue;
+            validEntry = true;
+        }
+    };
+# 183 "./../../dist/include/js/HashTable.h"
+    class Enum : public Range
+    {
+        friend class HashTable;
+
+        HashTable &table;
+        bool added;
+        bool removed;
+
+
+        Enum(const Enum &);
+        void operator=(const Enum &);
+
+      public:
+        template<class Map> explicit
+        Enum(Map &map) : Range(map.all()), table(map.impl), added(false), removed(false) {}
+# 208 "./../../dist/include/js/HashTable.h"
+        void removeFront() {
+            table.remove(*this->cur);
+            removed = true;
+            this->validEntry = false;
+        }
+
+
+
+
+
+
+        void rekeyFront(const Lookup &l, const Key &k) {
+            do { } while(0);
+            if (match(*this->cur, l))
+                return;
+            Entry e = *this->cur;
+            HashPolicy::setKey(e.t, const_cast<Key &>(k));
+            table.remove(*this->cur);
+            table.add(l, e);
+            added = true;
+            this->validEntry = false;
+        }
+
+        void rekeyFront(const Key &k) {
+            rekeyFront(k, k);
+        }
+
+
+        ~Enum() {
+            if (added)
+                table.checkOverloaded();
+            if (removed)
+                table.checkUnderloaded();
+        }
+
+
+        void endEnumeration() {
+            if (added) {
+                table.checkOverloaded();
+                added = false;
+            }
+            if (removed) {
+                table.checkUnderloaded();
+                removed = false;
+            }
+        }
+    };
+
+  private:
+    uint32_t hashShift;
+    uint32_t entryCount;
+    uint32_t gen;
+    uint32_t removedCount;
+    Entry *table;
+
+    void setTableSizeLog2(unsigned sizeLog2) {
+        hashShift = sHashBits - sizeLog2;
+    }
+# 282 "./../../dist/include/js/HashTable.h"
+#define METER(x) 
+
+
+    friend class js::ReentrancyGuard;
+    mutable DebugOnly<bool> entered;
+    DebugOnly<uint64_t> mutationCount;
+
+
+    static const unsigned sMinSizeLog2 = 2;
+    static const unsigned sMinSize = 1 << sMinSizeLog2;
+    static const unsigned sDefaultInitSizeLog2 = 4;
+  public:
+    static const unsigned sDefaultInitSize = 1 << sDefaultInitSizeLog2;
+  private:
+    static const unsigned sMaxInit = ((uint32_t)1 << (23));
+    static const unsigned sMaxCapacity = ((uint32_t)1 << (24));
+    static const unsigned sHashBits = tl::BitSize<HashNumber>::result;
+    static const uint8_t sMinAlphaFrac = 64;
+    static const uint8_t sMaxAlphaFrac = 192;
+    static const uint8_t sInvMaxAlpha = 171;
+    static const HashNumber sGoldenRatio = 0x9E3779B9U;
+    static const HashNumber sFreeKey = Entry::sFreeKey;
+    static const HashNumber sRemovedKey = Entry::sRemovedKey;
+    static const HashNumber sCollisionBit = Entry::sCollisionBit;
+
+    static void staticAsserts()
+    {
+
+        typedef int moz_static_assert14[(((sMaxInit * sInvMaxAlpha) >> 7) < sMaxCapacity) ? 1 : -1];
+        typedef int moz_static_assert15[((sMaxCapacity * sInvMaxAlpha) <= (4294967295U)) ? 1 : -1];
+        typedef int moz_static_assert16[((sMaxCapacity * sizeof(Entry)) <= (4294967295U)) ? 1 : -1];
+    }
+
+    static bool isLiveHash(HashNumber hash)
+    {
+        return Entry::isLiveHash(hash);
+    }
+
+    static HashNumber prepareHash(const Lookup& l)
+    {
+        HashNumber keyHash = HashPolicy::hash(l);
+
+
+        keyHash *= sGoldenRatio;
+
+
+        if (!isLiveHash(keyHash))
+            keyHash -= (sRemovedKey + 1);
+        return keyHash & ~sCollisionBit;
+    }
+
+    static Entry *createTable(AllocPolicy &alloc, uint32_t capacity)
+    {
+        Entry *newTable = (Entry *)alloc.malloc_(capacity * sizeof(Entry));
+        if (!newTable)
+            return __null;
+        for (Entry *e = newTable, *end = e + capacity; e < end; ++e)
+            new(e) Entry();
+        return newTable;
+    }
+
+    static void destroyTable(AllocPolicy &alloc, Entry *oldTable, uint32_t capacity)
+    {
+        for (Entry *e = oldTable, *end = e + capacity; e < end; ++e)
+            e->~Entry();
+        alloc.free_(oldTable);
+    }
+
+  public:
+    HashTable(AllocPolicy ap)
+      : AllocPolicy(ap),
+        hashShift(sHashBits),
+        entryCount(0),
+        gen(0),
+        removedCount(0),
+        table(__null),
+        entered(false),
+        mutationCount(0)
+    {}
+
+    __attribute__ ((warn_unused_result)) bool init(uint32_t length)
+    {
+
+        do { } while(0);
+
+
+
+
+
+        if (length > sMaxInit) {
+            this->reportAllocOverflow();
+            return false;
+        }
+        uint32_t capacity = (length * sInvMaxAlpha) >> 7;
+
+        if (capacity < sMinSize)
+            capacity = sMinSize;
+
+
+        uint32_t roundUp = sMinSize, roundUpLog2 = sMinSizeLog2;
+        while (roundUp < capacity) {
+            roundUp <<= 1;
+            ++roundUpLog2;
+        }
+
+        capacity = roundUp;
+        do { } while(0);
+
+        table = createTable(*this, capacity);
+        if (!table)
+            return false;
+
+        setTableSizeLog2(roundUpLog2);
+        ;
+        return true;
+    }
+
+    bool initialized() const
+    {
+        return !!table;
+    }
+
+    ~HashTable()
+    {
+        if (table)
+            destroyTable(*this, table, capacity());
+    }
+
+  private:
+    static HashNumber hash1(HashNumber hash0, uint32_t shift) {
+        return hash0 >> shift;
+    }
+
+    struct DoubleHash {
+        HashNumber h2;
+        HashNumber sizeMask;
+    };
+
+    DoubleHash hash2(HashNumber curKeyHash, uint32_t hashShift) const {
+        unsigned sizeLog2 = sHashBits - hashShift;
+        DoubleHash dh = {
+            ((curKeyHash << sizeLog2) >> hashShift) | 1,
+            (HashNumber(1) << sizeLog2) - 1
+        };
+        return dh;
+    }
+
+    static HashNumber applyDoubleHash(HashNumber h1, const DoubleHash &dh) {
+        return (h1 - dh.h2) & dh.sizeMask;
+    }
+
+    bool overloaded() {
+        return entryCount + removedCount >= ((sMaxAlphaFrac * capacity()) >> 8);
+    }
+
+    bool underloaded() {
+        uint32_t tableCapacity = capacity();
+        return tableCapacity > sMinSize &&
+               entryCount <= ((sMinAlphaFrac * tableCapacity) >> 8);
+    }
+
+    static bool match(Entry &e, const Lookup &l) {
+        return HashPolicy::match(HashPolicy::getKey(e.t), l);
+    }
+
+    Entry &lookup(const Lookup &l, HashNumber keyHash, unsigned collisionBit) const
+    {
+        do { } while(0);
+        do { } while(0);
+        do { } while(0);
+        do { } while(0);
+        ;
+
+
+        HashNumber h1 = hash1(keyHash, hashShift);
+        Entry *entry = &table[h1];
+
+
+        if (entry->isFree()) {
+            ;
+            return *entry;
+        }
+
+
+        if (entry->matchHash(keyHash) && match(*entry, l)) {
+            ;
+            return *entry;
+        }
+
+
+        DoubleHash dh = hash2(keyHash, hashShift);
+
+
+        Entry *firstRemoved = __null;
+
+        while(true) {
+            if ((__builtin_expect((entry->isRemoved()), 0))) {
+                if (!firstRemoved)
+                    firstRemoved = entry;
+            } else {
+                entry->setCollision(collisionBit);
+            }
+
+            ;
+            h1 = applyDoubleHash(h1, dh);
+
+            entry = &table[h1];
+            if (entry->isFree()) {
+                ;
+                return firstRemoved ? *firstRemoved : *entry;
+            }
+
+            if (entry->matchHash(keyHash) && match(*entry, l)) {
+                ;
+                return *entry;
+            }
+        }
+    }
+# 509 "./../../dist/include/js/HashTable.h"
+    Entry &findFreeEntry(HashNumber keyHash)
+    {
+        ;
+        do { } while(0);
+
+
+
+
+        HashNumber h1 = hash1(keyHash, hashShift);
+        Entry *entry = &table[h1];
+
+
+        if (entry->isFree()) {
+            ;
+            return *entry;
+        }
+
+
+        DoubleHash dh = hash2(keyHash, hashShift);
+
+        while(true) {
+            do { } while(0);
+            entry->setCollision();
+
+            ;
+            h1 = applyDoubleHash(h1, dh);
+
+            entry = &table[h1];
+            if (entry->isFree()) {
+                ;
+                return *entry;
+            }
+        }
+    }
+
+    bool changeTableSize(int deltaLog2)
+    {
+
+        Entry *oldTable = table;
+        uint32_t oldCap = capacity();
+        uint32_t newLog2 = sHashBits - hashShift + deltaLog2;
+        uint32_t newCapacity = ((uint32_t)1 << (newLog2));
+        if (newCapacity > sMaxCapacity) {
+            this->reportAllocOverflow();
+            return false;
+        }
+
+        Entry *newTable = createTable(*this, newCapacity);
+        if (!newTable)
+            return false;
+
+
+        setTableSizeLog2(newLog2);
+        removedCount = 0;
+        gen++;
+        table = newTable;
+
+
+        for (Entry *src = oldTable, *end = src + oldCap; src < end; ++src) {
+            if (src->isLive()) {
+                src->unsetCollision();
+                findFreeEntry(src->getKeyHash()) = Move(*src);
+            }
+        }
+
+        destroyTable(*this, oldTable, oldCap);
+        return true;
+    }
+
+    void add(const Lookup &l, const Entry &e)
+    {
+        HashNumber keyHash = prepareHash(l);
+        Entry &entry = lookup(l, keyHash, sCollisionBit);
+
+        if (entry.isRemoved()) {
+            ;
+            removedCount--;
+            keyHash |= sCollisionBit;
+        }
+
+        entry.t = e.t;
+        entry.setLive(keyHash);
+        entryCount++;
+        mutationCount++;
+    }
+
+    bool checkOverloaded()
+    {
+        if (!overloaded())
+            return false;
+
+
+        int deltaLog2;
+        if (removedCount >= (capacity() >> 2)) {
+            ;
+            deltaLog2 = 0;
+        } else {
+            ;
+            deltaLog2 = 1;
+        }
+
+        return changeTableSize(deltaLog2);
+    }
+
+    void remove(Entry &e)
+    {
+        ;
+        if (e.hasCollision()) {
+            e.setRemoved();
+            removedCount++;
+        } else {
+            ;
+            e.setFree();
+        }
+        entryCount--;
+        mutationCount++;
+    }
+
+    void checkUnderloaded()
+    {
+        if (underloaded()) {
+            ;
+            (void) changeTableSize(-1);
+        }
+    }
+
+  public:
+    void clear()
+    {
+        if (tl::IsPodType<Entry>::result) {
+            memset(table, 0, sizeof(*table) * capacity());
+        } else {
+            uint32_t tableCapacity = capacity();
+            for (Entry *e = table, *end = table + tableCapacity; e < end; ++e)
+                *e = Move(Entry());
+        }
+        removedCount = 0;
+        entryCount = 0;
+        mutationCount++;
+    }
+
+    void finish()
+    {
+        do { } while(0);
+
+        if (!table)
+            return;
+
+        destroyTable(*this, table, capacity());
+        table = __null;
+        gen++;
+        entryCount = 0;
+        removedCount = 0;
+        mutationCount++;
+    }
+
+    Range all() const {
+        return Range(table, table + capacity());
+    }
+
+    bool empty() const {
+        return !entryCount;
+    }
+
+    uint32_t count() const {
+        return entryCount;
+    }
+
+    uint32_t capacity() const {
+        return ((uint32_t)1 << (sHashBits - hashShift));
+    }
+
+    uint32_t generation() const {
+        return gen;
+    }
+
+    size_t sizeOfExcludingThis(JSMallocSizeOfFun mallocSizeOf) const {
+        return mallocSizeOf(table);
+    }
+
+    size_t sizeOfIncludingThis(JSMallocSizeOfFun mallocSizeOf) const {
+        return mallocSizeOf(this) + sizeOfExcludingThis(mallocSizeOf);
+    }
+
+    Ptr lookup(const Lookup &l) const {
+        ReentrancyGuard g(*this);
+        HashNumber keyHash = prepareHash(l);
+        return Ptr(lookup(l, keyHash, 0));
+    }
+
+    AddPtr lookupForAdd(const Lookup &l) const {
+        ReentrancyGuard g(*this);
+        HashNumber keyHash = prepareHash(l);
+        Entry &entry = lookup(l, keyHash, sCollisionBit);
+        AddPtr p(entry, keyHash);
+        p.mutationCount = mutationCount;
+        return p;
+    }
+
+    bool add(AddPtr &p)
+    {
+        ReentrancyGuard g(*this);
+        do { } while(0);
+        do { } while(0);
+        do { } while(0);
+        do { } while(0);
+
+
+
+
+
+        if (p.entry->isRemoved()) {
+            ;
+            removedCount--;
+            p.keyHash |= sCollisionBit;
+        } else {
+            if (checkOverloaded())
+
+                p.entry = &findFreeEntry(p.keyHash);
+        }
+
+        p.entry->setLive(p.keyHash);
+        entryCount++;
+        mutationCount++;
+        return true;
+    }
+
+
+
+
+
+
+    bool add(AddPtr &p, T** pentry)
+    {
+        if (!add(p))
+            return false;
+        *pentry = &p.entry->t;
+        return true;
+    }
+
+    bool add(AddPtr &p, const T &t)
+    {
+        if (!add(p))
+            return false;
+        p.entry->t = t;
+        return true;
+    }
+
+    bool relookupOrAdd(AddPtr& p, const Lookup &l, const T& t)
+    {
+        p.mutationCount = mutationCount;
+        {
+            ReentrancyGuard g(*this);
+            p.entry = &lookup(l, p.keyHash, sCollisionBit);
+        }
+        return p.found() || add(p, t);
+    }
+
+    void remove(Ptr p)
+    {
+        ReentrancyGuard g(*this);
+        do { } while(0);
+        remove(*p.entry);
+        checkUnderloaded();
+    }
+
+#undef METER
+};
+
+}
+# 810 "./../../dist/include/js/HashTable.h"
+template <class Key>
+struct DefaultHasher
+{
+    typedef Key Lookup;
+    static HashNumber hash(const Lookup &l) {
+
+        return l;
+    }
+    static bool match(const Key &k, const Lookup &l) {
+
+        return k == l;
+    }
+};
+
+
+
+
+
+template <typename Key, size_t zeroBits>
+struct PointerHasher
+{
+    typedef Key Lookup;
+    static HashNumber hash(const Lookup &l) {
+        size_t word = reinterpret_cast<size_t>(l) >> zeroBits;
+        typedef int moz_static_assert17[(sizeof(HashNumber) == 4) ? 1 : -1];
+
+        return HashNumber(word);
+
+
+
+
+    }
+    static bool match(const Key &k, const Lookup &l) {
+        return k == l;
+    }
+};
+
+template <typename Key, size_t zeroBits>
+struct TaggedPointerHasher
+{
+    typedef Key Lookup;
+
+    static HashNumber hash(const Lookup &l) {
+        return PointerHasher<Key, zeroBits>::hash(l);
+    }
+
+    static const uintptr_t COMPARE_MASK = uintptr_t(-1) - 1;
+
+    static bool match(const Key &k, const Lookup &l) {
+        return (uintptr_t(k) & COMPARE_MASK) == uintptr_t(l);
+    }
+};
+
+
+
+
+
+template <class T>
+struct DefaultHasher<T *>: PointerHasher<T *, tl::FloorLog2<sizeof(void *)>::result> { };
+
+
+
+template <class Key, class Value>
+class HashMapEntry
+{
+    template <class, class, class> friend class detail::HashTable;
+    template <class> friend class detail::HashTableEntry;
+    void operator=(const HashMapEntry &rhs) {
+        const_cast<Key &>(key) = rhs.key;
+        value = rhs.value;
+    }
+
+  public:
+    HashMapEntry() : key(), value() {}
+
+    template<typename KeyInput, typename ValueInput>
+    HashMapEntry(const KeyInput &k, const ValueInput &v) : key(k), value(v) {}
+
+    HashMapEntry(MoveRef<HashMapEntry> rhs)
+      : key(Move(rhs->key)), value(Move(rhs->value)) { }
+    void operator=(MoveRef<HashMapEntry> rhs) {
+        const_cast<Key &>(key) = Move(rhs->key);
+        value = Move(rhs->value);
+    }
+
+    const Key key;
+    Value value;
+};
+
+namespace tl {
+
+template <class T>
+struct IsPodType<detail::HashTableEntry<T> > {
+    static const bool result = IsPodType<T>::result;
+};
+
+template <class K, class V>
+struct IsPodType<HashMapEntry<K, V> >
+{
+    static const bool result = IsPodType<K>::result && IsPodType<V>::result;
+};
+
+}
+# 930 "./../../dist/include/js/HashTable.h"
+template <class Key,
+          class Value,
+          class HashPolicy = DefaultHasher<Key>,
+          class AllocPolicy = TempAllocPolicy>
+class HashMap
+{
+  public:
+    typedef typename HashPolicy::Lookup Lookup;
+
+    typedef HashMapEntry<Key, Value> Entry;
+
+  private:
+
+    struct MapHashPolicy : HashPolicy
+    {
+        typedef Key KeyType;
+        static const Key &getKey(Entry &e) { return e.key; }
+        static void setKey(Entry &e, Key &k) { const_cast<Key &>(e.key) = k; }
+    };
+    typedef detail::HashTable<Entry, MapHashPolicy, AllocPolicy> Impl;
+
+    friend class Impl::Enum;
+
+
+    HashMap(const HashMap &);
+    HashMap &operator=(const HashMap &);
+
+    Impl impl;
+
+  public:
+    const static unsigned sDefaultInitSize = Impl::sDefaultInitSize;
+
+
+
+
+
+    HashMap(AllocPolicy a = AllocPolicy()) : impl(a) {}
+    bool init(uint32_t len = sDefaultInitSize) { return impl.init(len); }
+    bool initialized() const { return impl.initialized(); }
+# 983 "./../../dist/include/js/HashTable.h"
+    typedef typename Impl::Ptr Ptr;
+    Ptr lookup(const Lookup &l) const { return impl.lookup(l); }
+
+
+    void remove(Ptr p) { impl.remove(p); }
+# 1024 "./../../dist/include/js/HashTable.h"
+    typedef typename Impl::AddPtr AddPtr;
+    AddPtr lookupForAdd(const Lookup &l) const {
+        return impl.lookupForAdd(l);
+    }
+
+    template<typename KeyInput, typename ValueInput>
+    bool add(AddPtr &p, const KeyInput &k, const ValueInput &v) {
+        Entry *pentry;
+        if (!impl.add(p, &pentry))
+            return false;
+        const_cast<Key &>(pentry->key) = k;
+        pentry->value = v;
+        return true;
+    }
+
+    bool add(AddPtr &p, const Key &k, MoveRef<Value> v) {
+        Entry *pentry;
+        if (!impl.add(p, &pentry))
+            return false;
+        const_cast<Key &>(pentry->key) = k;
+        pentry->value = v;
+        return true;
+    }
+
+    bool add(AddPtr &p, const Key &k) {
+        Entry *pentry;
+        if (!impl.add(p, &pentry))
+            return false;
+        const_cast<Key &>(pentry->key) = k;
+        return true;
+    }
+
+    template<typename KeyInput, typename ValueInput>
+    bool relookupOrAdd(AddPtr &p, const KeyInput &k, const ValueInput &v) {
+        return impl.relookupOrAdd(p, k, Entry(k, v));
+    }
+# 1071 "./../../dist/include/js/HashTable.h"
+    typedef typename Impl::Range Range;
+    Range all() const { return impl.all(); }
+    uint32_t count() const { return impl.count(); }
+    size_t capacity() const { return impl.capacity(); }
+    size_t sizeOfExcludingThis(JSMallocSizeOfFun mallocSizeOf) const {
+        return impl.sizeOfExcludingThis(mallocSizeOf);
+    }
+    size_t sizeOfIncludingThis(JSMallocSizeOfFun mallocSizeOf) const {
+
+
+
+
+        return mallocSizeOf(this) + impl.sizeOfExcludingThis(mallocSizeOf);
+    }
+# 1099 "./../../dist/include/js/HashTable.h"
+    typedef typename Impl::Enum Enum;
+
+
+
+
+
+    void clear() { impl.clear(); }
+
+
+
+
+
+    void finish() { impl.finish(); }
+
+
+    bool empty() const { return impl.empty(); }
+
+
+
+
+
+    unsigned generation() const { return impl.generation(); }
+
+
+
+    bool has(const Lookup &l) const {
+        return impl.lookup(l) != __null;
+    }
+
+
+    template<typename KeyInput, typename ValueInput>
+    bool put(const KeyInput &k, const ValueInput &v) {
+        AddPtr p = lookupForAdd(k);
+        if (p) {
+            p->value = v;
+            return true;
+        }
+        return add(p, k, v);
+    }
+
+
+    bool putNew(const Key &k, const Value &v) {
+        AddPtr p = lookupForAdd(k);
+        do { } while(0);
+        return add(p, k, v);
+    }
+
+
+    Ptr lookupWithDefault(const Key &k, const Value &defaultValue) {
+        AddPtr p = lookupForAdd(k);
+        if (p)
+            return p;
+        (void)add(p, k, defaultValue);
+        return p;
+    }
+
+
+    void remove(const Lookup &l) {
+        if (Ptr p = lookup(l))
+            remove(p);
+    }
+};
+# 1178 "./../../dist/include/js/HashTable.h"
+template <class T, class HashPolicy = DefaultHasher<T>, class AllocPolicy = TempAllocPolicy>
+class HashSet
+{
+    typedef typename HashPolicy::Lookup Lookup;
+
+
+    struct SetOps : HashPolicy {
+        typedef T KeyType;
+        static const KeyType &getKey(const T &t) { return t; }
+        static void setKey(T &t, KeyType &k) { t = k; }
+    };
+    typedef detail::HashTable<const T, SetOps, AllocPolicy> Impl;
+
+    friend class Impl::Enum;
+
+
+    HashSet(const HashSet &);
+    HashSet &operator=(const HashSet &);
+
+    Impl impl;
+
+  public:
+    const static unsigned sDefaultInitSize = Impl::sDefaultInitSize;
+
+
+
+
+
+    HashSet(AllocPolicy a = AllocPolicy()) : impl(a) {}
+    bool init(uint32_t len = sDefaultInitSize) { return impl.init(len); }
+    bool initialized() const { return impl.initialized(); }
+# 1221 "./../../dist/include/js/HashTable.h"
+    typedef typename Impl::Ptr Ptr;
+    Ptr lookup(const Lookup &l) const { return impl.lookup(l); }
+
+
+    void remove(Ptr p) { impl.remove(p); }
+# 1261 "./../../dist/include/js/HashTable.h"
+    typedef typename Impl::AddPtr AddPtr;
+    AddPtr lookupForAdd(const Lookup &l) const {
+        return impl.lookupForAdd(l);
+    }
+
+    bool add(AddPtr &p, const T &t) {
+        return impl.add(p, t);
+    }
+
+    bool relookupOrAdd(AddPtr &p, const Lookup &l, const T &t) {
+        return impl.relookupOrAdd(p, l, t);
+    }
+# 1284 "./../../dist/include/js/HashTable.h"
+    typedef typename Impl::Range Range;
+    Range all() const { return impl.all(); }
+    uint32_t count() const { return impl.count(); }
+    size_t capacity() const { return impl.capacity(); }
+    size_t sizeOfExcludingThis(JSMallocSizeOfFun mallocSizeOf) const {
+        return impl.sizeOfExcludingThis(mallocSizeOf);
+    }
+    size_t sizeOfIncludingThis(JSMallocSizeOfFun mallocSizeOf) const {
+
+
+
+
+        return mallocSizeOf(this) + impl.sizeOfExcludingThis(mallocSizeOf);
+    }
+# 1312 "./../../dist/include/js/HashTable.h"
+    typedef typename Impl::Enum Enum;
+
+
+
+
+
+    void clear() { impl.clear(); }
+
+
+
+
+
+    void finish() { impl.finish(); }
+
+
+    bool empty() const { return impl.empty(); }
+
+
+
+
+
+    unsigned generation() const { return impl.generation(); }
+
+
+
+    bool has(const Lookup &l) const {
+        return impl.lookup(l) != __null;
+    }
+
+
+    bool put(const T &t) {
+        AddPtr p = lookupForAdd(t);
+        return p ? true : add(p, t);
+    }
+
+
+    bool putNew(const T &t) {
+        AddPtr p = lookupForAdd(t);
+        do { } while(0);
+        return add(p, t);
+    }
+
+    bool putNew(const Lookup &l, const T &t) {
+        AddPtr p = lookupForAdd(l);
+        do { } while(0);
+        return add(p, t);
+    }
+
+    void remove(const Lookup &l) {
+        if (Ptr p = lookup(l))
+            remove(p);
+    }
+};
+
+}
+# 29 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprvtd.h" 2
+
+
+
+extern "C" {
+
+
+
+
+#define JS_BITS_PER_UINT32_LOG2 5
+#define JS_BITS_PER_UINT32 32
+
+
+static const unsigned JS_GCTHING_ALIGN = 8;
+static const unsigned JS_GCTHING_ZEROBITS = 3;
+
+
+typedef uint8_t jsbytecode;
+typedef uint8_t jssrcnote;
+typedef uintptr_t jsatomid;
+
+
+typedef struct JSArgumentFormatMap JSArgumentFormatMap;
+typedef struct JSGCThing JSGCThing;
+typedef struct JSGenerator JSGenerator;
+typedef struct JSNativeEnumerator JSNativeEnumerator;
+typedef struct JSProperty JSProperty;
+typedef struct JSSharpObjectMap JSSharpObjectMap;
+typedef struct JSTryNote JSTryNote;
+
+
+typedef struct JSAtomState JSAtomState;
+typedef struct JSCodeSpec JSCodeSpec;
+typedef struct JSPrinter JSPrinter;
+typedef struct JSStackHeader JSStackHeader;
+typedef struct JSSubString JSSubString;
+typedef struct JSSpecializedNative JSSpecializedNative;
+
+
+typedef struct JSXML JSXML;
+# 79 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprvtd.h"
+extern "C++" {
+
+class JSDependentString;
+class JSExtensibleString;
+class JSExternalString;
+class JSLinearString;
+class JSFixedString;
+class JSStaticAtom;
+class JSRope;
+class JSAtom;
+class JSWrapper;
+
+namespace js {
+
+struct ArgumentsData;
+struct Class;
+
+class RegExpGuard;
+class RegExpObject;
+class RegExpObjectBuilder;
+class RegExpShared;
+class RegExpStatics;
+class MatchPairs;
+class PropertyName;
+
+namespace detail { class RegExpCode; }
+
+enum RegExpFlag
+{
+    IgnoreCaseFlag = 0x01,
+    GlobalFlag = 0x02,
+    MultilineFlag = 0x04,
+    StickyFlag = 0x08,
+
+    NoFlags = 0x00,
+    AllFlags = 0x0f
+};
+
+enum RegExpExecType
+{
+    RegExpExec,
+    RegExpTest
+};
+
+class ExecuteArgsGuard;
+class InvokeFrameGuard;
+class InvokeArgsGuard;
+class StringBuffer;
+
+class FrameRegs;
+class StackFrame;
+class StackSegment;
+class StackSpace;
+class ContextStack;
+class ScriptFrameIter;
+class CallReceiver;
+class CallArgs;
+
+struct BytecodeEmitter;
+struct Definition;
+struct FunctionBox;
+struct ObjectBox;
+struct ParseNode;
+struct Parser;
+struct SharedContext;
+class TokenStream;
+struct Token;
+struct TokenPos;
+struct TokenPtr;
+struct TreeContext;
+class UpvarCookie;
+
+class Proxy;
+class BaseProxyHandler;
+class DirectWrapper;
+class CrossCompartmentWrapper;
+
+class TempAllocPolicy;
+class RuntimeAllocPolicy;
+
+class GlobalObject;
+
+template <typename K,
+          typename V,
+          size_t InlineElems>
+class InlineMap;
+
+class LifoAlloc;
+
+class BaseShape;
+class UnownedBaseShape;
+struct Shape;
+struct EmptyShape;
+class ShapeKindArray;
+class Bindings;
+
+struct StackBaseShape;
+struct StackShape;
+
+class MultiDeclRange;
+class ParseMapPool;
+class DefnOrHeader;
+typedef InlineMap<JSAtom *, Definition *, 24> AtomDefnMap;
+typedef InlineMap<JSAtom *, jsatomid, 24> AtomIndexMap;
+typedef InlineMap<JSAtom *, DefnOrHeader, 24> AtomDOHMap;
+typedef Vector<UpvarCookie, 8> UpvarCookies;
+
+class Breakpoint;
+class BreakpointSite;
+class Debugger;
+class WatchpointMap;
+
+
+
+
+
+
+
+typedef JSObject Env;
+
+typedef JSNative Native;
+typedef JSPropertyOp PropertyOp;
+typedef JSStrictPropertyOp StrictPropertyOp;
+typedef JSPropertyDescriptor PropertyDescriptor;
+
+namespace analyze {
+
+struct LifetimeVariable;
+class LoopAnalysis;
+class ScriptAnalysis;
+class SlotValue;
+class SSAValue;
+class SSAUseChain;
+
+}
+
+namespace types {
+
+class TypeSet;
+struct TypeCallsite;
+struct TypeObject;
+struct TypeCompartment;
+
+}
+
+typedef JS::Handle<Shape*> HandleShape;
+typedef JS::Handle<BaseShape*> HandleBaseShape;
+typedef JS::Handle<types::TypeObject*> HandleTypeObject;
+typedef JS::Handle<JSAtom*> HandleAtom;
+typedef JS::Handle<PropertyName*> HandlePropertyName;
+
+typedef JS::Rooted<Shape*> RootedShape;
+typedef JS::Rooted<BaseShape*> RootedBaseShape;
+typedef JS::Rooted<types::TypeObject*> RootedTypeObject;
+typedef JS::Rooted<JSAtom*> RootedAtom;
+typedef JS::Rooted<PropertyName*> RootedPropertyName;
+
+enum XDRMode {
+    XDR_ENCODE,
+    XDR_DECODE
+};
+
+template <XDRMode mode>
+class XDRState;
+
+class FreeOp;
+
+}
+
+namespace JSC {
+
+class ExecutableAllocator;
+
+}
+
+namespace WTF {
+
+class BumpPointerAllocator;
+
+}
+
+}
+# 269 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprvtd.h"
+typedef enum JSTrapStatus {
+    JSTRAP_ERROR,
+    JSTRAP_CONTINUE,
+    JSTRAP_RETURN,
+    JSTRAP_THROW,
+    JSTRAP_LIMIT
+} JSTrapStatus;
+
+typedef JSTrapStatus
+(* JSTrapHandler)(JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval,
+                  jsval closure);
+
+typedef JSTrapStatus
+(* JSInterruptHook)(JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval,
+                    void *closure);
+
+typedef JSTrapStatus
+(* JSDebuggerHandler)(JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval,
+                      void *closure);
+
+typedef JSTrapStatus
+(* JSThrowHook)(JSContext *cx, JSScript *script, jsbytecode *pc, jsval *rval,
+                void *closure);
+
+typedef JSBool
+(* JSWatchPointHandler)(JSContext *cx, JSObject *obj, jsid id, jsval old,
+                        jsval *newp, void *closure);
+
+
+typedef void
+(* JSNewScriptHook)(JSContext *cx,
+                    const char *filename,
+                    unsigned lineno,
+                    JSScript *script,
+                    JSFunction *fun,
+                    void *callerdata);
+
+
+typedef void
+(* JSDestroyScriptHook)(JSFreeOp *fop,
+                        JSScript *script,
+                        void *callerdata);
+
+typedef void
+(* JSSourceHandler)(const char *filename, unsigned lineno, const jschar *str,
+                    size_t length, void **listenerTSData, void *closure);
+# 341 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprvtd.h"
+typedef void *
+(* JSInterpreterHook)(JSContext *cx, JSStackFrame *fp, JSBool before,
+                      JSBool *ok, void *closure);
+
+typedef JSBool
+(* JSDebugErrorHook)(JSContext *cx, const char *message, JSErrorReport *report,
+                     void *closure);
+
+typedef struct JSDebugHooks {
+    JSInterruptHook interruptHook;
+    void *interruptHookData;
+    JSNewScriptHook newScriptHook;
+    void *newScriptHookData;
+    JSDestroyScriptHook destroyScriptHook;
+    void *destroyScriptHookData;
+    JSDebuggerHandler debuggerHandler;
+    void *debuggerHandlerData;
+    JSSourceHandler sourceHandler;
+    void *sourceHandlerData;
+    JSInterpreterHook executeHook;
+    void *executeHookData;
+    JSInterpreterHook callHook;
+    void *callHookData;
+    JSThrowHook throwHook;
+    void *throwHookData;
+    JSDebugErrorHook debugErrorHook;
+    void *debugErrorHookData;
+} JSDebugHooks;
+
+
+
+
+
+
+
+typedef JSObject *
+(* JSObjectOp)(JSContext *cx, JSHandleObject obj);
+
+
+typedef JSObject *
+(* JSClassInitializerOp)(JSContext *cx, JSObject *obj);
+
+
+
+
+
+typedef JSObject *
+(* JSIteratorOp)(JSContext *cx, JSHandleObject obj, JSBool keysonly);
+# 397 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprvtd.h"
+extern JSBool js_CStringsAreUTF8;
+
+
+}
+# 15 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jshash.h" 1
+
+
+
+
+
+
+
+#define jshash_h___ 
+
+
+
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jshash.h" 2
+
+
+
+extern "C" {
+
+typedef uint32_t JSHashNumber;
+typedef struct JSHashEntry JSHashEntry;
+typedef struct JSHashTable JSHashTable;
+
+#define JS_HASH_BITS 32
+#define JS_GOLDEN_RATIO 0x9E3779B9U
+
+typedef JSHashNumber (* JSHashFunction)(const void *key);
+typedef int (* JSHashComparator)(const void *v1, const void *v2);
+typedef int (* JSHashEnumerator)(JSHashEntry *he, int i, void *arg);
+
+
+#define HT_ENUMERATE_NEXT 0
+#define HT_ENUMERATE_STOP 1
+#define HT_ENUMERATE_REMOVE 2
+
+typedef struct JSHashAllocOps {
+    void * (*allocTable)(void *pool, size_t size);
+    void (*freeTable)(void *pool, void *item, size_t size);
+    JSHashEntry * (*allocEntry)(void *pool, const void *key);
+    void (*freeEntry)(void *pool, JSHashEntry *he, unsigned flag);
+} JSHashAllocOps;
+
+#define HT_FREE_VALUE 0
+#define HT_FREE_ENTRY 1
+
+struct JSHashEntry {
+    JSHashEntry *next;
+    JSHashNumber keyHash;
+    const void *key;
+    void *value;
+};
+
+struct JSHashTable {
+    JSHashEntry **buckets;
+    uint32_t nentries;
+    uint32_t shift;
+    JSHashFunction keyHash;
+    JSHashComparator keyCompare;
+    JSHashComparator valueCompare;
+    JSHashAllocOps *allocOps;
+    void *allocPriv;
+
+
+
+
+
+
+};
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSHashTable *
+JS_NewHashTable(uint32_t n, JSHashFunction keyHash,
+                JSHashComparator keyCompare, JSHashComparator valueCompare,
+                JSHashAllocOps *allocOps, void *allocPriv);
+
+extern __attribute__((visibility("default"))) void
+JS_HashTableDestroy(JSHashTable *ht);
+
+
+extern __attribute__((visibility("default"))) JSHashEntry **
+JS_HashTableRawLookup(JSHashTable *ht, JSHashNumber keyHash, const void *key);
+
+
+extern __attribute__((visibility("default"))) JSHashEntry *
+JS_HashTableRawAdd(JSHashTable *ht, JSHashEntry **&hep, JSHashNumber keyHash,
+                   const void *key, void *value);
+
+
+extern __attribute__((visibility("default"))) void
+JS_HashTableRawRemove(JSHashTable *ht, JSHashEntry **hep, JSHashEntry *he);
+
+
+extern __attribute__((visibility("default"))) JSHashEntry *
+JS_HashTableAdd(JSHashTable *ht, const void *key, void *value);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_HashTableRemove(JSHashTable *ht, const void *key);
+
+extern __attribute__((visibility("default"))) int
+JS_HashTableEnumerateEntries(JSHashTable *ht, JSHashEnumerator f, void *arg);
+
+extern __attribute__((visibility("default"))) void *
+JS_HashTableLookup(JSHashTable *ht, const void *key);
+
+extern __attribute__((visibility("default"))) int
+JS_HashTableDump(JSHashTable *ht, JSHashEnumerator dump, FILE *fp);
+
+
+extern __attribute__((visibility("default"))) JSHashNumber
+JS_HashString(const void *key);
+
+
+extern __attribute__((visibility("default"))) int
+JS_CompareValues(const void *v1, const void *v2);
+
+}
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jslock.h" 1
+
+
+
+
+
+
+#define jslock_h__ 
+
+
+
+
+
+# 1 "/usr/include/nspr/pratom.h" 1
+# 12 "/usr/include/nspr/pratom.h"
+#define pratom_h___ 
+
+# 1 "/usr/include/nspr/prtypes.h" 1
+# 21 "/usr/include/nspr/prtypes.h"
+#define prtypes_h___ 
+
+
+
+
+# 1 "/usr/include/nspr/prcpucfg.h" 1
+# 12 "/usr/include/nspr/prcpucfg.h"
+#define nspr_cpucfg___ 
+
+
+
+
+
+
+#define LINUX 
+
+
+
+
+
+
+
+#define PR_AF_INET6 10
+# 547 "/usr/include/nspr/prcpucfg.h"
+#define IS_LITTLE_ENDIAN 1
+#undef IS_BIG_ENDIAN
+
+
+
+
+#define PR_BYTES_PER_BYTE 1
+#define PR_BYTES_PER_SHORT 2
+#define PR_BYTES_PER_INT 4
+#define PR_BYTES_PER_INT64 8
+#define PR_BYTES_PER_LONG 4
+#define PR_BYTES_PER_FLOAT 4
+#define PR_BYTES_PER_DOUBLE 8
+#define PR_BYTES_PER_WORD 4
+#define PR_BYTES_PER_DWORD 8
+
+#define PR_BITS_PER_BYTE 8
+#define PR_BITS_PER_SHORT 16
+#define PR_BITS_PER_INT 32
+#define PR_BITS_PER_INT64 64
+#define PR_BITS_PER_LONG 32
+#define PR_BITS_PER_FLOAT 32
+#define PR_BITS_PER_DOUBLE 64
+#define PR_BITS_PER_WORD 32
+
+#define PR_BITS_PER_BYTE_LOG2 3
+#define PR_BITS_PER_SHORT_LOG2 4
+#define PR_BITS_PER_INT_LOG2 5
+#define PR_BITS_PER_INT64_LOG2 6
+#define PR_BITS_PER_LONG_LOG2 5
+#define PR_BITS_PER_FLOAT_LOG2 5
+#define PR_BITS_PER_DOUBLE_LOG2 6
+#define PR_BITS_PER_WORD_LOG2 5
+
+#define PR_ALIGN_OF_SHORT 2
+#define PR_ALIGN_OF_INT 4
+#define PR_ALIGN_OF_LONG 4
+#define PR_ALIGN_OF_INT64 4
+#define PR_ALIGN_OF_FLOAT 4
+#define PR_ALIGN_OF_DOUBLE 4
+#define PR_ALIGN_OF_POINTER 4
+#define PR_ALIGN_OF_WORD 4
+
+#define PR_BYTES_PER_WORD_LOG2 2
+#define PR_BYTES_PER_DWORD_LOG2 3
+# 871 "/usr/include/nspr/prcpucfg.h"
+#define HAVE_LONG_LONG 
+# 27 "/usr/include/nspr/prtypes.h" 2
+
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 30 "/usr/include/nspr/prtypes.h" 2
+# 125 "/usr/include/nspr/prtypes.h"
+#define PR_VISIBILITY_DEFAULT __attribute__((visibility("default")))
+
+
+
+
+#define PR_EXPORT(__type) extern PR_VISIBILITY_DEFAULT __type
+#define PR_EXPORT_DATA(__type) extern PR_VISIBILITY_DEFAULT __type
+#define PR_IMPORT(__type) extern PR_VISIBILITY_DEFAULT __type
+#define PR_IMPORT_DATA(__type) extern PR_VISIBILITY_DEFAULT __type
+
+#define PR_EXTERN(__type) extern PR_VISIBILITY_DEFAULT __type
+#define PR_IMPLEMENT(__type) PR_VISIBILITY_DEFAULT __type
+#define PR_EXTERN_DATA(__type) extern PR_VISIBILITY_DEFAULT __type
+#define PR_IMPLEMENT_DATA(__type) PR_VISIBILITY_DEFAULT __type
+#define PR_CALLBACK 
+#define PR_CALLBACK_DECL 
+#define PR_STATIC_CALLBACK(__x) static __x
+
+
+
+
+
+
+
+#define NSPR_API(__type) PR_IMPORT(__type)
+#define NSPR_DATA_API(__type) PR_IMPORT_DATA(__type)
+# 160 "/usr/include/nspr/prtypes.h"
+#define PR_BEGIN_MACRO do {
+#define PR_END_MACRO } while (0)
+# 170 "/usr/include/nspr/prtypes.h"
+#define PR_BEGIN_EXTERN_C extern "C" {
+#define PR_END_EXTERN_C }
+# 183 "/usr/include/nspr/prtypes.h"
+#define PR_BIT(n) ((PRUint32)1 << (n))
+#define PR_BITMASK(n) (PR_BIT(n) - 1)
+# 194 "/usr/include/nspr/prtypes.h"
+#define PR_ROUNDUP(x,y) ((((x)+((y)-1))/(y))*(y))
+#define PR_MIN(x,y) ((x)<(y)?(x):(y))
+#define PR_MAX(x,y) ((x)>(y)?(x):(y))
+#define PR_ABS(x) ((x)<0?-(x):(x))
+
+
+
+
+
+
+#define PR_ARRAY_SIZE(a) (sizeof(a)/sizeof((a)[0]))
+
+extern "C" {
+# 216 "/usr/include/nspr/prtypes.h"
+typedef unsigned char PRUint8;
+# 230 "/usr/include/nspr/prtypes.h"
+typedef signed char PRInt8;
+# 244 "/usr/include/nspr/prtypes.h"
+#define PR_INT8_MAX 127
+#define PR_INT8_MIN (-128)
+#define PR_UINT8_MAX 255U
+# 255 "/usr/include/nspr/prtypes.h"
+typedef unsigned short PRUint16;
+typedef short PRInt16;
+# 269 "/usr/include/nspr/prtypes.h"
+#define PR_INT16_MAX 32767
+#define PR_INT16_MIN (-32768)
+#define PR_UINT16_MAX 65535U
+# 280 "/usr/include/nspr/prtypes.h"
+typedef unsigned int PRUint32;
+typedef int PRInt32;
+#define PR_INT32(x) x
+#define PR_UINT32(x) x ## U
+# 301 "/usr/include/nspr/prtypes.h"
+#define PR_INT32_MAX PR_INT32(2147483647)
+#define PR_INT32_MIN (-PR_INT32_MAX - 1)
+#define PR_UINT32_MAX PR_UINT32(4294967295)
+# 350 "/usr/include/nspr/prtypes.h"
+typedef long long PRInt64;
+typedef unsigned long long PRUint64;
+#define PR_INT64(x) x ## LL
+#define PR_UINT64(x) x ## ULL
+
+
+#define PR_INT64_MAX PR_INT64(0x7fffffffffffffff)
+#define PR_INT64_MIN (-PR_INT64_MAX - 1)
+#define PR_UINT64_MAX PR_UINT64(-1)
+# 385 "/usr/include/nspr/prtypes.h"
+typedef int PRIntn;
+typedef unsigned int PRUintn;
+# 396 "/usr/include/nspr/prtypes.h"
+typedef double PRFloat64;
+
+
+
+
+
+
+typedef size_t PRSize;
+
+
+
+
+
+
+
+typedef PRInt32 PROffset32;
+typedef PRInt64 PROffset64;
+
+
+
+
+
+
+
+typedef ptrdiff_t PRPtrdiff;
+# 431 "/usr/include/nspr/prtypes.h"
+typedef unsigned long PRUptrdiff;
+# 442 "/usr/include/nspr/prtypes.h"
+typedef PRIntn PRBool;
+#define PR_TRUE 1
+#define PR_FALSE 0
+
+
+
+
+
+
+
+typedef PRUint8 PRPackedBool;
+
+
+
+
+
+typedef enum { PR_FAILURE = -1, PR_SUCCESS = 0 } PRStatus;
+
+
+#define __PRUNICHAR__ 
+
+
+
+typedef PRUint16 PRUnichar;
+# 484 "/usr/include/nspr/prtypes.h"
+typedef long PRWord;
+typedef unsigned long PRUword;
+# 534 "/usr/include/nspr/prtypes.h"
+#define PR_STATIC_ASSERT(condition) extern void pr_static_assert(int arg[(condition) ? 1 : -1])
+
+
+}
+# 15 "/usr/include/nspr/pratom.h" 2
+# 1 "/usr/include/nspr/prlock.h" 1
+# 17 "/usr/include/nspr/prlock.h"
+#define prlock_h___ 
+
+
+
+extern "C" {
+# 34 "/usr/include/nspr/prlock.h"
+typedef struct PRLock PRLock;
+# 51 "/usr/include/nspr/prlock.h"
+extern __attribute__((visibility("default"))) PRLock* PR_NewLock(void);
+# 62 "/usr/include/nspr/prlock.h"
+extern __attribute__((visibility("default"))) void PR_DestroyLock(PRLock *lock);
+# 73 "/usr/include/nspr/prlock.h"
+extern __attribute__((visibility("default"))) void PR_Lock(PRLock *lock);
+# 85 "/usr/include/nspr/prlock.h"
+extern __attribute__((visibility("default"))) PRStatus PR_Unlock(PRLock *lock);
+# 101 "/usr/include/nspr/prlock.h"
+#define PR_ASSERT_CURRENT_THREAD_OWNS_LOCK(lock) 
+
+
+
+extern __attribute__((visibility("default"))) void PR_AssertCurrentThreadOwnsLock(PRLock *lock);
+
+}
+# 16 "/usr/include/nspr/pratom.h" 2
+
+extern "C" {
+# 28 "/usr/include/nspr/pratom.h"
+extern __attribute__((visibility("default"))) PRInt32 PR_AtomicIncrement(PRInt32 *val);
+# 39 "/usr/include/nspr/pratom.h"
+extern __attribute__((visibility("default"))) PRInt32 PR_AtomicDecrement(PRInt32 *val);
+# 51 "/usr/include/nspr/pratom.h"
+extern __attribute__((visibility("default"))) PRInt32 PR_AtomicSet(PRInt32 *val, PRInt32 newval);
+# 63 "/usr/include/nspr/pratom.h"
+extern __attribute__((visibility("default"))) PRInt32 PR_AtomicAdd(PRInt32 *ptr, PRInt32 val);
+# 128 "/usr/include/nspr/pratom.h"
+#define PR_ATOMIC_INCREMENT(val) PR_AtomicIncrement(val)
+#define PR_ATOMIC_DECREMENT(val) PR_AtomicDecrement(val)
+#define PR_ATOMIC_SET(val,newval) PR_AtomicSet(val, newval)
+#define PR_ATOMIC_ADD(ptr,val) PR_AtomicAdd(ptr, val)
+
+
+
+
+
+
+typedef struct PRStackElemStr PRStackElem;
+
+struct PRStackElemStr {
+    PRStackElem *prstk_elem_next;
+
+};
+
+typedef struct PRStackStr PRStack;
+# 156 "/usr/include/nspr/pratom.h"
+extern __attribute__((visibility("default"))) PRStack * PR_CreateStack(const char *stack_name);
+# 168 "/usr/include/nspr/pratom.h"
+extern __attribute__((visibility("default"))) void PR_StackPush(PRStack *stack, PRStackElem *stack_elem);
+# 181 "/usr/include/nspr/pratom.h"
+extern __attribute__((visibility("default"))) PRStackElem * PR_StackPop(PRStack *stack);
+# 195 "/usr/include/nspr/pratom.h"
+extern __attribute__((visibility("default"))) PRStatus PR_DestroyStack(PRStack *stack);
+
+}
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jslock.h" 2
+# 1 "/usr/include/nspr/prlock.h" 1
+# 15 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jslock.h" 2
+# 1 "/usr/include/nspr/prcvar.h" 1
+
+
+
+
+
+
+#define prcvar_h___ 
+
+
+# 1 "/usr/include/nspr/prinrval.h" 1
+# 19 "/usr/include/nspr/prinrval.h"
+#define prinrval_h 
+
+
+
+extern "C" {
+
+
+
+
+
+typedef PRUint32 PRIntervalTime;
+# 39 "/usr/include/nspr/prinrval.h"
+#define PR_INTERVAL_MIN 1000UL
+#define PR_INTERVAL_MAX 100000UL
+# 53 "/usr/include/nspr/prinrval.h"
+#define PR_INTERVAL_NO_WAIT 0UL
+#define PR_INTERVAL_NO_TIMEOUT 0xffffffffUL
+# 79 "/usr/include/nspr/prinrval.h"
+extern __attribute__((visibility("default"))) PRIntervalTime PR_IntervalNow(void);
+# 97 "/usr/include/nspr/prinrval.h"
+extern __attribute__((visibility("default"))) PRUint32 PR_TicksPerSecond(void);
+# 116 "/usr/include/nspr/prinrval.h"
+extern __attribute__((visibility("default"))) PRIntervalTime PR_SecondsToInterval(PRUint32 seconds);
+extern __attribute__((visibility("default"))) PRIntervalTime PR_MillisecondsToInterval(PRUint32 milli);
+extern __attribute__((visibility("default"))) PRIntervalTime PR_MicrosecondsToInterval(PRUint32 micro);
+# 137 "/usr/include/nspr/prinrval.h"
+extern __attribute__((visibility("default"))) PRUint32 PR_IntervalToSeconds(PRIntervalTime ticks);
+extern __attribute__((visibility("default"))) PRUint32 PR_IntervalToMilliseconds(PRIntervalTime ticks);
+extern __attribute__((visibility("default"))) PRUint32 PR_IntervalToMicroseconds(PRIntervalTime ticks);
+
+}
+# 11 "/usr/include/nspr/prcvar.h" 2
+
+extern "C" {
+
+typedef struct PRCondVar PRCondVar;
+# 27 "/usr/include/nspr/prcvar.h"
+extern __attribute__((visibility("default"))) PRCondVar* PR_NewCondVar(PRLock *lock);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) void PR_DestroyCondVar(PRCondVar *cvar);
+# 65 "/usr/include/nspr/prcvar.h"
+extern __attribute__((visibility("default"))) PRStatus PR_WaitCondVar(PRCondVar *cvar, PRIntervalTime timeout);
+# 80 "/usr/include/nspr/prcvar.h"
+extern __attribute__((visibility("default"))) PRStatus PR_NotifyCondVar(PRCondVar *cvar);
+# 90 "/usr/include/nspr/prcvar.h"
+extern __attribute__((visibility("default"))) PRStatus PR_NotifyAllCondVar(PRCondVar *cvar);
+
+}
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jslock.h" 2
+# 1 "/usr/include/nspr/prthread.h" 1
+
+
+
+
+
+
+#define prthread_h___ 
+# 49 "/usr/include/nspr/prthread.h"
+extern "C" {
+
+typedef struct PRThread PRThread;
+typedef struct PRThreadStack PRThreadStack;
+
+typedef enum PRThreadType {
+    PR_USER_THREAD,
+    PR_SYSTEM_THREAD
+} PRThreadType;
+
+typedef enum PRThreadScope {
+    PR_LOCAL_THREAD,
+    PR_GLOBAL_THREAD,
+    PR_GLOBAL_BOUND_THREAD
+} PRThreadScope;
+
+typedef enum PRThreadState {
+    PR_JOINABLE_THREAD,
+    PR_UNJOINABLE_THREAD
+} PRThreadState;
+
+typedef enum PRThreadPriority
+{
+    PR_PRIORITY_FIRST = 0,
+    PR_PRIORITY_LOW = 0,
+    PR_PRIORITY_NORMAL = 1,
+    PR_PRIORITY_HIGH = 2,
+    PR_PRIORITY_URGENT = 3,
+    PR_PRIORITY_LAST = 3
+} PRThreadPriority;
+# 105 "/usr/include/nspr/prthread.h"
+extern __attribute__((visibility("default"))) PRThread* PR_CreateThread(PRThreadType type,
+                     void ( *start)(void *arg),
+                     void *arg,
+                     PRThreadPriority priority,
+                     PRThreadScope scope,
+                     PRThreadState state,
+                     PRUint32 stackSize);
+# 126 "/usr/include/nspr/prthread.h"
+extern __attribute__((visibility("default"))) PRStatus PR_JoinThread(PRThread *thread);
+
+
+
+
+
+extern __attribute__((visibility("default"))) PRThread* PR_GetCurrentThread(void);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) PRThreadPriority PR_GetThreadPriority(const PRThread *thread);
+
+
+
+
+extern __attribute__((visibility("default"))) void PR_SetThreadPriority(PRThread *thread, PRThreadPriority priority);
+
+
+
+
+
+extern __attribute__((visibility("default"))) PRStatus PR_SetCurrentThreadName(const char *name);
+
+
+
+
+extern __attribute__((visibility("default"))) const char * PR_GetThreadName(const PRThread *thread);
+# 182 "/usr/include/nspr/prthread.h"
+typedef void ( *PRThreadPrivateDTOR)(void *priv);
+
+extern __attribute__((visibility("default"))) PRStatus PR_NewThreadPrivateIndex(
+    PRUintn *newIndex, PRThreadPrivateDTOR destructor);
+# 198 "/usr/include/nspr/prthread.h"
+extern __attribute__((visibility("default"))) PRStatus PR_SetThreadPrivate(PRUintn tpdIndex, void *priv);
+# 209 "/usr/include/nspr/prthread.h"
+extern __attribute__((visibility("default"))) void* PR_GetThreadPrivate(PRUintn tpdIndex);
+# 221 "/usr/include/nspr/prthread.h"
+extern __attribute__((visibility("default"))) PRStatus PR_Interrupt(PRThread *thread);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void PR_ClearInterrupt(void);
+
+
+
+
+extern __attribute__((visibility("default"))) void PR_BlockInterrupt(void);
+
+
+
+
+extern __attribute__((visibility("default"))) void PR_UnblockInterrupt(void);
+# 246 "/usr/include/nspr/prthread.h"
+extern __attribute__((visibility("default"))) PRStatus PR_Sleep(PRIntervalTime ticks);
+
+
+
+
+extern __attribute__((visibility("default"))) PRThreadScope PR_GetThreadScope(const PRThread *thread);
+
+
+
+
+extern __attribute__((visibility("default"))) PRThreadType PR_GetThreadType(const PRThread *thread);
+
+
+
+
+extern __attribute__((visibility("default"))) PRThreadState PR_GetThreadState(const PRThread *thread);
+
+}
+# 17 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jslock.h" 2
+# 1 "/usr/include/nspr/prinit.h" 1
+
+
+
+
+
+
+#define prinit_h___ 
+
+# 1 "/usr/include/nspr/prthread.h" 1
+# 10 "/usr/include/nspr/prinit.h" 2
+
+# 1 "/usr/include/nspr/prwin16.h" 1
+
+
+
+
+
+
+#define prwin16_h___ 
+# 153 "/usr/include/nspr/prwin16.h"
+#define PR_STDIO_INIT() 
+# 12 "/usr/include/nspr/prinit.h" 2
+
+
+extern "C" {
+# 24 "/usr/include/nspr/prinit.h"
+#define PR_NAME "NSPR"
+# 34 "/usr/include/nspr/prinit.h"
+#define PR_VERSION "4.9.2"
+#define PR_VMAJOR 4
+#define PR_VMINOR 9
+#define PR_VPATCH 2
+#define PR_BETA PR_FALSE
+# 56 "/usr/include/nspr/prinit.h"
+typedef PRBool (*PRVersionCheck)(const char*);
+# 66 "/usr/include/nspr/prinit.h"
+extern __attribute__((visibility("default"))) PRBool PR_VersionCheck(const char *importedVersion);
+
+
+
+
+extern __attribute__((visibility("default"))) const char* PR_GetVersion(void);
+# 84 "/usr/include/nspr/prinit.h"
+extern __attribute__((visibility("default"))) void PR_Init(
+    PRThreadType type, PRThreadPriority priority, PRUintn maxPTDs);
+# 105 "/usr/include/nspr/prinit.h"
+typedef PRIntn ( *PRPrimordialFn)(PRIntn argc, char **argv);
+
+extern __attribute__((visibility("default"))) PRIntn PR_Initialize(
+    PRPrimordialFn prmain, PRIntn argc, char **argv, PRUintn maxPTDs);
+
+
+
+
+extern __attribute__((visibility("default"))) PRBool PR_Initialized(void);
+# 131 "/usr/include/nspr/prinit.h"
+extern __attribute__((visibility("default"))) PRStatus PR_Cleanup(void);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void PR_DisableClockInterrupts(void);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void PR_EnableClockInterrupts(void);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void PR_BlockClockInterrupts(void);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void PR_UnblockClockInterrupts(void);
+
+
+
+
+extern __attribute__((visibility("default"))) void PR_SetConcurrency(PRUintn numCPUs);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) PRStatus PR_SetFDCacheSize(PRIntn low, PRIntn high);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) void PR_ProcessExit(PRIntn status);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) void PR_Abort(void);
+# 191 "/usr/include/nspr/prinit.h"
+typedef struct PRCallOnceType {
+    PRIntn initialized;
+    PRInt32 inProgress;
+    PRStatus status;
+} PRCallOnceType;
+
+typedef PRStatus ( *PRCallOnceFN)(void);
+
+typedef PRStatus ( *PRCallOnceWithArgFN)(void *arg);
+
+extern __attribute__((visibility("default"))) PRStatus PR_CallOnce(
+    PRCallOnceType *once,
+    PRCallOnceFN func
+);
+
+extern __attribute__((visibility("default"))) PRStatus PR_CallOnceWithArg(
+    PRCallOnceType *once,
+    PRCallOnceWithArgFN func,
+    void *arg
+);
+
+
+}
+# 18 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jslock.h" 2
+
+#define JS_ATOMIC_INCREMENT(p) PR_ATOMIC_INCREMENT((PRInt32 *)(p))
+#define JS_ATOMIC_DECREMENT(p) PR_ATOMIC_DECREMENT((PRInt32 *)(p))
+#define JS_ATOMIC_ADD(p,v) PR_ATOMIC_ADD((PRInt32 *)(p), (PRInt32)(v))
+#define JS_ATOMIC_SET(p,v) PR_ATOMIC_SET((PRInt32 *)(p), (PRInt32)(v))
+# 33 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jslock.h"
+namespace js {
+
+class AutoAtomicIncrement
+{
+    int32_t *p;
+   
+
+  public:
+    AutoAtomicIncrement(int32_t *p )
+      : p(p) {
+        do { } while (0);
+        PR_AtomicIncrement((PRInt32 *)(p));
+    }
+
+    ~AutoAtomicIncrement() {
+        PR_AtomicDecrement((PRInt32 *)(p));
+    }
+};
+
+}
+# 18 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Barrier.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Barrier.h"
+#define jsgc_barrier_h___ 
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsapi.h" 1
+# 12 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Barrier.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h" 1
+
+
+
+
+
+
+
+#define gc_heap_h___ 
+
+
+
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsutil.h" 1
+# 17 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/ds/BitArray.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/ds/BitArray.h"
+#define BitArray_h__ 
+
+
+
+# 1 "./../../dist/include/js/TemplateLib.h" 1
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/ds/BitArray.h" 2
+
+namespace js {
+
+template <size_t nbits>
+class BitArray {
+  private:
+    uintptr_t map[nbits / (8 * 4) + (nbits % (8 * 4) == 0 ? 0 : 1)];
+
+  public:
+    void clear(bool value) {
+        if (value)
+            memset(map, 0xFF, sizeof(map));
+        else
+            memset(map, 0, sizeof(map));
+    }
+
+    inline bool get(size_t offset) const {
+        uintptr_t index, mask;
+        getMarkWordAndMask(offset, &index, &mask);
+        return map[index] & mask;
+    }
+
+    inline void set(size_t offset) {
+        uintptr_t index, mask;
+        getMarkWordAndMask(offset, &index, &mask);
+        map[index] |= mask;
+    }
+
+    inline void unset(size_t offset) {
+        uintptr_t index, mask;
+        getMarkWordAndMask(offset, &index, &mask);
+        map[index] &= ~mask;
+    }
+
+  private:
+    inline void getMarkWordAndMask(size_t offset,
+                                   uintptr_t *indexp, uintptr_t *maskp) const {
+        *indexp = offset >> tl::FloorLog2<(8 * 4)>::result;
+        *maskp = uintptr_t(1) << (offset & ((8 * 4) - 1));
+    }
+};
+
+}
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h" 2
+
+struct JSCompartment;
+
+extern "C" {
+struct JSRuntime;
+}
+
+namespace js {
+
+class FreeOp;
+
+namespace gc {
+
+struct Arena;
+struct ArenaHeader;
+struct Chunk;
+
+
+
+
+
+
+static const uint32_t BLACK = 0;
+static const uint32_t GRAY = 1;
+
+
+enum AllocKind {
+    FINALIZE_OBJECT0,
+    FINALIZE_OBJECT0_BACKGROUND,
+    FINALIZE_OBJECT2,
+    FINALIZE_OBJECT2_BACKGROUND,
+    FINALIZE_OBJECT4,
+    FINALIZE_OBJECT4_BACKGROUND,
+    FINALIZE_OBJECT8,
+    FINALIZE_OBJECT8_BACKGROUND,
+    FINALIZE_OBJECT12,
+    FINALIZE_OBJECT12_BACKGROUND,
+    FINALIZE_OBJECT16,
+    FINALIZE_OBJECT16_BACKGROUND,
+    FINALIZE_OBJECT_LAST = FINALIZE_OBJECT16_BACKGROUND,
+    FINALIZE_SCRIPT,
+    FINALIZE_SHAPE,
+    FINALIZE_BASE_SHAPE,
+    FINALIZE_TYPE_OBJECT,
+
+    FINALIZE_XML,
+
+    FINALIZE_SHORT_STRING,
+    FINALIZE_STRING,
+    FINALIZE_EXTERNAL_STRING,
+    FINALIZE_LAST = FINALIZE_EXTERNAL_STRING
+};
+
+static const unsigned FINALIZE_LIMIT = FINALIZE_LAST + 1;
+static const unsigned FINALIZE_OBJECT_LIMIT = FINALIZE_OBJECT_LAST + 1;
+
+
+
+
+
+static const size_t MAX_BACKGROUND_FINALIZE_KINDS = FINALIZE_LIMIT - FINALIZE_OBJECT_LIMIT / 2;
+
+
+
+
+struct Cell
+{
+    static const size_t CellShift = 3;
+    static const size_t CellSize = size_t(1) << CellShift;
+    static const size_t CellMask = CellSize - 1;
+
+    inline uintptr_t address() const;
+    inline ArenaHeader *arenaHeader() const;
+    inline Chunk *chunk() const;
+    inline AllocKind getAllocKind() const;
+    __attribute__((always_inline)) inline bool isMarked(uint32_t color = BLACK) const;
+    __attribute__((always_inline)) inline bool markIfUnmarked(uint32_t color = BLACK) const;
+    __attribute__((always_inline)) inline void unmark(uint32_t color) const;
+
+    inline JSCompartment *compartment() const;
+
+
+
+
+};
+# 114 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h"
+const size_t PageShift = 12;
+
+const size_t PageSize = size_t(1) << PageShift;
+
+const size_t ChunkShift = 20;
+const size_t ChunkSize = size_t(1) << ChunkShift;
+const size_t ChunkMask = ChunkSize - 1;
+
+const size_t ArenaShift = PageShift;
+const size_t ArenaSize = PageSize;
+const size_t ArenaMask = ArenaSize - 1;
+
+
+
+
+
+const static uint32_t FreeCommittedArenasThreshold = (32 << 20) / ArenaSize;
+
+
+
+
+
+
+
+const size_t ArenaCellCount = size_t(1) << (ArenaShift - Cell::CellShift);
+const size_t ArenaBitmapBits = ArenaCellCount;
+const size_t ArenaBitmapBytes = ArenaBitmapBits / 8;
+const size_t ArenaBitmapWords = ArenaBitmapBits / (8 * 4);
+# 169 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h"
+struct FreeSpan
+{
+    uintptr_t first;
+    uintptr_t last;
+
+  public:
+    FreeSpan() {}
+
+    FreeSpan(uintptr_t first, uintptr_t last)
+      : first(first), last(last) {
+        checkSpan();
+    }
+
+
+
+
+
+    static size_t encodeOffsets(size_t firstOffset, size_t lastOffset) {
+
+        typedef int moz_static_assert18[(ArenaShift < 16) ? 1 : -1];
+        do { } while(0);
+        do { } while(0);
+        do { } while(0);
+        return firstOffset | (lastOffset << 16);
+    }
+
+
+
+
+
+    static const size_t FullArenaOffsets = ArenaSize | ((ArenaSize - 1) << 16);
+
+    static FreeSpan decodeOffsets(uintptr_t arenaAddr, size_t offsets) {
+        do { } while(0);
+
+        size_t firstOffset = offsets & 0xFFFF;
+        size_t lastOffset = offsets >> 16;
+        do { } while(0);
+        do { } while(0);
+
+
+
+
+
+        return FreeSpan(arenaAddr + firstOffset, arenaAddr | lastOffset);
+    }
+
+    void initAsEmpty(uintptr_t arenaAddr = 0) {
+        do { } while(0);
+        first = arenaAddr + ArenaSize;
+        last = arenaAddr | (ArenaSize - 1);
+        do { } while(0);
+    }
+
+    bool isEmpty() const {
+        checkSpan();
+        return first > last;
+    }
+
+    bool hasNext() const {
+        checkSpan();
+        return !(last & uintptr_t(1));
+    }
+
+    const FreeSpan *nextSpan() const {
+        do { } while(0);
+        return reinterpret_cast<FreeSpan *>(last);
+    }
+
+    FreeSpan *nextSpanUnchecked(size_t thingSize) const {
+
+
+
+
+
+        return reinterpret_cast<FreeSpan *>(last);
+    }
+
+    uintptr_t arenaAddressUnchecked() const {
+        return last & ~ArenaMask;
+    }
+
+    uintptr_t arenaAddress() const {
+        checkSpan();
+        return arenaAddressUnchecked();
+    }
+
+    ArenaHeader *arenaHeader() const {
+        return reinterpret_cast<ArenaHeader *>(arenaAddress());
+    }
+
+    bool isSameNonEmptySpan(const FreeSpan *another) const {
+        do { } while(0);
+        do { } while(0);
+        return first == another->first && last == another->last;
+    }
+
+    bool isWithinArena(uintptr_t arenaAddr) const {
+        do { } while(0);
+
+
+        return arenaAddress() == arenaAddr;
+    }
+
+    size_t encodeAsOffsets() const {
+
+
+
+
+        uintptr_t arenaAddr = arenaAddress();
+        return encodeOffsets(first - arenaAddr, last & ArenaMask);
+    }
+
+
+    __attribute__((always_inline)) inline void *allocate(size_t thingSize) {
+        do { } while(0);
+        checkSpan();
+        uintptr_t thing = first;
+        if (thing < last) {
+
+            first = thing + thingSize;
+        } else if ((__builtin_expect((thing == last), 1))) {
+
+
+
+
+            *this = *reinterpret_cast<FreeSpan *>(thing);
+        } else {
+            return __null;
+        }
+        checkSpan();
+        return reinterpret_cast<void *>(thing);
+    }
+
+
+    __attribute__((always_inline)) inline void *infallibleAllocate(size_t thingSize) {
+        do { } while(0);
+        checkSpan();
+        uintptr_t thing = first;
+        if (thing < last) {
+            first = thing + thingSize;
+        } else {
+            do { } while(0);
+            *this = *reinterpret_cast<FreeSpan *>(thing);
+        }
+        checkSpan();
+        return reinterpret_cast<void *>(thing);
+    }
+
+
+
+
+
+
+
+    __attribute__((always_inline)) inline void *allocateFromNewArena(uintptr_t arenaAddr, size_t firstThingOffset,
+                                                size_t thingSize) {
+        do { } while(0);
+        uintptr_t thing = arenaAddr | firstThingOffset;
+        first = thing + thingSize;
+        last = arenaAddr | ArenaMask;
+        checkSpan();
+        return reinterpret_cast<void *>(thing);
+    }
+
+    void checkSpan() const {
+# 394 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h"
+    }
+
+};
+
+
+struct ArenaHeader
+{
+    friend struct FreeLists;
+
+    JSCompartment *compartment;
+
+
+
+
+
+
+    ArenaHeader *next;
+
+  private:
+
+
+
+
+
+    size_t firstFreeSpanOffsets;
+# 427 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h"
+    size_t allocKind : 8;
+# 446 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h"
+  public:
+    size_t hasDelayedMarking : 1;
+    size_t allocatedDuringIncremental : 1;
+    size_t markOverflow : 1;
+    size_t nextDelayedMarking : (8 * 4) - 8 - 1 - 1 - 1;
+
+    static void staticAsserts() {
+
+        typedef int moz_static_assert19[(FINALIZE_LIMIT <= 255) ? 1 : -1];
+
+
+
+
+
+        typedef int moz_static_assert20[(ArenaShift >= 8 + 1 + 1 + 1) ? 1 : -1];
+    }
+
+    inline uintptr_t address() const;
+    inline Chunk *chunk() const;
+
+    bool allocated() const {
+        do { } while(0);
+        return allocKind < size_t(FINALIZE_LIMIT);
+    }
+
+    void init(JSCompartment *comp, AllocKind kind) {
+        do { } while(0);
+        do { } while(0);
+        do { } while(0);
+        do { } while(0);
+        compartment = comp;
+
+        typedef int moz_static_assert21[(FINALIZE_LIMIT <= 255) ? 1 : -1];
+        allocKind = size_t(kind);
+
+
+        firstFreeSpanOffsets = FreeSpan::FullArenaOffsets;
+    }
+
+    void setAsNotAllocated() {
+        allocKind = size_t(FINALIZE_LIMIT);
+        markOverflow = 0;
+        allocatedDuringIncremental = 0;
+        hasDelayedMarking = 0;
+        nextDelayedMarking = 0;
+    }
+
+    inline uintptr_t arenaAddress() const;
+    inline Arena *getArena();
+
+    AllocKind getAllocKind() const {
+        do { } while(0);
+        return AllocKind(allocKind);
+    }
+
+    inline size_t getThingSize() const;
+
+    bool hasFreeThings() const {
+        return firstFreeSpanOffsets != FreeSpan::FullArenaOffsets;
+    }
+
+    inline bool isEmpty() const;
+
+    void setAsFullyUsed() {
+        firstFreeSpanOffsets = FreeSpan::FullArenaOffsets;
+    }
+
+    inline FreeSpan getFirstFreeSpan() const;
+    inline void setFirstFreeSpan(const FreeSpan *span);
+
+
+
+
+
+    inline ArenaHeader *getNextDelayedMarking() const;
+    inline void setNextDelayedMarking(ArenaHeader *aheader);
+};
+
+struct Arena
+{
+# 540 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h"
+    ArenaHeader aheader;
+    uint8_t data[ArenaSize - sizeof(ArenaHeader)];
+
+  private:
+    static __attribute__((visibility("default"))) const uint32_t ThingSizes[];
+    static __attribute__((visibility("default"))) const uint32_t FirstThingOffsets[];
+
+  public:
+    static void staticAsserts();
+
+    static size_t thingSize(AllocKind kind) {
+        return ThingSizes[kind];
+    }
+
+    static size_t firstThingOffset(AllocKind kind) {
+        return FirstThingOffsets[kind];
+    }
+
+    static size_t thingsPerArena(size_t thingSize) {
+        do { } while(0);
+
+
+        do { } while(0);
+
+        return (ArenaSize - sizeof(ArenaHeader)) / thingSize;
+    }
+
+    static size_t thingsSpan(size_t thingSize) {
+        return thingsPerArena(thingSize) * thingSize;
+    }
+
+    static bool isAligned(uintptr_t thing, size_t thingSize) {
+
+        uintptr_t tailOffset = (ArenaSize - thing) & ArenaMask;
+        return tailOffset % thingSize == 0;
+    }
+
+    uintptr_t address() const {
+        return aheader.address();
+    }
+
+    uintptr_t thingsStart(AllocKind thingKind) {
+        return address() | firstThingOffset(thingKind);
+    }
+
+    uintptr_t thingsEnd() {
+        return address() + ArenaSize;
+    }
+
+    template <typename T>
+    bool finalize(FreeOp *fop, AllocKind thingKind, size_t thingSize);
+};
+
+inline size_t
+ArenaHeader::getThingSize() const
+{
+    do { } while(0);
+    return Arena::thingSize(getAllocKind());
+}
+
+
+struct ChunkInfo
+{
+    Chunk *next;
+    Chunk **prevp;
+
+
+    ArenaHeader *freeArenasHead;
+
+
+
+
+
+
+    uint32_t lastDecommittedArenaOffset;
+
+
+    uint32_t numArenasFree;
+
+
+    uint32_t numArenasFreeCommitted;
+
+
+    uint32_t age;
+};
+# 655 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h"
+const size_t BytesPerArenaWithHeader = ArenaSize + ArenaBitmapBytes;
+const size_t ChunkDecommitBitmapBytes = ChunkSize / ArenaSize / 8;
+const size_t ChunkBytesAvailable = ChunkSize - sizeof(ChunkInfo) - ChunkDecommitBitmapBytes;
+const size_t ArenasPerChunk = ChunkBytesAvailable / BytesPerArenaWithHeader;
+
+
+struct ChunkBitmap
+{
+    uintptr_t bitmap[ArenaBitmapWords * ArenasPerChunk];
+
+    __attribute__((always_inline)) inline void getMarkWordAndMask(const Cell *cell, uint32_t color,
+                                             uintptr_t **wordp, uintptr_t *maskp);
+
+    __attribute__((always_inline)) inline bool isMarked(const Cell *cell, uint32_t color) {
+        uintptr_t *word, mask;
+        getMarkWordAndMask(cell, color, &word, &mask);
+        return *word & mask;
+    }
+
+    __attribute__((always_inline)) inline bool markIfUnmarked(const Cell *cell, uint32_t color) {
+        uintptr_t *word, mask;
+        getMarkWordAndMask(cell, BLACK, &word, &mask);
+        if (*word & mask)
+            return false;
+        *word |= mask;
+        if (color != BLACK) {
+
+
+
+
+            getMarkWordAndMask(cell, color, &word, &mask);
+            if (*word & mask)
+                return false;
+            *word |= mask;
+        }
+        return true;
+    }
+
+    __attribute__((always_inline)) inline void unmark(const Cell *cell, uint32_t color) {
+        uintptr_t *word, mask;
+        getMarkWordAndMask(cell, color, &word, &mask);
+        *word &= ~mask;
+    }
+
+    void clear() {
+        PodArrayZero(bitmap);
+    }
+# 721 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h"
+};
+
+typedef int moz_static_assert22[(ArenaBitmapBytes * ArenasPerChunk == sizeof(ChunkBitmap)) ? 1 : -1];
+
+typedef BitArray<ArenasPerChunk> PerArenaBitmap;
+
+const size_t ChunkPadSize = ChunkSize
+                            - (sizeof(Arena) * ArenasPerChunk)
+                            - sizeof(ChunkBitmap)
+                            - sizeof(PerArenaBitmap)
+                            - sizeof(ChunkInfo);
+typedef int moz_static_assert23[(ChunkPadSize < BytesPerArenaWithHeader) ? 1 : -1];
+
+
+
+
+
+struct Chunk
+{
+    Arena arenas[ArenasPerChunk];
+
+
+    uint8_t padding[ChunkPadSize];
+
+    ChunkBitmap bitmap;
+    PerArenaBitmap decommittedArenas;
+    ChunkInfo info;
+
+    static Chunk *fromAddress(uintptr_t addr) {
+        addr &= ~ChunkMask;
+        return reinterpret_cast<Chunk *>(addr);
+    }
+
+    static bool withinArenasRange(uintptr_t addr) {
+        uintptr_t offset = addr & ChunkMask;
+        return offset < ArenasPerChunk * ArenaSize;
+    }
+
+    static size_t arenaIndex(uintptr_t addr) {
+        do { } while(0);
+        return (addr & ChunkMask) >> ArenaShift;
+    }
+
+    uintptr_t address() const {
+        uintptr_t addr = reinterpret_cast<uintptr_t>(this);
+        do { } while(0);
+        return addr;
+    }
+
+    bool unused() const {
+        return info.numArenasFree == ArenasPerChunk;
+    }
+
+    bool hasAvailableArenas() const {
+        return info.numArenasFree != 0;
+    }
+
+    inline void addToAvailableList(JSCompartment *compartment);
+    inline void insertToAvailableList(Chunk **insertPoint);
+    inline void removeFromAvailableList();
+
+    ArenaHeader *allocateArena(JSCompartment *comp, AllocKind kind);
+
+    void releaseArena(ArenaHeader *aheader);
+
+    static Chunk *allocate(JSRuntime *rt);
+
+
+    static inline void release(JSRuntime *rt, Chunk *chunk);
+    static inline void releaseList(JSRuntime *rt, Chunk *chunkListHead);
+
+
+    inline void prepareToBeFreed(JSRuntime *rt);
+
+
+
+
+
+    Chunk *getPrevious() {
+        do { } while(0);
+        return fromPointerToNext(info.prevp);
+    }
+
+
+    static Chunk *fromPointerToNext(Chunk **nextFieldPtr) {
+        uintptr_t addr = reinterpret_cast<uintptr_t>(nextFieldPtr);
+        do { } while(0);
+        return reinterpret_cast<Chunk *>(addr - __builtin_offsetof (Chunk, info.next));
+    }
+
+  private:
+    inline void init();
+
+
+    unsigned findDecommittedArenaOffset();
+    ArenaHeader* fetchNextDecommittedArena();
+
+  public:
+
+    inline ArenaHeader* fetchNextFreeArena(JSRuntime *rt);
+
+    inline void addArenaToFreeList(JSRuntime *rt, ArenaHeader *aheader);
+};
+
+typedef int moz_static_assert24[(sizeof(Chunk) == ChunkSize) ? 1 : -1];
+
+inline uintptr_t
+Cell::address() const
+{
+    uintptr_t addr = uintptr_t(this);
+    do { } while(0);
+    do { } while(0);
+    return addr;
+}
+
+inline uintptr_t
+ArenaHeader::address() const
+{
+    uintptr_t addr = reinterpret_cast<uintptr_t>(this);
+    do { } while(0);
+    do { } while(0);
+    return addr;
+}
+
+inline Chunk *
+ArenaHeader::chunk() const
+{
+    return Chunk::fromAddress(address());
+}
+
+inline uintptr_t
+ArenaHeader::arenaAddress() const
+{
+    return address();
+}
+
+inline Arena *
+ArenaHeader::getArena()
+{
+    return reinterpret_cast<Arena *>(arenaAddress());
+}
+
+inline bool
+ArenaHeader::isEmpty() const
+{
+
+    do { } while(0);
+    size_t firstThingOffset = Arena::firstThingOffset(getAllocKind());
+    return firstFreeSpanOffsets == FreeSpan::encodeOffsets(firstThingOffset, ArenaMask);
+}
+
+FreeSpan
+ArenaHeader::getFirstFreeSpan() const
+{
+
+
+
+    return FreeSpan::decodeOffsets(arenaAddress(), firstFreeSpanOffsets);
+}
+
+void
+ArenaHeader::setFirstFreeSpan(const FreeSpan *span)
+{
+    do { } while(0);
+    firstFreeSpanOffsets = span->encodeAsOffsets();
+}
+
+inline ArenaHeader *
+ArenaHeader::getNextDelayedMarking() const
+{
+    return &reinterpret_cast<Arena *>(nextDelayedMarking << ArenaShift)->aheader;
+}
+
+inline void
+ArenaHeader::setNextDelayedMarking(ArenaHeader *aheader)
+{
+    do { } while(0);
+    hasDelayedMarking = 1;
+    nextDelayedMarking = aheader->arenaAddress() >> ArenaShift;
+}
+
+__attribute__((always_inline)) inline void
+ChunkBitmap::getMarkWordAndMask(const Cell *cell, uint32_t color,
+                                uintptr_t **wordp, uintptr_t *maskp)
+{
+    size_t bit = (cell->address() & ChunkMask) / Cell::CellSize + color;
+    do { } while(0);
+    *maskp = uintptr_t(1) << (bit % (8 * 4));
+    *wordp = &bitmap[bit / (8 * 4)];
+}
+
+static void
+AssertValidColor(const void *thing, uint32_t color)
+{
+
+
+
+
+}
+
+inline ArenaHeader *
+Cell::arenaHeader() const
+{
+    uintptr_t addr = address();
+    addr &= ~ArenaMask;
+    return reinterpret_cast<ArenaHeader *>(addr);
+}
+
+Chunk *
+Cell::chunk() const
+{
+    uintptr_t addr = uintptr_t(this);
+    do { } while(0);
+    addr &= ~(ChunkSize - 1);
+    return reinterpret_cast<Chunk *>(addr);
+}
+
+AllocKind
+Cell::getAllocKind() const
+{
+    return arenaHeader()->getAllocKind();
+}
+
+bool
+Cell::isMarked(uint32_t color ) const
+{
+    AssertValidColor(this, color);
+    return chunk()->bitmap.isMarked(this, color);
+}
+
+bool
+Cell::markIfUnmarked(uint32_t color ) const
+{
+    AssertValidColor(this, color);
+    return chunk()->bitmap.markIfUnmarked(this, color);
+}
+
+void
+Cell::unmark(uint32_t color) const
+{
+    do { } while(0);
+    AssertValidColor(this, color);
+    chunk()->bitmap.unmark(this, color);
+}
+
+JSCompartment *
+Cell::compartment() const
+{
+    return arenaHeader()->compartment;
+}
+# 980 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h"
+}
+
+}
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Barrier.h" 2
+# 117 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Barrier.h"
+struct JSXML;
+
+namespace js {
+
+template<class T, typename Unioned = uintptr_t>
+class EncapsulatedPtr
+{
+  protected:
+    union {
+        T *value;
+        Unioned other;
+    };
+
+  public:
+    EncapsulatedPtr() : value(__null) {}
+    explicit EncapsulatedPtr(T *v) : value(v) {}
+    explicit EncapsulatedPtr(const EncapsulatedPtr<T> &v) : value(v.value) {}
+
+    ~EncapsulatedPtr() { pre(); }
+
+
+    void clear() {
+        pre();
+        value = __null;
+    }
+
+    EncapsulatedPtr<T, Unioned> &operator=(T *v) {
+        pre();
+        do { } while(0);
+        value = v;
+        return *this;
+    }
+
+    EncapsulatedPtr<T, Unioned> &operator=(const EncapsulatedPtr<T> &v) {
+        pre();
+        do { } while(0);
+        value = v.value;
+        return *this;
+    }
+
+
+    T *get() const { return value; }
+
+
+
+
+
+    T **unsafeGet() { return &value; }
+    void unsafeSet(T *v) { value = v; }
+
+    Unioned *unsafeGetUnioned() { return &other; }
+
+    T &operator*() const { return *value; }
+    T *operator->() const { return value; }
+
+    operator T*() const { return value; }
+
+  protected:
+    void pre() { T::writeBarrierPre(value); }
+};
+
+template <class T, class Unioned = uintptr_t>
+class HeapPtr : public EncapsulatedPtr<T, Unioned>
+{
+  public:
+    HeapPtr() : EncapsulatedPtr<T>(__null) {}
+    explicit HeapPtr(T *v) : EncapsulatedPtr<T>(v) { post(); }
+    explicit HeapPtr(const HeapPtr<T> &v)
+      : EncapsulatedPtr<T>(v) { post(); }
+
+    void init(T *v) {
+        do { } while(0);
+        this->value = v;
+        post();
+    }
+
+    HeapPtr<T, Unioned> &operator=(T *v) {
+        this->pre();
+        do { } while(0);
+        this->value = v;
+        post();
+        return *this;
+    }
+
+    HeapPtr<T, Unioned> &operator=(const HeapPtr<T> &v) {
+        this->pre();
+        do { } while(0);
+        this->value = v.value;
+        post();
+        return *this;
+    }
+
+  protected:
+    void post() { T::writeBarrierPost(this->value, (void *)&this->value); }
+
+
+    template<class T1, class T2>
+    friend inline void
+    BarrieredSetPair(JSCompartment *comp,
+                     HeapPtr<T1> &v1, T1 *val1,
+                     HeapPtr<T2> &v2, T2 *val2);
+};
+
+template <class T>
+class RelocatablePtr : public EncapsulatedPtr<T>
+{
+  public:
+    RelocatablePtr() : EncapsulatedPtr<T>(__null) {}
+    explicit RelocatablePtr(T *v) : EncapsulatedPtr<T>(v) { post(); }
+    explicit RelocatablePtr(const RelocatablePtr<T> &v)
+      : EncapsulatedPtr<T>(v) { post(); }
+
+    ~RelocatablePtr() {
+        this->pre();
+        relocate();
+    }
+
+    RelocatablePtr<T> &operator=(T *v) {
+        this->pre();
+        do { } while(0);
+        this->value = v;
+        post();
+        return *this;
+    }
+
+    RelocatablePtr<T> &operator=(const RelocatablePtr<T> &v) {
+        this->pre();
+        do { } while(0);
+        this->value = v.value;
+        post();
+        return *this;
+    }
+
+  protected:
+    void post() { T::writeBarrierRelocPost(this->value, (void *)&this->value); }
+    void relocate() { T::writeBarrierRelocated(this->value, (void *)&this->value); }
+};
+
+
+
+
+
+template<class T1, class T2>
+static inline void
+BarrieredSetPair(JSCompartment *comp,
+                 HeapPtr<T1> &v1, T1 *val1,
+                 HeapPtr<T2> &v2, T2 *val2)
+{
+    if (T1::needWriteBarrierPre(comp)) {
+        v1.pre();
+        v2.pre();
+    }
+    v1.unsafeSet(val1);
+    v2.unsafeSet(val2);
+    v1.post();
+    v2.post();
+}
+
+struct Shape;
+class BaseShape;
+namespace types { struct TypeObject; }
+
+typedef RelocatablePtr<JSObject> RelocatablePtrObject;
+typedef RelocatablePtr<JSScript> RelocatablePtrScript;
+
+typedef HeapPtr<JSObject> HeapPtrObject;
+typedef HeapPtr<JSFunction> HeapPtrFunction;
+typedef HeapPtr<JSString> HeapPtrString;
+typedef HeapPtr<JSScript> HeapPtrScript;
+typedef HeapPtr<Shape> HeapPtrShape;
+typedef HeapPtr<BaseShape> HeapPtrBaseShape;
+typedef HeapPtr<types::TypeObject> HeapPtrTypeObject;
+typedef HeapPtr<JSXML> HeapPtrXML;
+
+
+template<class T>
+struct HeapPtrHasher
+{
+    typedef HeapPtr<T> Key;
+    typedef T *Lookup;
+
+    static HashNumber hash(Lookup obj) { return DefaultHasher<T *>::hash(obj); }
+    static bool match(const Key &k, Lookup l) { return k.get() == l; }
+};
+
+
+template <class T>
+struct DefaultHasher< HeapPtr<T> > : HeapPtrHasher<T> { };
+
+class EncapsulatedValue
+{
+  protected:
+    Value value;
+
+
+
+
+
+    EncapsulatedValue() ;
+    EncapsulatedValue(const EncapsulatedValue &v) ;
+    EncapsulatedValue &operator=(const Value &v) ;
+    EncapsulatedValue &operator=(const EncapsulatedValue &v) ;
+
+    EncapsulatedValue(const Value &v) : value(v) {}
+    ~EncapsulatedValue() {}
+
+  public:
+    inline bool operator==(const EncapsulatedValue &v) const { return value == v.value; }
+    inline bool operator!=(const EncapsulatedValue &v) const { return value != v.value; }
+
+    const Value &get() const { return value; }
+    Value *unsafeGet() { return &value; }
+    operator const Value &() const { return value; }
+
+    bool isUndefined() const { return value.isUndefined(); }
+    bool isNull() const { return value.isNull(); }
+    bool isBoolean() const { return value.isBoolean(); }
+    bool isTrue() const { return value.isTrue(); }
+    bool isFalse() const { return value.isFalse(); }
+    bool isNumber() const { return value.isNumber(); }
+    bool isInt32() const { return value.isInt32(); }
+    bool isDouble() const { return value.isDouble(); }
+    bool isString() const { return value.isString(); }
+    bool isObject() const { return value.isObject(); }
+    bool isMagic(JSWhyMagic why) const { return value.isMagic(why); }
+    bool isGCThing() const { return value.isGCThing(); }
+    bool isMarkable() const { return value.isMarkable(); }
+
+    bool toBoolean() const { return value.toBoolean(); }
+    double toNumber() const { return value.toNumber(); }
+    int32_t toInt32() const { return value.toInt32(); }
+    double toDouble() const { return value.toDouble(); }
+    JSString *toString() const { return value.toString(); }
+    JSObject &toObject() const { return value.toObject(); }
+    JSObject *toObjectOrNull() const { return value.toObjectOrNull(); }
+    void *toGCThing() const { return value.toGCThing(); }
+
+    JSGCTraceKind gcKind() const { return value.gcKind(); }
+
+    uint64_t asRawBits() const { return value.asRawBits(); }
+
+
+
+
+
+    static inline void writeBarrierPre(const Value &v);
+    static inline void writeBarrierPre(JSCompartment *comp, const Value &v);
+
+  protected:
+    inline void pre();
+    inline void pre(JSCompartment *comp);
+};
+
+class HeapValue : public EncapsulatedValue
+{
+  public:
+    explicit inline HeapValue();
+    explicit inline HeapValue(const Value &v);
+    explicit inline HeapValue(const HeapValue &v);
+    inline ~HeapValue();
+
+    inline void init(const Value &v);
+    inline void init(JSCompartment *comp, const Value &v);
+
+    inline HeapValue &operator=(const Value &v);
+    inline HeapValue &operator=(const HeapValue &v);
+
+
+
+
+
+
+
+    inline void set(JSCompartment *comp, const Value &v);
+
+    static inline void writeBarrierPost(const Value &v, Value *addr);
+    static inline void writeBarrierPost(JSCompartment *comp, const Value &v, Value *addr);
+
+  private:
+    inline void post();
+    inline void post(JSCompartment *comp);
+};
+
+class RelocatableValue : public EncapsulatedValue
+{
+  public:
+    explicit inline RelocatableValue();
+    explicit inline RelocatableValue(const Value &v);
+    explicit inline RelocatableValue(const RelocatableValue &v);
+    inline ~RelocatableValue();
+
+    inline RelocatableValue &operator=(const Value &v);
+    inline RelocatableValue &operator=(const RelocatableValue &v);
+
+  private:
+    inline void post();
+    inline void post(JSCompartment *comp);
+    inline void relocate();
+};
+
+class HeapSlot : public EncapsulatedValue
+{
+
+
+
+
+    inline HeapSlot &operator=(const Value &v) ;
+    inline HeapSlot &operator=(const HeapValue &v) ;
+    inline HeapSlot &operator=(const HeapSlot &v) ;
+
+  public:
+    explicit inline HeapSlot() ;
+    explicit inline HeapSlot(JSObject *obj, uint32_t slot, const Value &v);
+    explicit inline HeapSlot(JSObject *obj, uint32_t slot, const HeapSlot &v);
+    inline ~HeapSlot();
+
+    inline void init(JSObject *owner, uint32_t slot, const Value &v);
+    inline void init(JSCompartment *comp, JSObject *owner, uint32_t slot, const Value &v);
+
+    inline void set(JSObject *owner, uint32_t slot, const Value &v);
+    inline void set(JSCompartment *comp, JSObject *owner, uint32_t slot, const Value &v);
+
+    static inline void writeBarrierPost(JSObject *obj, uint32_t slot);
+    static inline void writeBarrierPost(JSCompartment *comp, JSObject *obj, uint32_t slotno);
+
+  private:
+    inline void post(JSObject *owner, uint32_t slot);
+    inline void post(JSCompartment *comp, JSObject *owner, uint32_t slot);
+};
+
+
+
+
+
+
+
+inline void
+SlotRangeWriteBarrierPost(JSCompartment *comp, JSObject *obj, uint32_t start, uint32_t count)
+{
+}
+
+static inline const Value *
+Valueify(const EncapsulatedValue *array)
+{
+    typedef int moz_static_assert25[(sizeof(HeapValue) == sizeof(Value)) ? 1 : -1];
+    typedef int moz_static_assert26[(sizeof(HeapSlot) == sizeof(Value)) ? 1 : -1];
+    return (const Value *)array;
+}
+
+class HeapSlotArray
+{
+    HeapSlot *array;
+
+  public:
+    HeapSlotArray(HeapSlot *array) : array(array) {}
+
+    operator const Value *() const { return Valueify(array); }
+    operator HeapSlot *() const { return array; }
+
+    HeapSlotArray operator +(int offset) const { return HeapSlotArray(array + offset); }
+    HeapSlotArray operator +(uint32_t offset) const { return HeapSlotArray(array + offset); }
+};
+
+class EncapsulatedId
+{
+  protected:
+    jsid value;
+
+    explicit EncapsulatedId() : value(((jsid)0x2)) {}
+    explicit inline EncapsulatedId(jsid id) : value(id) {}
+    ~EncapsulatedId() {}
+
+  private:
+    EncapsulatedId(const EncapsulatedId &v) ;
+    EncapsulatedId &operator=(const EncapsulatedId &v) ;
+
+  public:
+    bool operator==(jsid id) const { return value == id; }
+    bool operator!=(jsid id) const { return value != id; }
+
+    jsid get() const { return value; }
+    jsid *unsafeGet() { return &value; }
+    operator jsid() const { return value; }
+
+  protected:
+    inline void pre();
+};
+
+class RelocatableId : public EncapsulatedId
+{
+  public:
+    explicit RelocatableId() : EncapsulatedId() {}
+    explicit inline RelocatableId(jsid id) : EncapsulatedId(id) {}
+    inline ~RelocatableId();
+
+    inline RelocatableId &operator=(jsid id);
+    inline RelocatableId &operator=(const RelocatableId &v);
+};
+
+class HeapId : public EncapsulatedId
+{
+  public:
+    explicit HeapId() : EncapsulatedId() {}
+    explicit inline HeapId(jsid id);
+    inline ~HeapId();
+
+    inline void init(jsid id);
+
+    inline HeapId &operator=(jsid id);
+    inline HeapId &operator=(const HeapId &v);
+
+  private:
+    inline void post();
+
+    HeapId(const HeapId &v) ;
+};
+# 544 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Barrier.h"
+template<class T>
+class ReadBarriered
+{
+    T *value;
+
+  public:
+    ReadBarriered() : value(__null) {}
+    ReadBarriered(T *value) : value(value) {}
+
+    T *get() const {
+        if (!value)
+            return __null;
+        T::readBarrier(value);
+        return value;
+    }
+
+    operator T*() const { return get(); }
+
+    T &operator*() const { return *get(); }
+    T *operator->() const { return get(); }
+
+    T **unsafeGet() { return &value; }
+
+    void set(T *v) { value = v; }
+
+    operator bool() { return !!value; }
+};
+
+class ReadBarrieredValue
+{
+    Value value;
+
+  public:
+    ReadBarrieredValue() : value(UndefinedValue()) {}
+    ReadBarrieredValue(const Value &value) : value(value) {}
+
+    inline const Value &get() const;
+    Value *unsafeGet() { return &value; }
+    inline operator const Value &() const;
+
+    inline JSObject &toObject() const;
+};
+
+namespace tl {
+
+template <class T> struct IsRelocatableHeapType<HeapPtr<T> >
+                                                    { static const bool result = false; };
+template <> struct IsRelocatableHeapType<HeapSlot> { static const bool result = false; };
+template <> struct IsRelocatableHeapType<HeapValue> { static const bool result = false; };
+template <> struct IsRelocatableHeapType<HeapId> { static const bool result = false; };
+
+}
+}
+# 20 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h" 2
+
+
+struct JSIdArray {
+    int length;
+    js::HeapId vector[1];
+};
+
+
+
+static __attribute__((always_inline)) inline jsid
+JSID_FROM_BITS(size_t bits)
+{
+    jsid id;
+    (id) = bits;
+    return id;
+}
+# 58 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h"
+static __attribute__((always_inline)) inline jsid
+NON_INTEGER_ATOM_TO_JSID(JSAtom *atom)
+{
+    do { } while(0);
+    jsid id = JSID_FROM_BITS((size_t)atom);
+    do { } while(0);
+    return id;
+}
+
+
+static __attribute__((always_inline)) inline JSBool
+JSID_IS_ATOM(jsid id)
+{
+    return JSID_IS_STRING(id);
+}
+
+static __attribute__((always_inline)) inline JSBool
+JSID_IS_ATOM(jsid id, JSAtom *atom)
+{
+    return id == JSID_FROM_BITS((size_t)atom);
+}
+
+static __attribute__((always_inline)) inline JSAtom *
+JSID_TO_ATOM(jsid id)
+{
+    return (JSAtom *)JSID_TO_STRING(id);
+}
+
+typedef int moz_static_assert27[(sizeof(JSHashNumber) == 4) ? 1 : -1];
+typedef int moz_static_assert28[(sizeof(jsid) == 4) ? 1 : -1];
+
+namespace js {
+
+static __attribute__((always_inline)) inline JSHashNumber
+HashId(jsid id)
+{
+    JSHashNumber n =
+
+        JSHashNumber((id));
+
+
+
+
+
+    return n * 0x9E3779B9U;
+}
+
+static __attribute__((always_inline)) inline Value
+IdToValue(jsid id)
+{
+    if (JSID_IS_STRING(id))
+        return StringValue(JSID_TO_STRING(id));
+    if ((__builtin_expect((JSID_IS_INT(id)), 1)))
+        return Int32Value(JSID_TO_INT(id));
+    if ((__builtin_expect((JSID_IS_OBJECT(id)), 1)))
+        return ObjectValue(*JSID_TO_OBJECT(id));
+    do { } while(0);
+    return UndefinedValue();
+}
+
+static __attribute__((always_inline)) inline jsval
+IdToJsval(jsid id)
+{
+    return IdToValue(id);
+}
+
+template<>
+struct DefaultHasher<jsid>
+{
+    typedef jsid Lookup;
+    static HashNumber hash(const Lookup &l) {
+        return HashNumber((l));
+    }
+    static bool match(const jsid &id, const Lookup &l) {
+        return id == l;
+    }
+};
+
+}
+
+
+#define ATOM_HASH(atom) ((JSHashNumber)(atom) >> 2)
+# 151 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h"
+extern const char *
+js_AtomToPrintableString(JSContext *cx, JSAtom *atom, JSAutoByteString *bytes);
+
+namespace js {
+
+
+inline uint32_t
+HashChars(const jschar *chars, size_t length)
+{
+    uint32_t h = 0;
+    for (; length; chars++, length--)
+        h = (((h) << (4)) | ((h) >> (32 - (4)))) ^ *chars;
+    return h;
+}
+
+class AtomStateEntry
+{
+    uintptr_t bits;
+
+    static const uintptr_t NO_TAG_MASK = uintptr_t(-1) - 1;
+
+  public:
+    AtomStateEntry() : bits(0) {}
+    AtomStateEntry(const AtomStateEntry &other) : bits(other.bits) {}
+    AtomStateEntry(JSAtom *ptr, bool tagged)
+      : bits(uintptr_t(ptr) | uintptr_t(tagged))
+    {
+        do { } while(0);
+    }
+
+    bool isTagged() const {
+        return bits & 0x1;
+    }
+
+
+
+
+
+    void setTagged(bool enabled) const {
+        const_cast<AtomStateEntry *>(this)->bits |= uintptr_t(enabled);
+    }
+
+    JSAtom *asPtr() const;
+};
+
+struct AtomHasher
+{
+    struct Lookup
+    {
+        const jschar *chars;
+        size_t length;
+        const JSAtom *atom;
+
+        Lookup(const jschar *chars, size_t length) : chars(chars), length(length), atom(__null) {}
+        inline Lookup(const JSAtom *atom);
+    };
+
+    static HashNumber hash(const Lookup &l) { return HashChars(l.chars, l.length); }
+    static inline bool match(const AtomStateEntry &entry, const Lookup &lookup);
+};
+
+typedef HashSet<AtomStateEntry, AtomHasher, SystemAllocPolicy> AtomSet;
+# 231 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h"
+enum FlationCoding
+{
+    NormalEncoding,
+    CESU8Encoding
+};
+
+class PropertyName;
+
+}
+
+struct JSAtomState
+{
+    js::AtomSet atoms;
+# 256 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h"
+    js::PropertyName *emptyAtom;
+
+
+
+
+
+    js::PropertyName *booleanAtoms[2];
+    js::PropertyName *typeAtoms[JSTYPE_LIMIT];
+    js::PropertyName *nullAtom;
+
+
+    js::PropertyName *classAtoms[JSProto_LIMIT];
+
+
+#define DEFINE_ATOM(id,text) js::PropertyName *id ##Atom;
+#define DEFINE_PROTOTYPE_ATOM(id) js::PropertyName *id ##Atom;
+#define DEFINE_KEYWORD_ATOM(id) js::PropertyName *id ##Atom;
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.tbl" 1
+# 37 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.tbl"
+js::PropertyName *anonymousAtom;
+js::PropertyName *applyAtom;
+js::PropertyName *argumentsAtom;
+js::PropertyName *arityAtom;
+js::PropertyName *BYTES_PER_ELEMENTAtom;
+js::PropertyName *callAtom;
+js::PropertyName *calleeAtom;
+js::PropertyName *callerAtom;
+js::PropertyName *classPrototypeAtom;
+js::PropertyName *constructorAtom;
+js::PropertyName *eachAtom;
+js::PropertyName *evalAtom;
+js::PropertyName *fileNameAtom;
+js::PropertyName *getAtom;
+js::PropertyName *globalAtom;
+js::PropertyName *ignoreCaseAtom;
+js::PropertyName *indexAtom;
+js::PropertyName *inputAtom;
+js::PropertyName *toISOStringAtom;
+js::PropertyName *iteratorAtom;
+js::PropertyName *joinAtom;
+js::PropertyName *lastIndexAtom;
+js::PropertyName *lengthAtom;
+js::PropertyName *lineNumberAtom;
+js::PropertyName *messageAtom;
+js::PropertyName *multilineAtom;
+js::PropertyName *nameAtom;
+js::PropertyName *nextAtom;
+js::PropertyName *noSuchMethodAtom;
+js::PropertyName *objectNullAtom;
+js::PropertyName *objectUndefinedAtom;
+js::PropertyName *ofAtom;
+js::PropertyName *protoAtom;
+js::PropertyName *setAtom;
+js::PropertyName *sourceAtom;
+js::PropertyName *stackAtom;
+js::PropertyName *stickyAtom;
+js::PropertyName *toGMTStringAtom;
+js::PropertyName *toLocaleStringAtom;
+js::PropertyName *toSourceAtom;
+js::PropertyName *toStringAtom;
+js::PropertyName *toUTCStringAtom;
+js::PropertyName *valueOfAtom;
+js::PropertyName *toJSONAtom;
+js::PropertyName *void0Atom;
+js::PropertyName *enumerableAtom;
+js::PropertyName *configurableAtom;
+js::PropertyName *writableAtom;
+js::PropertyName *valueAtom;
+js::PropertyName *testAtom;
+js::PropertyName *useStrictAtom;
+js::PropertyName *locAtom;
+js::PropertyName *lineAtom;
+js::PropertyName *InfinityAtom;
+js::PropertyName *NaNAtom;
+js::PropertyName *builderAtom;
+
+
+js::PropertyName *etagoAtom;
+js::PropertyName *namespaceAtom;
+js::PropertyName *ptagcAtom;
+js::PropertyName *qualifierAtom;
+js::PropertyName *spaceAtom;
+js::PropertyName *stagoAtom;
+js::PropertyName *starAtom;
+js::PropertyName *starQualifierAtom;
+js::PropertyName *tagcAtom;
+js::PropertyName *xmlAtom;
+js::PropertyName *functionNamespaceURIAtom;
+
+
+js::PropertyName *ProxyAtom;
+js::PropertyName *getOwnPropertyDescriptorAtom;
+js::PropertyName *getPropertyDescriptorAtom;
+js::PropertyName *definePropertyAtom;
+js::PropertyName *deleteAtom;
+js::PropertyName *getOwnPropertyNamesAtom;
+js::PropertyName *enumerateAtom;
+js::PropertyName *fixAtom;
+js::PropertyName *hasAtom;
+js::PropertyName *hasOwnAtom;
+js::PropertyName *keysAtom;
+js::PropertyName *iterateAtom;
+js::PropertyName *WeakMapAtom;
+js::PropertyName *byteLengthAtom;
+js::PropertyName *returnAtom;
+js::PropertyName *throwAtom;
+js::PropertyName *urlAtom;
+js::PropertyName *innermostAtom;
+
+js::PropertyName *XMLListAtom;
+js::PropertyName *decodeURIAtom;
+js::PropertyName *decodeURIComponentAtom;
+js::PropertyName *defineGetterAtom;
+js::PropertyName *defineSetterAtom;
+js::PropertyName *encodeURIAtom;
+js::PropertyName *encodeURIComponentAtom;
+js::PropertyName *escapeAtom;
+js::PropertyName *hasOwnPropertyAtom;
+js::PropertyName *isFiniteAtom;
+js::PropertyName *isNaNAtom;
+js::PropertyName *isPrototypeOfAtom;
+js::PropertyName *isXMLNameAtom;
+js::PropertyName *lookupGetterAtom;
+js::PropertyName *lookupSetterAtom;
+js::PropertyName *parseFloatAtom;
+js::PropertyName *parseIntAtom;
+js::PropertyName *propertyIsEnumerableAtom;
+js::PropertyName *unescapeAtom;
+js::PropertyName *unevalAtom;
+js::PropertyName *unwatchAtom;
+js::PropertyName *watchAtom;
+# 274 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h" 2
+#undef DEFINE_ATOM
+#undef DEFINE_PROTOTYPE_ATOM
+#undef DEFINE_KEYWORD_ATOM
+
+    static const size_t commonAtomsOffset;
+
+    void junkAtoms() {
+
+
+
+    }
+
+    JSAtom **commonAtomsStart() {
+        return reinterpret_cast<JSAtom **>(&emptyAtom);
+    }
+
+    void checkStaticInvariants();
+};
+
+extern bool
+AtomIsInterned(JSContext *cx, JSAtom *atom);
+
+#define ATOM(name) cx->runtime->atomState.name ##Atom
+
+#define COMMON_ATOM_INDEX(name) ((offsetof(JSAtomState, name ##Atom) - JSAtomState::commonAtomsOffset) / sizeof(JSAtom*))
+
+
+#define COMMON_TYPE_ATOM_INDEX(type) ((offsetof(JSAtomState, typeAtoms[type]) - JSAtomState::commonAtomsOffset) / sizeof(JSAtom*))
+
+
+
+#define NAME_OFFSET(name) offsetof(JSAtomState, name ##Atom)
+#define OFFSET_TO_NAME(rt,off) (*(js::PropertyName **)((char*)&(rt)->atomState + (off)))
+#define CLASS_NAME_OFFSET(name) offsetof(JSAtomState, classAtoms[JSProto_ ##name])
+#define CLASS_NAME(cx,name) ((cx)->runtime->atomState.classAtoms[JSProto_ ##name])
+
+extern const char *const js_common_atom_names[];
+extern const size_t js_common_atom_count;
+
+
+
+
+#define JS_BOOLEAN_STR(type) (js_common_atom_names[1 + (type)])
+#define JS_TYPE_STR(type) (js_common_atom_names[1 + 2 + (type)])
+
+
+extern const char js_object_str[];
+extern const char js_undefined_str[];
+
+
+#define JS_PROTO(name,code,init) extern const char js_ ##name ##_str[];
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsproto.tbl" 1
+
+
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h" 1
+# 42 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_VERSION_ECMA_3 148
+#define JS_VERSION_ECMA_3_TEST 149
+# 124 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_HAS_STR_HTML_HELPERS 1
+#define JS_HAS_OBJ_PROTO_PROP 1
+#define JS_HAS_OBJ_WATCHPOINT 1
+#define JS_HAS_TOSOURCE 1
+#define JS_HAS_CATCH_GUARD 1
+#define JS_HAS_UNEVAL 1
+#define JS_HAS_CONST 1
+#define JS_HAS_FUN_EXPR_STMT 1
+#define JS_HAS_NO_SUCH_METHOD 1
+#define JS_HAS_GENERATORS 1
+#define JS_HAS_BLOCK_SCOPE 1
+#define JS_HAS_DESTRUCTURING 2
+#define JS_HAS_GENERATOR_EXPRS 1
+#define JS_HAS_EXPR_CLOSURES 1
+# 146 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_HAS_NEW_GLOBAL_OBJECT 1
+
+
+#define JS_HAS_MAKE_SYSTEM_OBJECT 1
+
+
+#define JS_HAS_DESTRUCTURING_SHORTHAND (JS_HAS_DESTRUCTURING == 2)
+
+
+
+
+
+#define OLD_GETTER_SETTER_METHODS 1
+
+
+#define USE_NEW_OBJECT_REPRESENTATION 0
+
+
+
+
+#define NEW_OBJECT_REPRESENTATION_ONLY() MOZ_NOT_REACHED("don't call this!  to be used in the new object representation")
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsproto.tbl" 2
+
+
+#define XML_INIT js_InitXMLClass
+#define NAMESPACE_INIT js_InitNamespaceClass
+#define QNAME_INIT js_InitQNameClass
+#define XMLFILTER_INIT js_InitXMLFilterClass
+# 27 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsproto.tbl"
+extern const char js_Null_str[];
+extern const char js_Object_str[];
+extern const char js_Function_str[];
+extern const char js_Array_str[];
+extern const char js_Boolean_str[];
+extern const char js_JSON_str[];
+extern const char js_Date_str[];
+extern const char js_Math_str[];
+extern const char js_Number_str[];
+extern const char js_String_str[];
+extern const char js_RegExp_str[];
+extern const char js_XML_str[];
+extern const char js_Namespace_str[];
+extern const char js_QName_str[];
+extern const char js_Error_str[];
+extern const char js_InternalError_str[];
+extern const char js_EvalError_str[];
+extern const char js_RangeError_str[];
+extern const char js_ReferenceError_str[];
+extern const char js_SyntaxError_str[];
+extern const char js_TypeError_str[];
+extern const char js_URIError_str[];
+extern const char js_Iterator_str[];
+extern const char js_StopIteration_str[];
+extern const char js_ArrayBuffer_str[];
+extern const char js_Int8Array_str[];
+extern const char js_Uint8Array_str[];
+extern const char js_Int16Array_str[];
+extern const char js_Uint16Array_str[];
+extern const char js_Int32Array_str[];
+extern const char js_Uint32Array_str[];
+extern const char js_Float32Array_str[];
+extern const char js_Float64Array_str[];
+extern const char js_Uint8ClampedArray_str[];
+extern const char js_Proxy_str[];
+extern const char js_AnyName_str[];
+extern const char js_WeakMap_str[];
+extern const char js_Map_str[];
+extern const char js_Set_str[];
+extern const char js_DataView_str[];
+
+#undef XML_INIT
+#undef NAMESPACE_INIT
+#undef QNAME_INIT
+# 326 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h" 2
+#undef JS_PROTO
+
+#define DEFINE_ATOM(id,text) extern const char js_ ##id ##_str[];
+#define DEFINE_PROTOTYPE_ATOM(id) 
+#define DEFINE_KEYWORD_ATOM(id) 
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.tbl" 1
+# 37 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.tbl"
+extern const char js_anonymous_str[];
+extern const char js_apply_str[];
+extern const char js_arguments_str[];
+extern const char js_arity_str[];
+extern const char js_BYTES_PER_ELEMENT_str[];
+extern const char js_call_str[];
+extern const char js_callee_str[];
+extern const char js_caller_str[];
+extern const char js_classPrototype_str[];
+extern const char js_constructor_str[];
+extern const char js_each_str[];
+extern const char js_eval_str[];
+extern const char js_fileName_str[];
+extern const char js_get_str[];
+extern const char js_global_str[];
+extern const char js_ignoreCase_str[];
+extern const char js_index_str[];
+extern const char js_input_str[];
+extern const char js_toISOString_str[];
+extern const char js_iterator_str[];
+extern const char js_join_str[];
+extern const char js_lastIndex_str[];
+extern const char js_length_str[];
+extern const char js_lineNumber_str[];
+extern const char js_message_str[];
+extern const char js_multiline_str[];
+extern const char js_name_str[];
+extern const char js_next_str[];
+extern const char js_noSuchMethod_str[];
+extern const char js_objectNull_str[];
+extern const char js_objectUndefined_str[];
+extern const char js_of_str[];
+extern const char js_proto_str[];
+extern const char js_set_str[];
+extern const char js_source_str[];
+extern const char js_stack_str[];
+extern const char js_sticky_str[];
+extern const char js_toGMTString_str[];
+extern const char js_toLocaleString_str[];
+extern const char js_toSource_str[];
+extern const char js_toString_str[];
+extern const char js_toUTCString_str[];
+extern const char js_valueOf_str[];
+extern const char js_toJSON_str[];
+extern const char js_void0_str[];
+extern const char js_enumerable_str[];
+extern const char js_configurable_str[];
+extern const char js_writable_str[];
+extern const char js_value_str[];
+extern const char js_test_str[];
+extern const char js_useStrict_str[];
+extern const char js_loc_str[];
+extern const char js_line_str[];
+extern const char js_Infinity_str[];
+extern const char js_NaN_str[];
+extern const char js_builder_str[];
+
+
+extern const char js_etago_str[];
+extern const char js_namespace_str[];
+extern const char js_ptagc_str[];
+extern const char js_qualifier_str[];
+extern const char js_space_str[];
+extern const char js_stago_str[];
+extern const char js_star_str[];
+extern const char js_starQualifier_str[];
+extern const char js_tagc_str[];
+extern const char js_xml_str[];
+extern const char js_functionNamespaceURI_str[];
+
+
+
+extern const char js_getOwnPropertyDescriptor_str[];
+extern const char js_getPropertyDescriptor_str[];
+extern const char js_defineProperty_str[];
+
+extern const char js_getOwnPropertyNames_str[];
+extern const char js_enumerate_str[];
+extern const char js_fix_str[];
+extern const char js_has_str[];
+extern const char js_hasOwn_str[];
+extern const char js_keys_str[];
+extern const char js_iterate_str[];
+
+extern const char js_byteLength_str[];
+
+
+extern const char js_url_str[];
+extern const char js_innermost_str[];
+
+extern const char js_XMLList_str[];
+extern const char js_decodeURI_str[];
+extern const char js_decodeURIComponent_str[];
+extern const char js_defineGetter_str[];
+extern const char js_defineSetter_str[];
+extern const char js_encodeURI_str[];
+extern const char js_encodeURIComponent_str[];
+extern const char js_escape_str[];
+extern const char js_hasOwnProperty_str[];
+extern const char js_isFinite_str[];
+extern const char js_isNaN_str[];
+extern const char js_isPrototypeOf_str[];
+extern const char js_isXMLName_str[];
+extern const char js_lookupGetter_str[];
+extern const char js_lookupSetter_str[];
+extern const char js_parseFloat_str[];
+extern const char js_parseInt_str[];
+extern const char js_propertyIsEnumerable_str[];
+extern const char js_unescape_str[];
+extern const char js_uneval_str[];
+extern const char js_unwatch_str[];
+extern const char js_watch_str[];
+# 332 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h" 2
+#undef DEFINE_ATOM
+#undef DEFINE_PROTOTYPE_ATOM
+#undef DEFINE_KEYWORD_ATOM
+
+
+extern const char js_close_str[];
+extern const char js_send_str[];
+
+
+
+extern const char js_getter_str[];
+extern const char js_setter_str[];
+
+
+
+
+
+
+extern JSBool
+js_InitAtomState(JSRuntime *rt);
+
+
+
+
+
+extern void
+js_FinishAtomState(JSRuntime *rt);
+
+
+
+
+
+namespace js {
+
+extern void
+MarkAtomState(JSTracer *trc, bool markAll);
+
+extern void
+SweepAtomState(JSRuntime *rt);
+
+extern bool
+InitCommonAtoms(JSContext *cx);
+
+extern void
+FinishCommonAtoms(JSRuntime *rt);
+
+
+enum InternBehavior
+{
+    DoNotInternAtom = false,
+    InternAtom = true
+};
+
+}
+
+extern JSAtom *
+js_Atomize(JSContext *cx, const char *bytes, size_t length,
+           js::InternBehavior ib = js::DoNotInternAtom,
+           js::FlationCoding fc = js::NormalEncoding);
+
+extern JSAtom *
+js_AtomizeChars(JSContext *cx, const jschar *chars, size_t length,
+                js::InternBehavior ib = js::DoNotInternAtom);
+
+extern JSAtom *
+js_AtomizeString(JSContext *cx, JSString *str, js::InternBehavior ib = js::DoNotInternAtom);
+
+
+
+
+
+extern JSAtom *
+js_GetExistingStringAtom(JSContext *cx, const jschar *chars, size_t length);
+# 413 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h"
+inline bool
+js_ValueToAtom(JSContext *cx, const js::Value &v, JSAtom **atomp);
+
+namespace js {
+
+bool
+InternNonIntElementId(JSContext *cx, JSObject *obj, const Value &idval,
+                      jsid *idp, Value *vp);
+
+inline bool
+InternNonIntElementId(JSContext *cx, JSObject *obj, const Value &idval, jsid *idp)
+{
+    Value dummy;
+    return InternNonIntElementId(cx, obj, idval, idp, &dummy);
+}
+
+
+
+
+
+
+extern void
+InitAtomMap(JSContext *cx, AtomIndexMap *indices, HeapPtr<JSAtom> *atoms);
+
+template<XDRMode mode>
+bool
+XDRAtom(XDRState<mode> *xdr, JSAtom **atomp);
+
+}
+# 21 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsclass.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsclass.h"
+#define jsclass_h__ 
+# 21 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsclass.h"
+namespace js {
+
+class PropertyName;
+class SpecialId;
+
+static __attribute__((always_inline)) inline jsid
+SPECIALID_TO_JSID(const SpecialId &sid);
+# 41 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsclass.h"
+class SpecialId {
+    uintptr_t bits;
+
+
+    friend __attribute__((always_inline)) inline jsid SPECIALID_TO_JSID(const SpecialId &sid);
+
+    static const uintptr_t TYPE_VOID = 0x2;
+    static const uintptr_t TYPE_OBJECT = 0x4;
+    static const uintptr_t TYPE_DEFAULT_XML_NAMESPACE = 0x6;
+    static const uintptr_t TYPE_MASK = 0x7;
+
+    SpecialId(uintptr_t bits) : bits(bits) { }
+
+  public:
+    SpecialId() : bits(TYPE_VOID) { }
+
+
+
+    SpecialId(JSObject &obj)
+      : bits(uintptr_t(&obj) | TYPE_OBJECT)
+    {
+        do { } while(0);
+        do { } while(0);
+    }
+
+    bool isObject() const {
+        return (bits & TYPE_MASK) == TYPE_OBJECT && bits != TYPE_OBJECT;
+    }
+
+    JSObject *toObject() const {
+        do { } while(0);
+        return reinterpret_cast<JSObject *>(bits & ~TYPE_MASK);
+    }
+
+
+
+    static SpecialId empty() {
+        SpecialId sid(TYPE_OBJECT);
+        do { } while(0);
+        return sid;
+    }
+
+    bool isEmpty() const {
+        return bits == TYPE_OBJECT;
+    }
+
+
+
+    static SpecialId voidId() {
+        SpecialId sid(TYPE_VOID);
+        do { } while(0);
+        return sid;
+    }
+
+    bool isVoid() const {
+        return bits == TYPE_VOID;
+    }
+
+
+
+    static SpecialId defaultXMLNamespace() {
+        SpecialId sid(TYPE_DEFAULT_XML_NAMESPACE);
+        do { } while(0);
+        return sid;
+    }
+
+    bool isDefaultXMLNamespace() const {
+        return bits == TYPE_DEFAULT_XML_NAMESPACE;
+    }
+};
+
+static __attribute__((always_inline)) inline jsid
+SPECIALID_TO_JSID(const SpecialId &sid)
+{
+    jsid id;
+    (id) = sid.bits;
+    do { } while (0);
+    do { } while (0);
+    do { } while (0);
+    do { } while (0);
+    return id;
+}
+
+static __attribute__((always_inline)) inline bool
+JSID_IS_SPECIAL(jsid id)
+{
+    return JSID_IS_OBJECT(id) || JSID_IS_EMPTY(id) || JSID_IS_VOID(id) ||
+           JSID_IS_DEFAULT_XML_NAMESPACE(id);
+}
+
+static __attribute__((always_inline)) inline SpecialId
+JSID_TO_SPECIALID(jsid id)
+{
+    do { } while(0);
+    if (JSID_IS_OBJECT(id))
+        return SpecialId(*JSID_TO_OBJECT(id));
+    if (JSID_IS_EMPTY(id))
+        return SpecialId::empty();
+    if (JSID_IS_VOID(id))
+        return SpecialId::voidId();
+    do { } while(0);
+    return SpecialId::defaultXMLNamespace();
+}
+
+typedef JS::Handle<SpecialId> HandleSpecialId;
+
+
+
+typedef JSBool
+(* LookupGenericOp)(JSContext *cx, HandleObject obj, HandleId id, JSObject **objp,
+                    JSProperty **propp);
+typedef JSBool
+(* LookupPropOp)(JSContext *cx, HandleObject obj, HandlePropertyName name, JSObject **objp,
+                 JSProperty **propp);
+typedef JSBool
+(* LookupElementOp)(JSContext *cx, HandleObject obj, uint32_t index, JSObject **objp,
+                    JSProperty **propp);
+typedef JSBool
+(* LookupSpecialOp)(JSContext *cx, HandleObject obj, HandleSpecialId sid, JSObject **objp,
+                    JSProperty **propp);
+typedef JSBool
+(* DefineGenericOp)(JSContext *cx, HandleObject obj, HandleId id, const Value *value,
+                    PropertyOp getter, StrictPropertyOp setter, unsigned attrs);
+typedef JSBool
+(* DefinePropOp)(JSContext *cx, HandleObject obj, HandlePropertyName name, const Value *value,
+                 PropertyOp getter, StrictPropertyOp setter, unsigned attrs);
+typedef JSBool
+(* DefineElementOp)(JSContext *cx, HandleObject obj, uint32_t index, const Value *value,
+                    PropertyOp getter, StrictPropertyOp setter, unsigned attrs);
+typedef JSBool
+(* DefineSpecialOp)(JSContext *cx, HandleObject obj, HandleSpecialId sid, const Value *value,
+                    PropertyOp getter, StrictPropertyOp setter, unsigned attrs);
+typedef JSBool
+(* GenericIdOp)(JSContext *cx, HandleObject obj, HandleObject receiver, HandleId id, Value *vp);
+typedef JSBool
+(* PropertyIdOp)(JSContext *cx, HandleObject obj, HandleObject receiver, HandlePropertyName name, Value *vp);
+typedef JSBool
+(* ElementIdOp)(JSContext *cx, HandleObject obj, HandleObject receiver, uint32_t index, Value *vp);
+typedef JSBool
+(* ElementIfPresentOp)(JSContext *cx, HandleObject obj, HandleObject receiver, uint32_t index, Value *vp, bool* present);
+typedef JSBool
+(* SpecialIdOp)(JSContext *cx, HandleObject obj, HandleObject receiver, HandleSpecialId sid, Value *vp);
+typedef JSBool
+(* StrictGenericIdOp)(JSContext *cx, HandleObject obj, HandleId id, Value *vp, JSBool strict);
+typedef JSBool
+(* StrictPropertyIdOp)(JSContext *cx, HandleObject obj, HandlePropertyName name, Value *vp, JSBool strict);
+typedef JSBool
+(* StrictElementIdOp)(JSContext *cx, HandleObject obj, uint32_t index, Value *vp, JSBool strict);
+typedef JSBool
+(* StrictSpecialIdOp)(JSContext *cx, HandleObject obj, HandleSpecialId sid, Value *vp, JSBool strict);
+typedef JSBool
+(* GenericAttributesOp)(JSContext *cx, HandleObject obj, HandleId id, unsigned *attrsp);
+typedef JSBool
+(* PropertyAttributesOp)(JSContext *cx, HandleObject obj, HandlePropertyName name, unsigned *attrsp);
+typedef JSBool
+(* ElementAttributesOp)(JSContext *cx, HandleObject obj, uint32_t index, unsigned *attrsp);
+typedef JSBool
+(* SpecialAttributesOp)(JSContext *cx, HandleObject obj, HandleSpecialId sid, unsigned *attrsp);
+typedef JSBool
+(* DeletePropertyOp)(JSContext *cx, HandleObject obj, HandlePropertyName name, Value *vp, JSBool strict);
+typedef JSBool
+(* DeleteElementOp)(JSContext *cx, HandleObject obj, uint32_t index, Value *vp, JSBool strict);
+typedef JSBool
+(* DeleteSpecialOp)(JSContext *cx, HandleObject obj, HandleSpecialId sid, Value *vp, JSBool strict);
+typedef JSType
+(* TypeOfOp)(JSContext *cx, HandleObject obj);
+
+typedef JSObject *
+(* ObjectOp)(JSContext *cx, HandleObject obj);
+typedef void
+(* ClearOp)(JSContext *cx, HandleObject obj);
+typedef void
+(* FinalizeOp)(FreeOp *fop, JSObject *obj);
+
+#define JS_CLASS_MEMBERS const char *name; uint32_t flags; JSPropertyOp addProperty; JSPropertyOp delProperty; JSPropertyOp getProperty; JSStrictPropertyOp setProperty; JSEnumerateOp enumerate; JSResolveOp resolve; JSConvertOp convert; FinalizeOp finalize; JSCheckAccessOp checkAccess; JSNative call; JSHasInstanceOp hasInstance; JSNative construct; JSTraceOp trace
+# 240 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsclass.h"
+struct ClassSizeMeasurement
+{
+    const char *name; uint32_t flags; JSPropertyOp addProperty; JSPropertyOp delProperty; JSPropertyOp getProperty; JSStrictPropertyOp setProperty; JSEnumerateOp enumerate; JSResolveOp resolve; JSConvertOp convert; FinalizeOp finalize; JSCheckAccessOp checkAccess; JSNative call; JSHasInstanceOp hasInstance; JSNative construct; JSTraceOp trace;
+};
+
+struct ClassExtension
+{
+    JSEqualityOp equality;
+    JSObjectOp outerObject;
+    JSObjectOp innerObject;
+    JSIteratorOp iteratorObject;
+    void *unused;
+
+
+
+
+
+    bool isWrappedNative;
+};
+
+#define JS_NULL_CLASS_EXT {NULL,NULL,NULL,NULL,NULL,false}
+
+struct ObjectOps
+{
+    LookupGenericOp lookupGeneric;
+    LookupPropOp lookupProperty;
+    LookupElementOp lookupElement;
+    LookupSpecialOp lookupSpecial;
+    DefineGenericOp defineGeneric;
+    DefinePropOp defineProperty;
+    DefineElementOp defineElement;
+    DefineSpecialOp defineSpecial;
+    GenericIdOp getGeneric;
+    PropertyIdOp getProperty;
+    ElementIdOp getElement;
+    ElementIfPresentOp getElementIfPresent;
+    SpecialIdOp getSpecial;
+    StrictGenericIdOp setGeneric;
+    StrictPropertyIdOp setProperty;
+    StrictElementIdOp setElement;
+    StrictSpecialIdOp setSpecial;
+    GenericAttributesOp getGenericAttributes;
+    PropertyAttributesOp getPropertyAttributes;
+    ElementAttributesOp getElementAttributes;
+    SpecialAttributesOp getSpecialAttributes;
+    GenericAttributesOp setGenericAttributes;
+    PropertyAttributesOp setPropertyAttributes;
+    ElementAttributesOp setElementAttributes;
+    SpecialAttributesOp setSpecialAttributes;
+    DeletePropertyOp deleteProperty;
+    DeleteElementOp deleteElement;
+    DeleteSpecialOp deleteSpecial;
+
+    JSNewEnumerateOp enumerate;
+    TypeOfOp typeOf;
+    ObjectOp thisObject;
+    ClearOp clear;
+};
+
+#define JS_NULL_OBJECT_OPS {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL}
+
+
+
+
+struct Class
+{
+    const char *name; uint32_t flags; JSPropertyOp addProperty; JSPropertyOp delProperty; JSPropertyOp getProperty; JSStrictPropertyOp setProperty; JSEnumerateOp enumerate; JSResolveOp resolve; JSConvertOp convert; FinalizeOp finalize; JSCheckAccessOp checkAccess; JSNative call; JSHasInstanceOp hasInstance; JSNative construct; JSTraceOp trace;
+    ClassExtension ext;
+    ObjectOps ops;
+    uint8_t pad[sizeof(JSClass) - sizeof(ClassSizeMeasurement) -
+                            sizeof(ClassExtension) - sizeof(ObjectOps)];
+
+
+    static const uint32_t NON_NATIVE = (1<<((8 + 8)+3));
+
+    bool isNative() const {
+        return !(flags & NON_NATIVE);
+    }
+
+    bool hasPrivate() const {
+        return !!(flags & (1<<0));
+    }
+};
+
+typedef int moz_static_assert29[(__builtin_offsetof (JSClass, name) == __builtin_offsetof (Class, name)) ? 1 : -1];
+typedef int moz_static_assert30[(__builtin_offsetof (JSClass, flags) == __builtin_offsetof (Class, flags)) ? 1 : -1];
+typedef int moz_static_assert31[(__builtin_offsetof (JSClass, addProperty) == __builtin_offsetof (Class, addProperty)) ? 1 : -1];
+typedef int moz_static_assert32[(__builtin_offsetof (JSClass, delProperty) == __builtin_offsetof (Class, delProperty)) ? 1 : -1];
+typedef int moz_static_assert33[(__builtin_offsetof (JSClass, getProperty) == __builtin_offsetof (Class, getProperty)) ? 1 : -1];
+typedef int moz_static_assert34[(__builtin_offsetof (JSClass, setProperty) == __builtin_offsetof (Class, setProperty)) ? 1 : -1];
+typedef int moz_static_assert35[(__builtin_offsetof (JSClass, enumerate) == __builtin_offsetof (Class, enumerate)) ? 1 : -1];
+typedef int moz_static_assert36[(__builtin_offsetof (JSClass, resolve) == __builtin_offsetof (Class, resolve)) ? 1 : -1];
+typedef int moz_static_assert37[(__builtin_offsetof (JSClass, convert) == __builtin_offsetof (Class, convert)) ? 1 : -1];
+typedef int moz_static_assert38[(__builtin_offsetof (JSClass, finalize) == __builtin_offsetof (Class, finalize)) ? 1 : -1];
+typedef int moz_static_assert39[(__builtin_offsetof (JSClass, checkAccess) == __builtin_offsetof (Class, checkAccess)) ? 1 : -1];
+typedef int moz_static_assert40[(__builtin_offsetof (JSClass, call) == __builtin_offsetof (Class, call)) ? 1 : -1];
+typedef int moz_static_assert41[(__builtin_offsetof (JSClass, construct) == __builtin_offsetof (Class, construct)) ? 1 : -1];
+typedef int moz_static_assert42[(__builtin_offsetof (JSClass, hasInstance) == __builtin_offsetof (Class, hasInstance)) ? 1 : -1];
+typedef int moz_static_assert43[(__builtin_offsetof (JSClass, trace) == __builtin_offsetof (Class, trace)) ? 1 : -1];
+typedef int moz_static_assert44[(sizeof(JSClass) == sizeof(Class)) ? 1 : -1];
+
+static __attribute__((always_inline)) inline JSClass *
+Jsvalify(Class *c)
+{
+    return (JSClass *)c;
+}
+static __attribute__((always_inline)) inline const JSClass *
+Jsvalify(const Class *c)
+{
+    return (const JSClass *)c;
+}
+
+static __attribute__((always_inline)) inline Class *
+Valueify(JSClass *c)
+{
+    return (Class *)c;
+}
+static __attribute__((always_inline)) inline const Class *
+Valueify(const JSClass *c)
+{
+    return (const Class *)c;
+}
+
+
+
+
+
+enum ESClassValue {
+    ESClass_Array, ESClass_Number, ESClass_String, ESClass_Boolean,
+    ESClass_RegExp, ESClass_ArrayBuffer
+};
+
+
+
+
+
+
+
+inline bool
+ObjectClassIs(JSObject &obj, ESClassValue classValue, JSContext *cx);
+
+
+inline bool
+IsObjectWithClass(const Value &v, ESClassValue classValue, JSContext *cx);
+
+}
+
+namespace JS {
+
+inline bool
+IsPoisonedSpecialId(js::SpecialId iden)
+{
+    if (iden.isObject())
+        return IsPoisonedPtr(iden.toObject());
+    return false;
+}
+
+template <> struct RootMethods<js::SpecialId>
+{
+    static js::SpecialId initial() { return js::SpecialId(); }
+    static ThingRootKind kind() { return THING_ROOT_ID; }
+    static bool poisoned(js::SpecialId id) { return IsPoisonedSpecialId(id); }
+};
+
+}
+# 22 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h" 1
+
+
+
+
+
+
+
+#define jsfriendapi_h___ 
+
+
+
+
+
+# 1 "./../../dist/include/mozilla/GuardObjects.h" 1
+# 10 "./../../dist/include/mozilla/GuardObjects.h"
+#define mozilla_GuardObjects_h 
+# 137 "./../../dist/include/mozilla/GuardObjects.h"
+#define MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER 
+#define MOZ_GUARD_OBJECT_NOTIFIER_PARAM 
+#define MOZ_GUARD_OBJECT_NOTIFIER_ONLY_PARAM 
+#define MOZ_GUARD_OBJECT_NOTIFIER_PARAM_IN_IMPL 
+#define MOZ_GUARD_OBJECT_NOTIFIER_ONLY_PARAM_TO_PARENT 
+#define MOZ_GUARD_OBJECT_NOTIFIER_PARAM_TO_PARENT 
+#define MOZ_GUARD_OBJECT_NOTIFIER_INIT do { } while (0)
+# 15 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h" 2
+
+extern "C" {
+
+extern __attribute__((visibility("default"))) void
+JS_SetGrayGCRootsTracer(JSRuntime *rt, JSTraceDataOp traceOp, void *data);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_GetAnonymousString(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_FindCompilationScope(JSContext *cx, JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_GetObjectFunction(JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetGlobalForFrame(JSStackFrame *fp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SplicePrototype(JSContext *cx, JSObject *obj, JSObject *proto);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewObjectWithUniqueType(JSContext *cx, JSClass *clasp, JSObject *proto, JSObject *parent);
+
+extern __attribute__((visibility("default"))) uint32_t
+JS_ObjectCountDynamicSlots(JSObject *obj);
+
+extern __attribute__((visibility("default"))) void
+JS_ShrinkGCBuffers(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) size_t
+JS_GetE4XObjectsCreated(JSContext *cx);
+
+extern __attribute__((visibility("default"))) size_t
+JS_SetProtoCalled(JSContext *cx);
+
+extern __attribute__((visibility("default"))) size_t
+JS_GetCustomIteratorCount(JSContext *cx);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_NondeterministicGetWeakMapKeys(JSContext *cx, JSObject *obj, JSObject **ret);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsDeadWrapper(JSObject *obj);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_TraceShapeCycleCollectorChildren(JSTracer *trc, void *shape);
+
+enum {
+    JS_TELEMETRY_GC_REASON,
+    JS_TELEMETRY_GC_IS_COMPARTMENTAL,
+    JS_TELEMETRY_GC_MS,
+    JS_TELEMETRY_GC_MARK_MS,
+    JS_TELEMETRY_GC_SWEEP_MS,
+    JS_TELEMETRY_GC_SLICE_MS,
+    JS_TELEMETRY_GC_MMU_50,
+    JS_TELEMETRY_GC_RESET,
+    JS_TELEMETRY_GC_INCREMENTAL_DISABLED,
+    JS_TELEMETRY_GC_NON_INCREMENTAL
+};
+
+typedef void
+(* JSAccumulateTelemetryDataCallback)(int id, uint32_t sample);
+
+extern __attribute__((visibility("default"))) void
+JS_SetAccumulateTelemetryCallback(JSRuntime *rt, JSAccumulateTelemetryDataCallback callback);
+
+extern __attribute__((visibility("default"))) JSPrincipals *
+JS_GetCompartmentPrincipals(JSCompartment *compartment);
+
+extern __attribute__((visibility("default"))) void
+JS_SetCompartmentPrincipals(JSCompartment *compartment, JSPrincipals *principals);
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_ObjectToInnerObject(JSContext *cx, JSObject *obj);
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_ObjectToOuterObject(JSContext *cx, JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_CloneObject(JSContext *cx, JSObject *obj, JSObject *proto, JSObject *parent);
+
+extern __attribute__((visibility("default"))) JSBool
+js_GetterOnlyPropertyStub(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool strict, jsval *vp);
+
+__attribute__((visibility("default"))) void
+js_ReportOverRecursed(JSContext *maybecx);
+# 139 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) bool
+JS_CopyPropertiesFrom(JSContext *cx, JSObject *target, JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_WrapPropertyDescriptor(JSContext *cx, js::PropertyDescriptor *desc);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_WrapAutoIdVector(JSContext *cx, JS::AutoIdVector &props);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_EnumerateState(JSContext *cx, JSHandleObject obj, JSIterateOp enum_op, js::Value *statep, jsid *idp);
+
+struct JSFunctionSpecWithHelp {
+    const char *name;
+    JSNative call;
+    uint16_t nargs;
+    uint16_t flags;
+    const char *usage;
+    const char *help;
+};
+
+#define JS_FN_HELP(name,call,nargs,flags,usage,help) {name, call, nargs, (flags) | JSPROP_ENUMERATE | JSFUN_STUB_GSOPS, usage, help}
+
+
+extern __attribute__((visibility("default"))) bool
+JS_DefineFunctionsWithHelp(JSContext *cx, JSObject *obj, const JSFunctionSpecWithHelp *fs);
+
+
+
+}
+
+
+
+namespace js {
+
+struct RuntimeFriendFields {
+
+
+
+
+    volatile int32_t interrupt;
+
+
+    uintptr_t nativeStackLimit;
+
+    RuntimeFriendFields()
+      : interrupt(0),
+        nativeStackLimit(0) { }
+
+    static const RuntimeFriendFields *get(const JSRuntime *rt) {
+        return reinterpret_cast<const RuntimeFriendFields *>(rt);
+    }
+};
+
+inline JSRuntime *
+GetRuntime(const JSContext *cx)
+{
+    return ContextFriendFields::get(cx)->runtime;
+}
+
+typedef bool
+(* PreserveWrapperCallback)(JSContext *cx, JSObject *obj);
+# 212 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+class __attribute__((visibility("default"))) AutoSwitchCompartment {
+  private:
+    JSContext *cx;
+    JSCompartment *oldCompartment;
+  public:
+    AutoSwitchCompartment(JSContext *cx, JSCompartment *newCompartment
+                          );
+    AutoSwitchCompartment(JSContext *cx, JSObject *target );
+    ~AutoSwitchCompartment();
+   
+};
+
+
+__attribute__((visibility("default"))) JSBool obj_defineGetter(JSContext *cx, unsigned argc, js::Value *vp);
+__attribute__((visibility("default"))) JSBool obj_defineSetter(JSContext *cx, unsigned argc, js::Value *vp);
+
+
+extern __attribute__((visibility("default"))) bool
+IsSystemCompartment(const JSCompartment *compartment);
+
+extern __attribute__((visibility("default"))) bool
+IsAtomsCompartment(const JSCompartment *c);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) bool
+CheckUndeclaredVarAssignment(JSContext *cx, JSString *propname);
+
+struct WeakMapTracer;
+
+
+
+
+
+
+
+typedef void
+(* WeakMapTraceCallback)(WeakMapTracer *trc, JSObject *m,
+                         void *k, JSGCTraceKind kkind,
+                         void *v, JSGCTraceKind vkind);
+
+struct WeakMapTracer {
+    JSRuntime *runtime;
+    WeakMapTraceCallback callback;
+
+    WeakMapTracer(JSRuntime *rt, WeakMapTraceCallback cb)
+        : runtime(rt), callback(cb) {}
+};
+
+extern __attribute__((visibility("default"))) void
+TraceWeakMaps(WeakMapTracer *trc);
+
+extern __attribute__((visibility("default"))) bool
+GCThingIsMarkedGray(void *thing);
+
+
+
+
+
+
+
+namespace shadow {
+
+struct TypeObject {
+    JSObject *proto;
+};
+
+struct BaseShape {
+    js::Class *clasp;
+    JSObject *parent;
+};
+
+struct Shape {
+    BaseShape *base;
+    jsid _1;
+    uint32_t slotInfo;
+
+    static const uint32_t FIXED_SLOTS_SHIFT = 27;
+};
+
+struct Object {
+    Shape *shape;
+    TypeObject *type;
+    js::Value *slots;
+    js::Value *_1;
+
+    size_t numFixedSlots() const { return shape->slotInfo >> Shape::FIXED_SLOTS_SHIFT; }
+    Value *fixedSlots() const {
+        return (Value *)(uintptr_t(this) + sizeof(shadow::Object));
+    }
+
+    js::Value &slotRef(size_t slot) const {
+        size_t nfixed = numFixedSlots();
+        if (slot < nfixed)
+            return fixedSlots()[slot];
+        return slots[slot - nfixed];
+    }
+};
+
+struct Atom {
+    size_t _;
+    const jschar *chars;
+};
+
+}
+
+extern __attribute__((visibility("default"))) js::Class AnyNameClass;
+extern __attribute__((visibility("default"))) js::Class AttributeNameClass;
+extern __attribute__((visibility("default"))) js::Class CallClass;
+extern __attribute__((visibility("default"))) js::Class DeclEnvClass;
+extern __attribute__((visibility("default"))) js::Class FunctionClass;
+extern __attribute__((visibility("default"))) js::Class FunctionProxyClass;
+extern __attribute__((visibility("default"))) js::Class NamespaceClass;
+extern __attribute__((visibility("default"))) js::Class OuterWindowProxyClass;
+extern __attribute__((visibility("default"))) js::Class ObjectProxyClass;
+extern __attribute__((visibility("default"))) js::Class QNameClass;
+extern __attribute__((visibility("default"))) js::Class XMLClass;
+extern __attribute__((visibility("default"))) js::Class ObjectClass;
+
+inline js::Class *
+GetObjectClass(const JSObject *obj)
+{
+    return reinterpret_cast<const shadow::Object*>(obj)->shape->base->clasp;
+}
+
+inline JSClass *
+GetObjectJSClass(const JSObject *obj)
+{
+    return js::Jsvalify(GetObjectClass(obj));
+}
+
+__attribute__((visibility("default"))) bool
+IsScopeObject(JSObject *obj);
+
+inline JSObject *
+GetObjectParent(JSObject *obj)
+{
+    do { } while(0);
+    return reinterpret_cast<shadow::Object*>(obj)->shape->base->parent;
+}
+
+__attribute__((visibility("default"))) JSObject *
+GetObjectParentMaybeScope(JSObject *obj);
+
+__attribute__((visibility("default"))) JSObject *
+GetGlobalForObjectCrossCompartment(JSObject *obj);
+
+__attribute__((visibility("default"))) void
+NotifyAnimationActivity(JSObject *obj);
+
+__attribute__((visibility("default"))) bool
+IsOriginalScriptFunction(JSFunction *fun);
+
+__attribute__((visibility("default"))) JSFunction *
+DefineFunctionWithReserved(JSContext *cx, JSObject *obj, const char *name, JSNative call,
+                           unsigned nargs, unsigned attrs);
+
+__attribute__((visibility("default"))) JSFunction *
+NewFunctionWithReserved(JSContext *cx, JSNative call, unsigned nargs, unsigned flags,
+                        JSObject *parent, const char *name);
+
+__attribute__((visibility("default"))) JSFunction *
+NewFunctionByIdWithReserved(JSContext *cx, JSNative native, unsigned nargs, unsigned flags,
+                            JSObject *parent, jsid id);
+
+__attribute__((visibility("default"))) JSObject *
+InitClassWithReserved(JSContext *cx, JSObject *obj, JSObject *parent_proto,
+                      JSClass *clasp, JSNative constructor, unsigned nargs,
+                      JSPropertySpec *ps, JSFunctionSpec *fs,
+                      JSPropertySpec *static_ps, JSFunctionSpec *static_fs);
+
+__attribute__((visibility("default"))) const Value &
+GetFunctionNativeReserved(JSObject *fun, size_t which);
+
+__attribute__((visibility("default"))) void
+SetFunctionNativeReserved(JSObject *fun, size_t which, const Value &val);
+
+inline JSObject *
+GetObjectProto(JSObject *obj)
+{
+    return reinterpret_cast<const shadow::Object*>(obj)->type->proto;
+}
+
+inline void *
+GetObjectPrivate(JSObject *obj)
+{
+    const shadow::Object *nobj = reinterpret_cast<const shadow::Object*>(obj);
+    void **addr = reinterpret_cast<void**>(&nobj->fixedSlots()[nobj->numFixedSlots()]);
+    return *addr;
+}
+
+
+
+
+
+inline const Value &
+GetReservedSlot(const JSObject *obj, size_t slot)
+{
+    do { } while(0);
+    return reinterpret_cast<const shadow::Object *>(obj)->slotRef(slot);
+}
+
+__attribute__((visibility("default"))) void
+SetReservedSlotWithBarrier(JSObject *obj, size_t slot, const Value &value);
+
+inline void
+SetReservedSlot(JSObject *obj, size_t slot, const Value &value)
+{
+    do { } while(0);
+    shadow::Object *sobj = reinterpret_cast<shadow::Object *>(obj);
+    if (sobj->slotRef(slot).isMarkable())
+        SetReservedSlotWithBarrier(obj, slot, value);
+    else
+        sobj->slotRef(slot) = value;
+}
+
+__attribute__((visibility("default"))) uint32_t
+GetObjectSlotSpan(JSObject *obj);
+
+inline const Value &
+GetObjectSlot(JSObject *obj, size_t slot)
+{
+    do { } while(0);
+    return reinterpret_cast<const shadow::Object *>(obj)->slotRef(slot);
+}
+
+inline Shape *
+GetObjectShape(JSObject *obj)
+{
+    shadow::Shape *shape = reinterpret_cast<const shadow::Object*>(obj)->shape;
+    return reinterpret_cast<Shape *>(shape);
+}
+
+inline const jschar *
+GetAtomChars(JSAtom *atom)
+{
+    return reinterpret_cast<shadow::Atom *>(atom)->chars;
+}
+
+inline JSLinearString *
+AtomToLinearString(JSAtom *atom)
+{
+    return reinterpret_cast<JSLinearString *>(atom);
+}
+
+static inline js::PropertyOp
+CastAsJSPropertyOp(JSObject *object)
+{
+    return (__extension__ (js::PropertyOp) (size_t) (object));
+}
+
+static inline js::StrictPropertyOp
+CastAsJSStrictPropertyOp(JSObject *object)
+{
+    return (__extension__ (js::StrictPropertyOp) (size_t) (object));
+}
+
+__attribute__((visibility("default"))) bool
+GetPropertyNames(JSContext *cx, JSObject *obj, unsigned flags, js::AutoIdVector *props);
+
+__attribute__((visibility("default"))) bool
+GetGeneric(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp);
+
+__attribute__((visibility("default"))) bool
+StringIsArrayIndex(JSLinearString *str, uint32_t *indexp);
+
+__attribute__((visibility("default"))) void
+SetPreserveWrapperCallback(JSRuntime *rt, PreserveWrapperCallback callback);
+
+__attribute__((visibility("default"))) bool
+IsObjectInContextCompartment(const JSObject *obj, const JSContext *cx);
+
+
+
+
+
+
+#define JSITER_ENUMERATE 0x1
+#define JSITER_FOREACH 0x2
+#define JSITER_KEYVALUE 0x4
+#define JSITER_OWNONLY 0x8
+#define JSITER_HIDDEN 0x10
+#define JSITER_FOR_OF 0x20
+
+inline uintptr_t
+GetNativeStackLimit(const JSRuntime *rt)
+{
+    return RuntimeFriendFields::get(rt)->nativeStackLimit;
+}
+
+#define JS_CHECK_RECURSION(cx,onerror) JS_BEGIN_MACRO int stackDummy_; if (!JS_CHECK_STACK_SIZE(js::GetNativeStackLimit(js::GetRuntime(cx)), &stackDummy_)) { js_ReportOverRecursed(cx); onerror; } JS_END_MACRO
+# 515 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+__attribute__((visibility("default"))) void
+StartPCCountProfiling(JSContext *cx);
+
+__attribute__((visibility("default"))) void
+StopPCCountProfiling(JSContext *cx);
+
+__attribute__((visibility("default"))) void
+PurgePCCounts(JSContext *cx);
+
+__attribute__((visibility("default"))) size_t
+GetPCCountScriptCount(JSContext *cx);
+
+__attribute__((visibility("default"))) JSString *
+GetPCCountScriptSummary(JSContext *cx, size_t script);
+
+__attribute__((visibility("default"))) JSString *
+GetPCCountScriptContents(JSContext *cx, size_t script);
+
+
+__attribute__((visibility("default"))) void *
+GetOwnerThread(const JSContext *cx);
+
+__attribute__((visibility("default"))) unsigned
+GetContextOutstandingRequests(const JSContext *cx);
+
+
+__attribute__((visibility("default"))) JSCompartment *
+GetContextCompartment(const JSContext *cx);
+
+__attribute__((visibility("default"))) bool
+HasUnrootedGlobal(const JSContext *cx);
+
+typedef void
+(* ActivityCallback)(void *arg, JSBool active);
+
+
+
+
+
+
+__attribute__((visibility("default"))) void
+SetActivityCallback(JSRuntime *rt, ActivityCallback cb, void *arg);
+
+extern __attribute__((visibility("default"))) const JSStructuredCloneCallbacks *
+GetContextStructuredCloneCallbacks(JSContext *cx);
+
+extern __attribute__((visibility("default"))) JSVersion
+VersionSetMoarXML(JSVersion version, bool enable);
+
+extern __attribute__((visibility("default"))) bool
+CanCallContextDebugHandler(JSContext *cx);
+
+extern __attribute__((visibility("default"))) JSTrapStatus
+CallContextDebugHandler(JSContext *cx, JSScript *script, jsbytecode *bc, Value *rval);
+
+extern __attribute__((visibility("default"))) bool
+IsContextRunningJS(JSContext *cx);
+
+class SystemAllocPolicy;
+typedef Vector<JSCompartment*, 0, SystemAllocPolicy> CompartmentVector;
+extern __attribute__((visibility("default"))) const CompartmentVector&
+GetRuntimeCompartments(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) size_t
+SizeOfJSContext();
+
+#define GCREASONS(D) D(API) D(MAYBEGC) D(LAST_CONTEXT) D(DESTROY_CONTEXT) D(LAST_DITCH) D(TOO_MUCH_MALLOC) D(ALLOC_TRIGGER) D(DEBUG_GC) D(DEBUG_MODE_GC) D(UNUSED3) D(DOM_WINDOW_UTILS) D(COMPONENT_UTILS) D(MEM_PRESSURE) D(CC_WAITING) D(CC_FORCED) D(LOAD_END) D(POST_COMPARTMENT) D(PAGE_HIDE) D(NSJSCONTEXT_DESTROY) D(SET_NEW_DOCUMENT) D(SET_DOC_SHELL) D(DOM_UTILS) D(DOM_IPC) D(DOM_WORKER) D(INTER_SLICE_GC) D(REFRESH_FRAME) D(FULL_GC_TIMER)
+# 613 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+namespace gcreason {
+
+
+enum Reason {
+#define MAKE_REASON(name) name,
+    API, MAYBEGC, LAST_CONTEXT, DESTROY_CONTEXT, LAST_DITCH, TOO_MUCH_MALLOC, ALLOC_TRIGGER, DEBUG_GC, DEBUG_MODE_GC, UNUSED3, DOM_WINDOW_UTILS, COMPONENT_UTILS, MEM_PRESSURE, CC_WAITING, CC_FORCED, LOAD_END, POST_COMPARTMENT, PAGE_HIDE, NSJSCONTEXT_DESTROY, SET_NEW_DOCUMENT, SET_DOC_SHELL, DOM_UTILS, DOM_IPC, DOM_WORKER, INTER_SLICE_GC, REFRESH_FRAME, FULL_GC_TIMER,
+#undef MAKE_REASON
+    NO_REASON,
+    NUM_REASONS
+};
+
+}
+
+extern __attribute__((visibility("default"))) void
+PrepareCompartmentForGC(JSCompartment *comp);
+
+extern __attribute__((visibility("default"))) void
+PrepareForFullGC(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) bool
+IsGCScheduled(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) void
+SkipCompartmentForGC(JSCompartment *comp);
+# 645 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) void
+GCForReason(JSRuntime *rt, gcreason::Reason reason);
+
+extern __attribute__((visibility("default"))) void
+ShrinkingGC(JSRuntime *rt, gcreason::Reason reason);
+
+extern __attribute__((visibility("default"))) void
+IncrementalGC(JSRuntime *rt, gcreason::Reason reason);
+
+extern __attribute__((visibility("default"))) void
+SetGCSliceTimeBudget(JSContext *cx, int64_t millis);
+
+enum GCProgress {
+# 668 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+    GC_CYCLE_BEGIN,
+    GC_SLICE_BEGIN,
+    GC_SLICE_END,
+    GC_CYCLE_END
+};
+
+struct __attribute__((visibility("default"))) GCDescription {
+    bool isCompartment;
+
+    GCDescription(bool isCompartment)
+      : isCompartment(isCompartment) {}
+
+    jschar *formatMessage(JSRuntime *rt) const;
+    jschar *formatJSON(JSRuntime *rt, uint64_t timestamp) const;
+};
+
+typedef void
+(* GCSliceCallback)(JSRuntime *rt, GCProgress progress, const GCDescription &desc);
+
+extern __attribute__((visibility("default"))) GCSliceCallback
+SetGCSliceCallback(JSRuntime *rt, GCSliceCallback callback);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+NotifyDidPaint(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) bool
+IsIncrementalGCEnabled(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) void
+DisableIncrementalGC(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) bool
+IsIncrementalBarrierNeeded(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) bool
+IsIncrementalBarrierNeeded(JSContext *cx);
+
+extern __attribute__((visibility("default"))) bool
+IsIncrementalBarrierNeededOnObject(JSObject *obj);
+
+extern __attribute__((visibility("default"))) bool
+IsIncrementalBarrierNeededOnScript(JSScript *obj);
+
+extern __attribute__((visibility("default"))) void
+IncrementalReferenceBarrier(void *ptr);
+
+extern __attribute__((visibility("default"))) void
+IncrementalValueBarrier(const Value &v);
+
+extern __attribute__((visibility("default"))) void
+PokeGC(JSRuntime *rt);
+
+class ObjectPtr
+{
+    JSObject *value;
+
+  public:
+    ObjectPtr() : value(__null) {}
+
+    ObjectPtr(JSObject *obj) : value(obj) {}
+
+
+    ~ObjectPtr() { do { } while(0); }
+
+    void finalize(JSRuntime *rt) {
+        if (IsIncrementalBarrierNeeded(rt))
+            IncrementalReferenceBarrier(value);
+        value = __null;
+    }
+
+    void init(JSObject *obj) { value = obj; }
+
+    JSObject *get() const { return value; }
+
+    void writeBarrierPre(JSRuntime *rt) {
+        IncrementalReferenceBarrier(value);
+    }
+
+    ObjectPtr &operator=(JSObject *obj) {
+        IncrementalReferenceBarrier(value);
+        value = obj;
+        return *this;
+    }
+
+    JSObject &operator*() const { return *value; }
+    JSObject *operator->() const { return value; }
+    operator JSObject *() const { return value; }
+};
+
+extern __attribute__((visibility("default"))) JSObject *
+GetTestingFunctions(JSContext *cx);
+
+
+
+
+
+
+inline JSFreeOp *
+CastToJSFreeOp(FreeOp *fop)
+{
+    return reinterpret_cast<JSFreeOp *>(fop);
+}
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) const jschar*
+GetErrorTypeNameFromNumber(JSContext* cx, const unsigned errorNumber);
+
+
+typedef enum NukedGlobalHandling {
+    NukeForGlobalObject,
+    DontNukeForGlobalObject
+} NukedGlobalHandling;
+
+extern __attribute__((visibility("default"))) JSBool
+NukeChromeCrossCompartmentWrappersForGlobal(JSContext *cx, JSObject *obj,
+                                            NukedGlobalHandling nukeGlobal);
+
+}
+# 804 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) JSBool
+js_DateIsValid(JSContext *cx, JSObject* obj);
+
+extern __attribute__((visibility("default"))) double
+js_DateGetMsecSinceEpoch(JSContext *cx, JSObject *obj);
+
+
+
+
+
+
+
+typedef enum JSErrNum {
+#define MSG_DEF(name,number,count,exception,format) name = number,
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/js.msg" 1
+# 53 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/js.msg"
+JSMSG_NOT_AN_ERROR = 0,
+JSMSG_NOT_DEFINED = 1,
+JSMSG_INACTIVE = 2,
+JSMSG_MORE_ARGS_NEEDED = 3,
+JSMSG_BAD_CHAR = 4,
+JSMSG_BAD_TYPE = 5,
+JSMSG_ALLOC_OVERFLOW = 6,
+JSMSG_MISSING_HEXDIGITS = 7,
+JSMSG_INCOMPATIBLE_PROTO = 8,
+JSMSG_NO_CONSTRUCTOR = 9,
+JSMSG_CANT_ALIAS = 10,
+JSMSG_NOT_SCRIPTED_FUNCTION = 11,
+JSMSG_BAD_SORT_ARG = 12,
+JSMSG_BAD_ATOMIC_NUMBER = 13,
+JSMSG_TOO_MANY_LITERALS = 14,
+JSMSG_CANT_WATCH = 15,
+JSMSG_STACK_UNDERFLOW = 16,
+JSMSG_NEED_DIET = 17,
+JSMSG_TOO_MANY_LOCAL_ROOTS = 18,
+JSMSG_READ_ONLY = 19,
+JSMSG_BAD_FORMAL = 20,
+JSMSG_CANT_DELETE = 21,
+JSMSG_NOT_FUNCTION = 22,
+JSMSG_NOT_CONSTRUCTOR = 23,
+JSMSG_INVALID_DATE = 24,
+JSMSG_TOO_DEEP = 25,
+JSMSG_OVER_RECURSED = 26,
+JSMSG_IN_NOT_OBJECT = 27,
+JSMSG_BAD_NEW_RESULT = 28,
+JSMSG_BAD_SHARP_DEF = 29,
+JSMSG_BAD_SHARP_USE = 30,
+JSMSG_BAD_INSTANCEOF_RHS = 31,
+JSMSG_BAD_BYTECODE = 32,
+JSMSG_BAD_RADIX = 33,
+JSMSG_PAREN_BEFORE_LET = 34,
+JSMSG_CANT_CONVERT = 35,
+JSMSG_CYCLIC_VALUE = 36,
+JSMSG_COMPILE_EXECED_SCRIPT = 37,
+JSMSG_CANT_CONVERT_TO = 38,
+JSMSG_NO_PROPERTIES = 39,
+JSMSG_CANT_FIND_CLASS = 40,
+JSMSG_DEAD_OBJECT = 41,
+JSMSG_BYTECODE_TOO_BIG = 42,
+JSMSG_UNKNOWN_FORMAT = 43,
+JSMSG_TOO_MANY_CON_ARGS = 44,
+JSMSG_TOO_MANY_FUN_ARGS = 45,
+JSMSG_BAD_QUANTIFIER = 46,
+JSMSG_MIN_TOO_BIG = 47,
+JSMSG_MAX_TOO_BIG = 48,
+JSMSG_OUT_OF_ORDER = 49,
+JSMSG_BAD_DESTRUCT_DECL = 50,
+JSMSG_BAD_DESTRUCT_ASS = 51,
+JSMSG_PAREN_AFTER_LET = 52,
+JSMSG_CURLY_AFTER_LET = 53,
+JSMSG_MISSING_PAREN = 54,
+JSMSG_UNTERM_CLASS = 55,
+JSMSG_TRAILING_SLASH = 56,
+JSMSG_BAD_CLASS_RANGE = 57,
+JSMSG_BAD_REGEXP_FLAG = 58,
+JSMSG_NO_INPUT = 59,
+JSMSG_CANT_OPEN = 60,
+JSMSG_TOO_MANY_FUN_APPLY_ARGS = 61,
+JSMSG_UNMATCHED_RIGHT_PAREN = 62,
+JSMSG_TOO_BIG_TO_ENCODE = 63,
+JSMSG_ARG_INDEX_OUT_OF_RANGE = 64,
+JSMSG_UNUSED65 = 65,
+JSMSG_UNUSED66 = 66,
+JSMSG_UNUSED67 = 67,
+JSMSG_BAD_SCRIPT_MAGIC = 68,
+JSMSG_PAREN_BEFORE_FORMAL = 69,
+JSMSG_MISSING_FORMAL = 70,
+JSMSG_PAREN_AFTER_FORMAL = 71,
+JSMSG_CURLY_BEFORE_BODY = 72,
+JSMSG_CURLY_AFTER_BODY = 73,
+JSMSG_PAREN_BEFORE_COND = 74,
+JSMSG_PAREN_AFTER_COND = 75,
+JSMSG_DESTRUCT_DUP_ARG = 76,
+JSMSG_NAME_AFTER_DOT = 77,
+JSMSG_BRACKET_IN_INDEX = 78,
+JSMSG_XML_WHOLE_PROGRAM = 79,
+JSMSG_PAREN_BEFORE_SWITCH = 80,
+JSMSG_PAREN_AFTER_SWITCH = 81,
+JSMSG_CURLY_BEFORE_SWITCH = 82,
+JSMSG_COLON_AFTER_CASE = 83,
+JSMSG_WHILE_AFTER_DO = 84,
+JSMSG_PAREN_AFTER_FOR = 85,
+JSMSG_SEMI_AFTER_FOR_INIT = 86,
+JSMSG_SEMI_AFTER_FOR_COND = 87,
+JSMSG_PAREN_AFTER_FOR_CTRL = 88,
+JSMSG_CURLY_BEFORE_TRY = 89,
+JSMSG_CURLY_AFTER_TRY = 90,
+JSMSG_PAREN_BEFORE_CATCH = 91,
+JSMSG_CATCH_IDENTIFIER = 92,
+JSMSG_PAREN_AFTER_CATCH = 93,
+JSMSG_CURLY_BEFORE_CATCH = 94,
+JSMSG_CURLY_AFTER_CATCH = 95,
+JSMSG_CURLY_BEFORE_FINALLY = 96,
+JSMSG_CURLY_AFTER_FINALLY = 97,
+JSMSG_CATCH_OR_FINALLY = 98,
+JSMSG_PAREN_BEFORE_WITH = 99,
+JSMSG_PAREN_AFTER_WITH = 100,
+JSMSG_CURLY_IN_COMPOUND = 101,
+JSMSG_NO_VARIABLE_NAME = 102,
+JSMSG_COLON_IN_COND = 103,
+JSMSG_PAREN_AFTER_ARGS = 104,
+JSMSG_BRACKET_AFTER_LIST = 105,
+JSMSG_COLON_AFTER_ID = 106,
+JSMSG_CURLY_AFTER_LIST = 107,
+JSMSG_PAREN_IN_PAREN = 108,
+JSMSG_SEMI_BEFORE_STMNT = 109,
+JSMSG_NO_RETURN_VALUE = 110,
+JSMSG_DUPLICATE_FORMAL = 111,
+JSMSG_EQUAL_AS_ASSIGN = 112,
+JSMSG_OPTIMIZED_CLOSURE_LEAK = 113,
+JSMSG_TOO_MANY_DEFAULTS = 114,
+JSMSG_TOO_MANY_CASES = 115,
+JSMSG_BAD_SWITCH = 116,
+JSMSG_BAD_FOR_LEFTSIDE = 117,
+JSMSG_CATCH_AFTER_GENERAL = 118,
+JSMSG_CATCH_WITHOUT_TRY = 119,
+JSMSG_FINALLY_WITHOUT_TRY = 120,
+JSMSG_LABEL_NOT_FOUND = 121,
+JSMSG_TOUGH_BREAK = 122,
+JSMSG_BAD_CONTINUE = 123,
+JSMSG_BAD_RETURN_OR_YIELD = 124,
+JSMSG_BAD_LABEL = 125,
+JSMSG_DUPLICATE_LABEL = 126,
+JSMSG_VAR_HIDES_ARG = 127,
+JSMSG_BAD_VAR_INIT = 128,
+JSMSG_BAD_LEFTSIDE_OF_ASS = 129,
+JSMSG_BAD_OPERAND = 130,
+JSMSG_BAD_PROP_ID = 131,
+JSMSG_RESERVED_ID = 132,
+JSMSG_SYNTAX_ERROR = 133,
+JSMSG_BAD_SHARP_VAR_DEF = 134,
+JSMSG_BAD_PROTOTYPE = 135,
+JSMSG_MISSING_EXPONENT = 136,
+JSMSG_OUT_OF_MEMORY = 137,
+JSMSG_UNTERMINATED_STRING = 138,
+JSMSG_TOO_MANY_PARENS = 139,
+JSMSG_UNTERMINATED_COMMENT = 140,
+JSMSG_UNTERMINATED_REGEXP = 141,
+JSMSG_BAD_CLONE_FUNOBJ_SCOPE = 142,
+JSMSG_SHARPVAR_TOO_BIG = 143,
+JSMSG_ILLEGAL_CHARACTER = 144,
+JSMSG_BAD_OCTAL = 145,
+JSMSG_BAD_INDIRECT_CALL = 146,
+JSMSG_UNCAUGHT_EXCEPTION = 147,
+JSMSG_INVALID_BACKREF = 148,
+JSMSG_BAD_BACKREF = 149,
+JSMSG_PRECISION_RANGE = 150,
+JSMSG_BAD_GETTER_OR_SETTER = 151,
+JSMSG_BAD_ARRAY_LENGTH = 152,
+JSMSG_CANT_DESCRIBE_PROPS = 153,
+JSMSG_BAD_APPLY_ARGS = 154,
+JSMSG_REDECLARED_VAR = 155,
+JSMSG_UNDECLARED_VAR = 156,
+JSMSG_ANON_NO_RETURN_VALUE = 157,
+JSMSG_DEPRECATED_USAGE = 158,
+JSMSG_BAD_URI = 159,
+JSMSG_GETTER_ONLY = 160,
+JSMSG_IDSTART_AFTER_NUMBER = 161,
+JSMSG_UNDEFINED_PROP = 162,
+JSMSG_USELESS_EXPR = 163,
+JSMSG_REDECLARED_PARAM = 164,
+JSMSG_NEWREGEXP_FLAGGED = 165,
+JSMSG_RESERVED_SLOT_RANGE = 166,
+JSMSG_CANT_DECODE_PRINCIPALS = 167,
+JSMSG_CANT_SEAL_OBJECT = 168,
+JSMSG_TOO_MANY_CATCH_VARS = 169,
+JSMSG_BAD_XML_MARKUP = 170,
+JSMSG_BAD_XML_CHARACTER = 171,
+JSMSG_BAD_DEFAULT_XML_NAMESPACE = 172,
+JSMSG_BAD_XML_NAME_SYNTAX = 173,
+JSMSG_BRACKET_AFTER_ATTR_EXPR = 174,
+JSMSG_NESTING_GENERATOR = 175,
+JSMSG_CURLY_IN_XML_EXPR = 176,
+JSMSG_BAD_XML_NAMESPACE = 177,
+JSMSG_BAD_XML_ATTR_NAME = 178,
+JSMSG_BAD_XML_NAME = 179,
+JSMSG_BAD_XML_CONVERSION = 180,
+JSMSG_BAD_XMLLIST_CONVERSION = 181,
+JSMSG_BAD_GENERATOR_SEND = 182,
+JSMSG_NO_ASSIGN_IN_XML_ATTR = 183,
+JSMSG_BAD_XML_ATTR_VALUE = 184,
+JSMSG_XML_TAG_NAME_MISMATCH = 185,
+JSMSG_BAD_XML_TAG_SYNTAX = 186,
+JSMSG_BAD_XML_LIST_SYNTAX = 187,
+JSMSG_INCOMPATIBLE_METHOD = 188,
+JSMSG_CANT_SET_XML_ATTRS = 189,
+JSMSG_END_OF_XML_SOURCE = 190,
+JSMSG_END_OF_XML_ENTITY = 191,
+JSMSG_BAD_XML_QNAME = 192,
+JSMSG_BAD_FOR_EACH_LOOP = 193,
+JSMSG_BAD_XMLLIST_PUT = 194,
+JSMSG_UNKNOWN_XML_ENTITY = 195,
+JSMSG_BAD_XML_NCR = 196,
+JSMSG_UNDEFINED_XML_NAME = 197,
+JSMSG_DUPLICATE_XML_ATTR = 198,
+JSMSG_TOO_MANY_LOCALS = 199,
+JSMSG_ARRAY_INIT_TOO_BIG = 200,
+JSMSG_REGEXP_TOO_COMPLEX = 201,
+JSMSG_BUFFER_TOO_SMALL = 202,
+JSMSG_BAD_SURROGATE_CHAR = 203,
+JSMSG_UTF8_CHAR_TOO_LARGE = 204,
+JSMSG_MALFORMED_UTF8_CHAR = 205,
+JSMSG_USER_DEFINED_ERROR = 206,
+JSMSG_WRONG_CONSTRUCTOR = 207,
+JSMSG_BAD_GENERATOR_RETURN = 208,
+JSMSG_BAD_ANON_GENERATOR_RETURN = 209,
+JSMSG_NAME_AFTER_FOR_PAREN = 210,
+JSMSG_IN_AFTER_FOR_NAME = 211,
+JSMSG_BAD_TRAP_RETURN_VALUE = 212,
+JSMSG_KEYWORD_NOT_NS = 213,
+JSMSG_BAD_GENERATOR_YIELD = 214,
+JSMSG_BAD_GENERATOR_SYNTAX = 215,
+JSMSG_ARRAY_COMP_LEFTSIDE = 216,
+JSMSG_NON_XML_FILTER = 217,
+JSMSG_EMPTY_ARRAY_REDUCE = 218,
+JSMSG_NON_LIST_XML_METHOD = 219,
+JSMSG_BAD_DELETE_OPERAND = 220,
+JSMSG_BAD_INCOP_OPERAND = 221,
+JSMSG_UNEXPECTED_TYPE = 222,
+JSMSG_LET_DECL_NOT_IN_BLOCK = 223,
+JSMSG_BAD_OBJECT_INIT = 224,
+JSMSG_CANT_SET_ARRAY_ATTRS = 225,
+JSMSG_EVAL_ARITY = 226,
+JSMSG_MISSING_FUN_ARG = 227,
+JSMSG_JSON_BAD_PARSE = 228,
+JSMSG_JSON_BAD_STRINGIFY = 229,
+JSMSG_NOT_CALLABLE_OR_UNDEFINED = 230,
+JSMSG_NOT_NONNULL_OBJECT = 231,
+JSMSG_DEPRECATED_OCTAL = 232,
+JSMSG_STRICT_CODE_WITH = 233,
+JSMSG_DUPLICATE_PROPERTY = 234,
+JSMSG_DEPRECATED_DELETE_OPERAND = 235,
+JSMSG_DEPRECATED_ASSIGN = 236,
+JSMSG_BAD_BINDING = 237,
+JSMSG_INVALID_DESCRIPTOR = 238,
+JSMSG_OBJECT_NOT_EXTENSIBLE = 239,
+JSMSG_CANT_REDEFINE_PROP = 240,
+JSMSG_CANT_APPEND_TO_ARRAY = 241,
+JSMSG_CANT_DEFINE_ARRAY_LENGTH = 242,
+JSMSG_CANT_DEFINE_ARRAY_INDEX = 243,
+JSMSG_TYPED_ARRAY_BAD_INDEX = 244,
+JSMSG_TYPED_ARRAY_NEGATIVE_ARG = 245,
+JSMSG_TYPED_ARRAY_BAD_ARGS = 246,
+JSMSG_CSP_BLOCKED_FUNCTION = 247,
+JSMSG_BAD_GET_SET_FIELD = 248,
+JSMSG_BAD_PROXY_FIX = 249,
+JSMSG_INVALID_EVAL_SCOPE_ARG = 250,
+JSMSG_ACCESSOR_WRONG_ARGS = 251,
+JSMSG_THROW_TYPE_ERROR = 252,
+JSMSG_BAD_TOISOSTRING_PROP = 253,
+JSMSG_BAD_PARSE_NODE = 254,
+JSMSG_NOT_EXPECTED_TYPE = 255,
+JSMSG_CALLER_IS_STRICT = 256,
+JSMSG_NEED_DEBUG_MODE = 257,
+JSMSG_STRICT_CODE_LET_EXPR_STMT = 258,
+JSMSG_CANT_CHANGE_EXTENSIBILITY = 259,
+JSMSG_SC_BAD_SERIALIZED_DATA = 260,
+JSMSG_SC_UNSUPPORTED_TYPE = 261,
+JSMSG_SC_RECURSION = 262,
+JSMSG_CANT_WRAP_XML_OBJECT = 263,
+JSMSG_BAD_CLONE_VERSION = 264,
+JSMSG_CANT_CLONE_OBJECT = 265,
+JSMSG_NON_NATIVE_SCOPE = 266,
+JSMSG_STRICT_FUNCTION_STATEMENT = 267,
+JSMSG_INVALID_FOR_IN_INIT = 268,
+JSMSG_CLEARED_SCOPE = 269,
+JSMSG_MALFORMED_ESCAPE = 270,
+JSMSG_BAD_GENEXP_BODY = 271,
+JSMSG_XML_PROTO_FORBIDDEN = 272,
+JSMSG_UNNAMED_FUNCTION_STMT = 273,
+JSMSG_CCW_REQUIRED = 274,
+JSMSG_DEBUG_BAD_RESUMPTION = 275,
+JSMSG_ASSIGN_FUNCTION_OR_NULL = 276,
+JSMSG_DEBUG_NOT_LIVE = 277,
+JSMSG_DEBUG_OBJECT_WRONG_OWNER = 278,
+JSMSG_DEBUG_OBJECT_PROTO = 279,
+JSMSG_DEBUG_LOOP = 280,
+JSMSG_DEBUG_NOT_IDLE = 281,
+JSMSG_DEBUG_BAD_OFFSET = 282,
+JSMSG_DEBUG_BAD_LINE = 283,
+JSMSG_DEBUG_NOT_DEBUGGING = 284,
+JSMSG_DEBUG_COMPARTMENT_MISMATCH = 285,
+JSMSG_DEBUG_NOT_SCRIPT_FRAME = 286,
+JSMSG_CANT_WATCH_PROP = 287,
+JSMSG_CSP_BLOCKED_EVAL = 288,
+JSMSG_DEBUG_NO_SCOPE_OBJECT = 289,
+JSMSG_EMPTY_CONSEQUENT = 290,
+JSMSG_NOT_ITERABLE = 291,
+JSMSG_QUERY_LINE_WITHOUT_URL = 292,
+JSMSG_QUERY_INNERMOST_WITHOUT_LINE_URL = 293,
+JSMSG_DEBUG_VARIABLE_NOT_FOUND = 294,
+JSMSG_PARAMETER_AFTER_REST = 295,
+JSMSG_NO_REST_NAME = 296,
+JSMSG_ARGUMENTS_AND_REST = 297,
+JSMSG_FUNCTION_ARGUMENTS_AND_REST = 298,
+JSMSG_REST_WITH_DEFAULT = 299,
+JSMSG_NONDEFAULT_FORMAL_AFTER_DEFAULT = 300,
+JSMSG_YIELD_IN_DEFAULT = 301,
+# 820 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h" 2
+#undef MSG_DEF
+    JSErr_Limit
+} JSErrNum;
+
+extern __attribute__((visibility("default"))) const JSErrorFormatString *
+js_GetErrorMessage(void *userRef, const char *locale, const unsigned errorNumber);
+
+
+
+extern __attribute__((visibility("default"))) uint64_t
+js_GetSCOffset(JSStructuredCloneWriter* writer);
+
+
+
+
+
+namespace js {
+namespace ArrayBufferView {
+
+enum ViewType {
+    TYPE_INT8 = 0,
+    TYPE_UINT8,
+    TYPE_INT16,
+    TYPE_UINT16,
+    TYPE_INT32,
+    TYPE_UINT32,
+    TYPE_FLOAT32,
+    TYPE_FLOAT64,
+
+
+
+
+
+    TYPE_UINT8_CLAMPED,
+
+    TYPE_MAX
+};
+
+}
+}
+
+typedef js::ArrayBufferView::ViewType JSArrayBufferViewType;
+# 870 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewInt8Array(JSContext *cx, uint32_t nelements);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUint8Array(JSContext *cx, uint32_t nelements);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUint8ClampedArray(JSContext *cx, uint32_t nelements);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewInt16Array(JSContext *cx, uint32_t nelements);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUint16Array(JSContext *cx, uint32_t nelements);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewInt32Array(JSContext *cx, uint32_t nelements);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUint32Array(JSContext *cx, uint32_t nelements);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewFloat32Array(JSContext *cx, uint32_t nelements);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewFloat64Array(JSContext *cx, uint32_t nelements);
+# 898 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewInt8ArrayFromArray(JSContext *cx, JSObject *array);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUint8ArrayFromArray(JSContext *cx, JSObject *array);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUint8ClampedArrayFromArray(JSContext *cx, JSObject *array);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewInt16ArrayFromArray(JSContext *cx, JSObject *array);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUint16ArrayFromArray(JSContext *cx, JSObject *array);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewInt32ArrayFromArray(JSContext *cx, JSObject *array);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUint32ArrayFromArray(JSContext *cx, JSObject *array);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewFloat32ArrayFromArray(JSContext *cx, JSObject *array);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewFloat64ArrayFromArray(JSContext *cx, JSObject *array);
+# 924 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewInt8ArrayWithBuffer(JSContext *cx, JSObject *arrayBuffer,
+                          uint32_t byteOffset, int32_t length);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUint8ArrayWithBuffer(JSContext *cx, JSObject *arrayBuffer,
+                           uint32_t byteOffset, int32_t length);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUint8ClampedArrayWithBuffer(JSContext *cx, JSObject *arrayBuffer,
+                                  uint32_t byteOffset, int32_t length);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewInt16ArrayWithBuffer(JSContext *cx, JSObject *arrayBuffer,
+                           uint32_t byteOffset, int32_t length);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUint16ArrayWithBuffer(JSContext *cx, JSObject *arrayBuffer,
+                            uint32_t byteOffset, int32_t length);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewInt32ArrayWithBuffer(JSContext *cx, JSObject *arrayBuffer,
+                           uint32_t byteOffset, int32_t length);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewUint32ArrayWithBuffer(JSContext *cx, JSObject *arrayBuffer,
+                            uint32_t byteOffset, int32_t length);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewFloat32ArrayWithBuffer(JSContext *cx, JSObject *arrayBuffer,
+                             uint32_t byteOffset, int32_t length);
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewFloat64ArrayWithBuffer(JSContext *cx, JSObject *arrayBuffer,
+                             uint32_t byteOffset, int32_t length);
+
+
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_NewArrayBuffer(JSContext *cx, uint32_t nbytes);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsTypedArrayObject(JSObject *obj, JSContext *cx);
+# 974 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_IsArrayBufferViewObject(JSObject *obj, JSContext *cx);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsInt8Array(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) JSBool
+JS_IsUint8Array(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) JSBool
+JS_IsUint8ClampedArray(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) JSBool
+JS_IsInt16Array(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) JSBool
+JS_IsUint16Array(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) JSBool
+JS_IsInt32Array(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) JSBool
+JS_IsUint32Array(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) JSBool
+JS_IsFloat32Array(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) JSBool
+JS_IsFloat64Array(JSObject *obj, JSContext *cx);
+# 1008 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) JSArrayBufferViewType
+JS_GetTypedArrayType(JSObject *obj, JSContext *cx);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsArrayBufferObject(JSObject *obj, JSContext *cx);
+# 1028 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) uint32_t
+JS_GetArrayBufferByteLength(JSObject *obj, JSContext *cx);
+# 1040 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) uint8_t *
+JS_GetArrayBufferData(JSObject *obj, JSContext *cx);
+# 1051 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) uint32_t
+JS_GetTypedArrayLength(JSObject *obj, JSContext *cx);
+# 1063 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) uint32_t
+JS_GetTypedArrayByteOffset(JSObject *obj, JSContext *cx);
+# 1074 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) uint32_t
+JS_GetTypedArrayByteLength(JSObject *obj, JSContext *cx);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsArrayBufferViewObject(JSObject *obj, JSContext *cx);
+
+
+
+
+extern __attribute__((visibility("default"))) uint32_t
+JS_GetArrayBufferViewByteLength(JSObject *obj, JSContext *cx);
+# 1102 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+extern __attribute__((visibility("default"))) int8_t *
+JS_GetInt8ArrayData(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) uint8_t *
+JS_GetUint8ArrayData(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) uint8_t *
+JS_GetUint8ClampedArrayData(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) int16_t *
+JS_GetInt16ArrayData(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) uint16_t *
+JS_GetUint16ArrayData(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) int32_t *
+JS_GetInt32ArrayData(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) uint32_t *
+JS_GetUint32ArrayData(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) float *
+JS_GetFloat32ArrayData(JSObject *obj, JSContext *cx);
+extern __attribute__((visibility("default"))) double *
+JS_GetFloat64ArrayData(JSObject *obj, JSContext *cx);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void *
+JS_GetArrayBufferViewData(JSObject *obj, JSContext *cx);
+
+
+
+
+
+
+__attribute__((visibility("default"))) JSBool
+JS_IsDataViewObject(JSContext *cx, JSObject *obj, JSBool *isDataView);
+# 1145 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+__attribute__((visibility("default"))) uint32_t
+JS_GetDataViewByteOffset(JSObject *obj, JSContext *cx);
+# 1156 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+__attribute__((visibility("default"))) uint32_t
+JS_GetDataViewByteLength(JSObject *obj, JSContext *cx);
+# 1167 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h"
+__attribute__((visibility("default"))) void *
+JS_GetDataViewData(JSObject *obj, JSContext *cx);
+# 23 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h" 1
+# 10 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+#define jsinfer_h___ 
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/ds/LifoAlloc.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/ds/LifoAlloc.h"
+#define LifoAlloc_h__ 
+# 24 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/ds/LifoAlloc.h"
+namespace js {
+
+namespace detail {
+
+static const size_t LIFO_ALLOC_ALIGN = 8;
+
+__attribute__((always_inline)) inline
+char *
+AlignPtr(void *orig)
+{
+    typedef tl::StaticAssert<
+        tl::FloorLog2<LIFO_ALLOC_ALIGN>::result == tl::CeilingLog2<LIFO_ALLOC_ALIGN>::result
+    >::result _;
+
+    char *result = (char *) ((uintptr_t(orig) + (LIFO_ALLOC_ALIGN - 1)) & (~LIFO_ALLOC_ALIGN + 1));
+    do { } while(0);
+    return result;
+}
+
+
+class BumpChunk
+{
+    char *bump;
+    char *limit;
+    BumpChunk *next_;
+    size_t bumpSpaceSize;
+
+    char *headerBase() { return reinterpret_cast<char *>(this); }
+    char *bumpBase() const { return limit - bumpSpaceSize; }
+
+    BumpChunk *thisDuringConstruction() { return this; }
+
+    explicit BumpChunk(size_t bumpSpaceSize)
+      : bump(reinterpret_cast<char *>(thisDuringConstruction()) + sizeof(BumpChunk)),
+        limit(bump + bumpSpaceSize),
+        next_(__null), bumpSpaceSize(bumpSpaceSize)
+    {
+        do { } while(0);
+    }
+
+    void setBump(void *ptr) {
+        do { } while(0);
+        do { } while(0);
+        DebugOnly<char *> prevBump = bump;
+        bump = static_cast<char *>(ptr);
+
+
+
+
+
+
+
+    }
+
+  public:
+    BumpChunk *next() const { return next_; }
+    void setNext(BumpChunk *succ) { next_ = succ; }
+
+    size_t used() const { return bump - bumpBase(); }
+    size_t sizeOfIncludingThis(JSMallocSizeOfFun mallocSizeOf) {
+        return mallocSizeOf(this);
+    }
+
+    void resetBump() {
+        setBump(headerBase() + sizeof(BumpChunk));
+    }
+
+    void *mark() const { return bump; }
+
+    void release(void *mark) {
+        do { } while(0);
+        do { } while(0);
+        setBump(mark);
+    }
+
+    bool contains(void *mark) const {
+        return bumpBase() <= mark && mark <= limit;
+    }
+
+    bool canAlloc(size_t n);
+
+
+    __attribute__((always_inline)) inline
+    void *tryAlloc(size_t n) {
+        char *aligned = AlignPtr(bump);
+        char *newBump = aligned + n;
+
+        if (newBump > limit)
+            return __null;
+
+
+        if ((__builtin_expect((newBump < bump), 0)))
+            return __null;
+
+        do { } while(0);
+        setBump(newBump);
+        return aligned;
+    }
+
+    void *allocInfallible(size_t n) {
+        void *result = tryAlloc(n);
+        do { } while(0);
+        return result;
+    }
+
+    static BumpChunk *new_(size_t chunkSize);
+    static void delete_(BumpChunk *chunk);
+};
+
+}
+
+
+
+
+
+
+
+class LifoAlloc
+{
+    typedef detail::BumpChunk BumpChunk;
+
+    BumpChunk *first;
+    BumpChunk *latest;
+    size_t markCount;
+    size_t defaultChunkSize_;
+
+    void operator=(const LifoAlloc &) ;
+    LifoAlloc(const LifoAlloc &) ;
+# 160 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/ds/LifoAlloc.h"
+    BumpChunk *getOrCreateChunk(size_t n);
+
+    void reset(size_t defaultChunkSize) {
+        do { } while(0);
+        first = latest = __null;
+        defaultChunkSize_ = defaultChunkSize;
+        markCount = 0;
+    }
+
+  public:
+    explicit LifoAlloc(size_t defaultChunkSize) { reset(defaultChunkSize); }
+
+
+    void steal(LifoAlloc *other) {
+        do { } while(0);
+        PodCopy((char *) this, (char *) other, sizeof(*this));
+        other->reset(defaultChunkSize_);
+    }
+
+    ~LifoAlloc() { freeAll(); }
+
+    size_t defaultChunkSize() const { return defaultChunkSize_; }
+
+
+    void freeAll();
+
+
+    void freeUnused();
+
+    __attribute__((always_inline)) inline
+    void *alloc(size_t n) {
+        do {} while(0);
+
+        void *result;
+        if (latest && (result = latest->tryAlloc(n)))
+            return result;
+
+        if (!getOrCreateChunk(n))
+            return __null;
+
+        return latest->allocInfallible(n);
+    }
+
+    template <typename T>
+    T *newArray(size_t count) {
+        void *mem = alloc(sizeof(T) * count);
+        if (!mem)
+            return __null;
+        typedef int moz_static_assert45[(tl::IsPodType<T>::result) ? 1 : -1];
+        return (T *) mem;
+    }
+
+
+
+
+
+    template <typename T>
+    T *newArrayUninitialized(size_t count) {
+        return static_cast<T *>(alloc(sizeof(T) * count));
+    }
+
+    void *mark() {
+        markCount++;
+
+        return latest ? latest->mark() : __null;
+    }
+
+    void release(void *mark) {
+        markCount--;
+
+        if (!mark) {
+            latest = first;
+            if (latest)
+                latest->resetBump();
+            return;
+        }
+
+
+
+
+
+
+        BumpChunk *container = first;
+        while (true) {
+            if (container->contains(mark))
+                break;
+            do { } while(0);
+            container = container->next();
+        }
+        latest = container;
+        latest->release(mark);
+    }
+
+
+    size_t used() const {
+        size_t accum = 0;
+        BumpChunk *it = first;
+        while (it) {
+            accum += it->used();
+            it = it->next();
+        }
+        return accum;
+    }
+
+
+    size_t sizeOfExcludingThis(JSMallocSizeOfFun mallocSizeOf) const {
+        size_t accum = 0;
+        BumpChunk *it = first;
+        while (it) {
+            accum += it->sizeOfIncludingThis(mallocSizeOf);
+            it = it->next();
+        }
+        return accum;
+    }
+
+
+    size_t sizeOfIncludingThis(JSMallocSizeOfFun mallocSizeOf) const {
+        return mallocSizeOf(this) + sizeOfExcludingThis(mallocSizeOf);
+    }
+
+
+    template <typename T>
+    __attribute__((always_inline)) inline
+    T *newPod() {
+        return static_cast<T *>(alloc(sizeof(T)));
+    }
+
+    template <class T> __attribute__((always_inline)) inline T *new_() { void *memory = alloc(sizeof(T)); return memory ? new(memory) T () : __null; } template <class T, class P1> __attribute__((always_inline)) inline T *new_(P1 p1) { void *memory = alloc(sizeof(T)); return memory ? new(memory) T (p1) : __null; } template <class T, class P1, class P2> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2) { void *memory = alloc(sizeof(T)); return memory ? new(memory) T (p1, p2) : __null; } template <class T, class P1, class P2, class P3> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3) { void *memory = alloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3) : __null; } template <class T, class P1, class P2, class P3, class P4> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4) { void *memory = alloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) { void *memory = alloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) { void *memory = alloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7) { void *memory = alloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8) { void *memory = alloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9) { void *memory = alloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10) { void *memory = alloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11) { void *memory = alloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12) { void *memory = alloc(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) : __null; } static const int JSMinAlignment = 8; template <class T> __attribute__((always_inline)) inline T *array_new(size_t n) { uint64_t numBytes64 = uint64_t(JSMinAlignment) + uint64_t(sizeof(T)) * uint64_t(n); size_t numBytes = size_t(numBytes64); if (numBytes64 != numBytes) { do { } while(0); return __null; } void *memory = alloc(numBytes); if (!memory) return __null; *(size_t *)memory = n; memory = (void*)(uintptr_t(memory) + JSMinAlignment); return new(memory) T[n]; }
+};
+
+class LifoAllocScope
+{
+    LifoAlloc *lifoAlloc;
+    void *mark;
+    bool shouldRelease;
+   
+
+  public:
+    explicit LifoAllocScope(LifoAlloc *lifoAlloc
+                            )
+      : lifoAlloc(lifoAlloc), shouldRelease(true) {
+        do { } while (0);
+        mark = lifoAlloc->mark();
+    }
+
+    ~LifoAllocScope() {
+        if (shouldRelease)
+            lifoAlloc->release(mark);
+    }
+
+    LifoAlloc &alloc() {
+        return *lifoAlloc;
+    }
+
+    void releaseEarly() {
+        do { } while(0);
+        lifoAlloc->release(mark);
+        shouldRelease = false;
+    }
+};
+
+}
+# 17 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Heap.h" 1
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h" 2
+
+
+namespace JS {
+struct TypeInferenceSizes;
+}
+
+namespace js {
+namespace types {
+
+
+struct TypeObjectKey {
+    static intptr_t keyBits(TypeObjectKey *obj) { return (intptr_t) obj; }
+    static TypeObjectKey *getKey(TypeObjectKey *obj) { return obj; }
+};
+
+
+
+
+
+
+class Type
+{
+    uintptr_t data;
+    Type(uintptr_t data) : data(data) {}
+
+  public:
+
+    uintptr_t raw() const { return data; }
+
+    bool isPrimitive() const {
+        return data < JSVAL_TYPE_OBJECT;
+    }
+
+    bool isPrimitive(JSValueType type) const {
+        do { } while(0);
+        return (uintptr_t) type == data;
+    }
+
+    JSValueType primitive() const {
+        do { } while(0);
+        return (JSValueType) data;
+    }
+
+    bool isAnyObject() const {
+        return data == JSVAL_TYPE_OBJECT;
+    }
+
+    bool isUnknown() const {
+        return data == JSVAL_TYPE_UNKNOWN;
+    }
+
+
+
+    bool isObject() const {
+        do { } while(0);
+        return data > JSVAL_TYPE_UNKNOWN;
+    }
+
+    inline TypeObjectKey *objectKey() const;
+
+
+
+    bool isSingleObject() const {
+        return isObject() && !!(data & 1);
+    }
+
+    inline JSObject *singleObject() const;
+
+
+
+    bool isTypeObject() const {
+        return isObject() && !(data & 1);
+    }
+
+    inline TypeObject *typeObject() const;
+
+    bool operator == (Type o) const { return data == o.data; }
+    bool operator != (Type o) const { return data != o.data; }
+
+    static inline Type UndefinedType() { return Type(JSVAL_TYPE_UNDEFINED); }
+    static inline Type NullType() { return Type(JSVAL_TYPE_NULL); }
+    static inline Type BooleanType() { return Type(JSVAL_TYPE_BOOLEAN); }
+    static inline Type Int32Type() { return Type(JSVAL_TYPE_INT32); }
+    static inline Type DoubleType() { return Type(JSVAL_TYPE_DOUBLE); }
+    static inline Type StringType() { return Type(JSVAL_TYPE_STRING); }
+    static inline Type MagicArgType() { return Type(JSVAL_TYPE_MAGIC); }
+    static inline Type AnyObjectType() { return Type(JSVAL_TYPE_OBJECT); }
+    static inline Type UnknownType() { return Type(JSVAL_TYPE_UNKNOWN); }
+
+    static inline Type PrimitiveType(JSValueType type) {
+        do { } while(0);
+        return Type(type);
+    }
+
+    static inline Type ObjectType(JSObject *obj);
+    static inline Type ObjectType(TypeObject *obj);
+    static inline Type ObjectType(TypeObjectKey *obj);
+};
+
+
+inline Type GetValueType(JSContext *cx, const Value &val);
+# 144 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+class TypeConstraint
+{
+public:
+
+
+
+
+    const char *kind() const { return __null; }
+
+
+
+    TypeConstraint *next;
+
+    TypeConstraint(const char *kind)
+        : next(__null)
+    {
+
+
+
+    }
+
+
+    virtual void newType(JSContext *cx, TypeSet *source, Type type) = 0;
+
+
+
+
+
+    virtual void newPropertyState(JSContext *cx, TypeSet *source) {}
+
+
+
+
+
+
+    virtual void newObjectState(JSContext *cx, TypeObject *object, bool force) {}
+};
+
+
+enum {
+    TYPE_FLAG_UNDEFINED = 0x1,
+    TYPE_FLAG_NULL = 0x2,
+    TYPE_FLAG_BOOLEAN = 0x4,
+    TYPE_FLAG_INT32 = 0x8,
+    TYPE_FLAG_DOUBLE = 0x10,
+    TYPE_FLAG_STRING = 0x20,
+    TYPE_FLAG_LAZYARGS = 0x40,
+    TYPE_FLAG_ANYOBJECT = 0x80,
+
+
+    TYPE_FLAG_OBJECT_COUNT_MASK = 0xff00,
+    TYPE_FLAG_OBJECT_COUNT_SHIFT = 8,
+    TYPE_FLAG_OBJECT_COUNT_LIMIT =
+        TYPE_FLAG_OBJECT_COUNT_MASK >> TYPE_FLAG_OBJECT_COUNT_SHIFT,
+
+
+    TYPE_FLAG_UNKNOWN = 0x00010000,
+
+
+    TYPE_FLAG_BASE_MASK = 0x000100ff,
+
+
+
+
+
+
+
+    TYPE_FLAG_PROPAGATED_PROPERTY = 0x00020000,
+
+
+    TYPE_FLAG_OWN_PROPERTY = 0x00040000,
+
+
+
+
+
+
+    TYPE_FLAG_CONFIGURED_PROPERTY = 0x00080000,
+
+
+
+
+
+
+    TYPE_FLAG_DEFINITE_PROPERTY = 0x00100000,
+
+
+    TYPE_FLAG_DEFINITE_MASK = 0x0f000000,
+    TYPE_FLAG_DEFINITE_SHIFT = 24
+};
+typedef uint32_t TypeFlags;
+
+
+enum {
+
+    OBJECT_FLAG_FUNCTION = 0x1,
+
+
+    OBJECT_FLAG_NEW_SCRIPT_CLEARED = 0x2,
+
+
+
+
+
+
+    OBJECT_FLAG_NEW_SCRIPT_REGENERATE = 0x4,
+
+
+
+
+
+    OBJECT_FLAG_SETS_MARKED_UNKNOWN = 0x8,
+
+
+    OBJECT_FLAG_PROPERTY_COUNT_MASK = 0xfff0,
+    OBJECT_FLAG_PROPERTY_COUNT_SHIFT = 4,
+    OBJECT_FLAG_PROPERTY_COUNT_LIMIT =
+        OBJECT_FLAG_PROPERTY_COUNT_MASK >> OBJECT_FLAG_PROPERTY_COUNT_SHIFT,
+
+
+
+
+
+    OBJECT_FLAG_NON_DENSE_ARRAY = 0x00010000,
+
+
+    OBJECT_FLAG_NON_PACKED_ARRAY = 0x00020000,
+
+
+    OBJECT_FLAG_NON_TYPED_ARRAY = 0x00040000,
+
+
+    OBJECT_FLAG_UNINLINEABLE = 0x00080000,
+
+
+    OBJECT_FLAG_SPECIAL_EQUALITY = 0x00100000,
+
+
+    OBJECT_FLAG_ITERATED = 0x00200000,
+
+
+    OBJECT_FLAG_REENTRANT_FUNCTION = 0x00400000,
+
+
+    OBJECT_FLAG_REGEXP_FLAGS_SET = 0x00800000,
+
+
+    OBJECT_FLAG_DYNAMIC_MASK = 0x00ff0000,
+
+
+
+
+
+    OBJECT_FLAG_UNKNOWN_PROPERTIES = 0x80000000,
+
+
+    OBJECT_FLAG_UNKNOWN_MASK =
+        OBJECT_FLAG_DYNAMIC_MASK
+      | OBJECT_FLAG_UNKNOWN_PROPERTIES
+      | OBJECT_FLAG_SETS_MARKED_UNKNOWN
+};
+typedef uint32_t TypeObjectFlags;
+
+
+class TypeSet
+{
+
+    TypeFlags flags;
+
+
+    TypeObjectKey **objectSet;
+
+  public:
+
+
+    TypeConstraint *constraintList;
+
+    TypeSet()
+        : flags(0), objectSet(__null), constraintList(__null)
+    {}
+
+    void print(JSContext *cx);
+
+    inline void sweep(JSCompartment *compartment);
+    inline size_t computedSizeOfExcludingThis();
+
+
+    inline bool hasType(Type type);
+
+    TypeFlags baseFlags() const { return flags & TYPE_FLAG_BASE_MASK; }
+    bool unknown() const { return !!(flags & TYPE_FLAG_UNKNOWN); }
+    bool unknownObject() const { return !!(flags & (TYPE_FLAG_UNKNOWN | TYPE_FLAG_ANYOBJECT)); }
+
+    bool empty() const { return !baseFlags() && !baseObjectCount(); }
+
+    bool hasAnyFlag(TypeFlags flags) const {
+        do { } while(0);
+        return !!(baseFlags() & flags);
+    }
+
+    bool isOwnProperty(bool configurable) const {
+        return flags & (configurable ? TYPE_FLAG_CONFIGURED_PROPERTY : TYPE_FLAG_OWN_PROPERTY);
+    }
+    bool isDefiniteProperty() const { return flags & TYPE_FLAG_DEFINITE_PROPERTY; }
+    unsigned definiteSlot() const {
+        do { } while(0);
+        return flags >> TYPE_FLAG_DEFINITE_SHIFT;
+    }
+
+
+
+
+
+    inline void addType(JSContext *cx, Type type);
+
+
+    inline void setOwnProperty(JSContext *cx, bool configured);
+
+
+
+
+
+
+    inline unsigned getObjectCount();
+    inline TypeObjectKey *getObject(unsigned i);
+    inline JSObject *getSingleObject(unsigned i);
+    inline TypeObject *getTypeObject(unsigned i);
+
+    void setOwnProperty(bool configurable) {
+        flags |= TYPE_FLAG_OWN_PROPERTY;
+        if (configurable)
+            flags |= TYPE_FLAG_CONFIGURED_PROPERTY;
+    }
+    void setDefinite(unsigned slot) {
+        do { } while(0);
+        flags |= TYPE_FLAG_DEFINITE_PROPERTY | (slot << TYPE_FLAG_DEFINITE_SHIFT);
+    }
+
+    bool hasPropagatedProperty() { return !!(flags & TYPE_FLAG_PROPAGATED_PROPERTY); }
+    void setPropagatedProperty() { flags |= TYPE_FLAG_PROPAGATED_PROPERTY; }
+
+    enum FilterKind {
+        FILTER_ALL_PRIMITIVES,
+        FILTER_NULL_VOID,
+        FILTER_VOID
+    };
+
+
+    inline void add(JSContext *cx, TypeConstraint *constraint, bool callExisting = true);
+    void addSubset(JSContext *cx, TypeSet *target);
+    void addGetProperty(JSContext *cx, JSScript *script, jsbytecode *pc,
+                        TypeSet *target, jsid id);
+    void addSetProperty(JSContext *cx, JSScript *script, jsbytecode *pc,
+                        TypeSet *target, jsid id);
+    void addCallProperty(JSContext *cx, JSScript *script, jsbytecode *pc, jsid id);
+    void addSetElement(JSContext *cx, JSScript *script, jsbytecode *pc,
+                       TypeSet *objectTypes, TypeSet *valueTypes);
+    void addCall(JSContext *cx, TypeCallsite *site);
+    void addArith(JSContext *cx, JSScript *script, jsbytecode *pc,
+                  TypeSet *target, TypeSet *other = __null);
+    void addTransformThis(JSContext *cx, JSScript *script, TypeSet *target);
+    void addPropagateThis(JSContext *cx, JSScript *script, jsbytecode *pc,
+                          Type type, TypeSet *types = __null);
+    void addFilterPrimitives(JSContext *cx, TypeSet *target, FilterKind filter);
+    void addSubsetBarrier(JSContext *cx, JSScript *script, jsbytecode *pc, TypeSet *target);
+
+
+
+
+
+    static TypeSet *make(JSContext *cx, const char *name);
+# 424 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+    void addFreeze(JSContext *cx);
+
+
+    JSValueType getKnownTypeTag(JSContext *cx);
+
+    bool isMagicArguments(JSContext *cx) { return getKnownTypeTag(cx) == JSVAL_TYPE_MAGIC; }
+
+
+    bool hasObjectFlags(JSContext *cx, TypeObjectFlags flags);
+    static bool HasObjectFlags(JSContext *cx, TypeObject *object, TypeObjectFlags flags);
+
+
+
+
+
+
+    static void WatchObjectStateChange(JSContext *cx, TypeObject *object);
+# 449 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+    bool isOwnProperty(JSContext *cx, TypeObject *object, bool configurable);
+
+
+    bool knownNonEmpty(JSContext *cx);
+
+
+    bool knownSubset(JSContext *cx, TypeSet *other);
+
+
+
+
+
+    int getTypedArrayType(JSContext *cx);
+
+
+    JSObject *getSingleton(JSContext *cx, bool freeze = true);
+
+
+    bool hasGlobalObject(JSContext *cx, JSObject *global);
+
+    inline void clearObjects();
+
+
+
+
+
+    bool needsBarrier(JSContext *cx);
+
+
+    bool propertyNeedsBarrier(JSContext *cx, jsid id);
+
+  private:
+    uint32_t baseObjectCount() const {
+        return (flags & TYPE_FLAG_OBJECT_COUNT_MASK) >> TYPE_FLAG_OBJECT_COUNT_SHIFT;
+    }
+    inline void setBaseObjectCount(uint32_t count);
+};
+
+
+
+
+
+
+
+struct TypeResult
+{
+    uint32_t offset;
+    Type type;
+    TypeResult *next;
+
+    TypeResult(uint32_t offset, Type type)
+        : offset(offset), type(type), next(__null)
+    {}
+};
+# 562 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+struct TypeBarrier
+{
+
+    TypeBarrier *next;
+
+
+    TypeSet *target;
+
+
+
+
+
+    Type type;
+
+
+
+
+
+    JSObject *singleton;
+    jsid singletonId;
+
+    TypeBarrier(TypeSet *target, Type type, JSObject *singleton, jsid singletonId)
+        : next(__null), target(target), type(type),
+          singleton(singleton), singletonId(singletonId)
+    {}
+};
+
+
+struct Property
+{
+
+    HeapId id;
+
+
+    TypeSet types;
+
+    inline Property(jsid id);
+    inline Property(const Property &o);
+
+    static uint32_t keyBits(jsid id) { return uint32_t((id)); }
+    static jsid getKey(Property *p) { return p->id; }
+};
+# 615 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+struct TypeNewScript
+{
+    HeapPtrFunction fun;
+
+
+    gc::AllocKind allocKind;
+
+
+
+
+
+    HeapPtrShape shape;
+# 636 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+    struct Initializer {
+        enum Kind {
+            SETPROP,
+            FRAME_PUSH,
+            FRAME_POP,
+            DONE
+        } kind;
+        uint32_t offset;
+        Initializer(Kind kind, uint32_t offset)
+          : kind(kind), offset(offset)
+        {}
+    };
+    Initializer *initializerList;
+
+    static inline void writeBarrierPre(TypeNewScript *newScript);
+    static inline void writeBarrierPost(TypeNewScript *newScript, void *addr);
+};
+# 681 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+struct TypeObject : gc::Cell
+{
+
+    HeapPtrObject proto;
+
+
+
+
+
+
+    HeapPtrObject singleton;
+
+
+
+
+
+    static const size_t LAZY_SINGLETON = 1;
+    bool lazy() const { return singleton == (JSObject *) LAZY_SINGLETON; }
+
+
+    TypeObjectFlags flags;
+# 714 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+    uint32_t contribution;
+    static const uint32_t CONTRIBUTION_LIMIT = 2000;
+
+
+
+
+
+
+    HeapPtr<TypeNewScript> newScript;
+# 754 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+    Property **propertySet;
+
+
+    HeapPtrFunction interpretedFunction;
+
+
+    void *padding;
+
+
+    inline TypeObject(JSObject *proto, bool isFunction, bool unknown);
+
+    bool isFunction() { return !!(flags & OBJECT_FLAG_FUNCTION); }
+
+    bool hasAnyFlags(TypeObjectFlags flags) {
+        do { } while(0);
+        return !!(this->flags & flags);
+    }
+    bool hasAllFlags(TypeObjectFlags flags) {
+        do { } while(0);
+        return (this->flags & flags) == flags;
+    }
+
+    bool unknownProperties() {
+        do { } while (0)
+                                                           ;
+        return !!(flags & OBJECT_FLAG_UNKNOWN_PROPERTIES);
+    }
+
+
+
+
+
+
+
+    inline TypeSet *getProperty(JSContext *cx, jsid id, bool assign);
+
+
+    inline TypeSet *maybeGetProperty(JSContext *cx, jsid id);
+
+    inline unsigned getPropertyCount();
+    inline Property *getProperty(unsigned i);
+
+
+    inline void setFlagsFromKey(JSContext *cx, JSProtoKey kind);
+
+
+
+
+
+    inline JSObject *getGlobal();
+
+
+
+    bool addProperty(JSContext *cx, jsid id, Property **pprop);
+    bool addDefiniteProperties(JSContext *cx, JSObject *obj);
+    bool matchDefiniteProperties(JSObject *obj);
+    void addPrototype(JSContext *cx, TypeObject *proto);
+    void addPropertyType(JSContext *cx, jsid id, Type type);
+    void addPropertyType(JSContext *cx, jsid id, const Value &value);
+    void addPropertyType(JSContext *cx, const char *name, Type type);
+    void addPropertyType(JSContext *cx, const char *name, const Value &value);
+    void markPropertyConfigured(JSContext *cx, jsid id);
+    void markStateChange(JSContext *cx);
+    void setFlags(JSContext *cx, TypeObjectFlags flags);
+    void markUnknown(JSContext *cx);
+    void clearNewScript(JSContext *cx);
+    void getFromPrototypes(JSContext *cx, jsid id, TypeSet *types, bool force = false);
+
+    void print(JSContext *cx);
+
+    inline void clearProperties();
+    inline void sweep(FreeOp *fop);
+
+    inline size_t computedSizeOfExcludingThis();
+
+    void sizeOfExcludingThis(TypeInferenceSizes *sizes, JSMallocSizeOfFun mallocSizeOf);
+
+
+
+
+
+
+    void finalize(FreeOp *fop) {}
+
+    static inline void writeBarrierPre(TypeObject *type);
+    static inline void writeBarrierPost(TypeObject *type, void *addr);
+    static inline void readBarrier(TypeObject *type);
+
+    static inline ThingRootKind rootKind() { return THING_ROOT_TYPE_OBJECT; }
+
+  private:
+    inline uint32_t basePropertyCount() const;
+    inline void setBasePropertyCount(uint32_t count);
+
+    static void staticAsserts() {
+        typedef int moz_static_assert46[(__builtin_offsetof (TypeObject, proto) == __builtin_offsetof (js::shadow::TypeObject, proto)) ? 1 : -1];
+    }
+};
+
+
+
+
+
+struct TypeObjectEntry
+{
+    typedef JSObject *Lookup;
+
+    static inline HashNumber hash(JSObject *base);
+    static inline bool match(TypeObject *key, JSObject *lookup);
+};
+typedef HashSet<ReadBarriered<TypeObject>, TypeObjectEntry, SystemAllocPolicy> TypeObjectSet;
+
+
+bool
+UseNewType(JSContext *cx, JSScript *script, jsbytecode *pc);
+
+
+bool
+UseNewTypeForInitializer(JSContext *cx, JSScript *script, jsbytecode *pc);
+
+
+
+
+
+bool
+ArrayPrototypeHasIndexedProperty(JSContext *cx, JSScript *script);
+
+
+
+
+
+
+struct TypeCallsite
+{
+    JSScript *script;
+    jsbytecode *pc;
+
+
+    bool isNew;
+
+
+    unsigned argumentCount;
+    TypeSet **argumentTypes;
+
+
+    TypeSet *thisTypes;
+
+
+    TypeSet *returnTypes;
+
+    inline TypeCallsite(JSContext *cx, JSScript *script, jsbytecode *pc,
+                        bool isNew, unsigned argumentCount);
+};
+# 945 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+struct TypeScriptNesting
+{
+# 955 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+    JSScript *parent;
+
+
+    JSScript *children;
+
+
+    JSScript *next;
+
+
+    JSObject *activeCall;
+# 974 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+    const Value *argArray;
+    const Value *varArray;
+
+
+    uint32_t activeFrames;
+
+    TypeScriptNesting() { PodZero(this); }
+    ~TypeScriptNesting();
+};
+
+
+bool CheckScriptNesting(JSContext *cx, JSScript *script);
+
+
+void NestingPrologue(JSContext *cx, StackFrame *fp);
+void NestingEpilogue(StackFrame *fp);
+
+
+class TypeScript
+{
+    friend struct ::JSScript;
+
+
+    analyze::ScriptAnalysis *analysis;
+
+
+
+
+
+
+    static const size_t GLOBAL_MISSING_SCOPE = 0x1;
+
+
+    HeapPtr<GlobalObject> global;
+
+  public:
+
+
+    TypeScriptNesting *nesting;
+
+
+    TypeResult *dynamicList;
+
+    inline TypeScript();
+
+    bool hasScope() { return size_t(global.get()) != GLOBAL_MISSING_SCOPE; }
+
+
+    TypeSet *typeArray() { return (TypeSet *) (uintptr_t(this) + sizeof(TypeScript)); }
+
+    static inline unsigned NumTypeSets(JSScript *script);
+
+    static bool SetScope(JSContext *cx, JSScript *script, JSObject *scope);
+
+    static inline TypeSet *ReturnTypes(JSScript *script);
+    static inline TypeSet *ThisTypes(JSScript *script);
+    static inline TypeSet *ArgTypes(JSScript *script, unsigned i);
+    static inline TypeSet *LocalTypes(JSScript *script, unsigned i);
+
+
+    static inline TypeSet *SlotTypes(JSScript *script, unsigned slot);
+
+
+
+
+
+
+
+    static inline TypeObject *StandardType(JSContext *cx, JSScript *script, JSProtoKey kind);
+
+
+    static inline TypeObject *InitObject(JSContext *cx, JSScript *script, jsbytecode *pc, JSProtoKey kind);
+
+
+
+
+
+    static inline void MonitorOverflow(JSContext *cx, JSScript *script, jsbytecode *pc);
+    static inline void MonitorString(JSContext *cx, JSScript *script, jsbytecode *pc);
+    static inline void MonitorUnknown(JSContext *cx, JSScript *script, jsbytecode *pc);
+
+    static inline void GetPcScript(JSContext *cx, JSScript **script, jsbytecode **pc);
+    static inline void MonitorOverflow(JSContext *cx);
+    static inline void MonitorString(JSContext *cx);
+    static inline void MonitorUnknown(JSContext *cx);
+# 1067 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+    static inline void Monitor(JSContext *cx, JSScript *script, jsbytecode *pc,
+                               const js::Value &val);
+    static inline void Monitor(JSContext *cx, const js::Value &rval);
+
+
+    static inline void MonitorAssign(JSContext *cx, JSObject *obj, jsid id);
+
+
+    static inline void SetThis(JSContext *cx, JSScript *script, Type type);
+    static inline void SetThis(JSContext *cx, JSScript *script, const js::Value &value);
+    static inline void SetLocal(JSContext *cx, JSScript *script, unsigned local, Type type);
+    static inline void SetLocal(JSContext *cx, JSScript *script, unsigned local, const js::Value &value);
+    static inline void SetArgument(JSContext *cx, JSScript *script, unsigned arg, Type type);
+    static inline void SetArgument(JSContext *cx, JSScript *script, unsigned arg, const js::Value &value);
+
+    static void Sweep(FreeOp *fop, JSScript *script);
+    inline void trace(JSTracer *trc);
+    void destroy();
+};
+
+struct ArrayTableKey;
+typedef HashMap<ArrayTableKey,ReadBarriered<TypeObject>,ArrayTableKey,SystemAllocPolicy> ArrayTypeTable;
+
+struct ObjectTableKey;
+struct ObjectTableEntry;
+typedef HashMap<ObjectTableKey,ObjectTableEntry,ObjectTableKey,SystemAllocPolicy> ObjectTypeTable;
+
+struct AllocationSiteKey;
+typedef HashMap<AllocationSiteKey,ReadBarriered<TypeObject>,AllocationSiteKey,SystemAllocPolicy> AllocationSiteTable;
+
+struct RecompileInfo
+{
+    JSScript *script;
+    bool constructing : 1;
+    bool barriers : 1;
+    uint32_t chunkIndex:30;
+
+    bool operator == (const RecompileInfo &o) const {
+        return script == o.script
+            && constructing == o.constructing
+            && barriers == o.barriers
+            && chunkIndex == o.chunkIndex;
+    }
+};
+
+
+struct TypeCompartment
+{
+
+
+
+
+
+
+    struct PendingWork
+    {
+        TypeConstraint *constraint;
+        TypeSet *source;
+        Type type;
+    };
+    PendingWork *pendingArray;
+    unsigned pendingCount;
+    unsigned pendingCapacity;
+
+
+    bool resolving;
+
+
+    bool inferenceEnabled;
+
+
+
+
+
+    bool pendingNukeTypes;
+
+
+    unsigned scriptCount;
+
+
+    Vector<RecompileInfo> *pendingRecompiles;
+
+
+
+
+
+
+    unsigned recompilations;
+    unsigned frameExpansions;
+
+
+
+
+
+
+    RecompileInfo compiledInfo;
+
+
+    AllocationSiteTable *allocationSiteTable;
+
+
+
+    ArrayTypeTable *arrayTypeTable;
+    ObjectTypeTable *objectTypeTable;
+
+    void fixArrayType(JSContext *cx, JSObject *obj);
+    void fixObjectType(JSContext *cx, JSObject *obj);
+
+
+
+
+    static const unsigned TYPE_COUNT_LIMIT = 4;
+    unsigned typeCounts[TYPE_COUNT_LIMIT];
+    unsigned typeCountOver;
+
+    void init(JSContext *cx);
+    ~TypeCompartment();
+
+    inline JSCompartment *compartment();
+
+
+    inline void addPending(JSContext *cx, TypeConstraint *constraint, TypeSet *source, Type type);
+    bool growPendingArray(JSContext *cx);
+
+
+    inline void resolvePending(JSContext *cx);
+
+
+    void print(JSContext *cx, bool force);
+
+
+
+
+
+
+
+    TypeObject *newTypeObject(JSContext *cx, JSScript *script,
+                              JSProtoKey kind, JSObject *proto, bool unknown = false);
+
+
+    TypeObject *newAllocationSiteTypeObject(JSContext *cx, const AllocationSiteKey &key);
+
+    void nukeTypes(FreeOp *fop);
+    void processPendingRecompiles(FreeOp *fop);
+
+
+    void setPendingNukeTypes(JSContext *cx);
+    void setPendingNukeTypesNoReport();
+
+
+    void addPendingRecompile(JSContext *cx, const RecompileInfo &info);
+    void addPendingRecompile(JSContext *cx, JSScript *script, jsbytecode *pc);
+
+
+    void monitorBytecode(JSContext *cx, JSScript *script, uint32_t offset,
+                         bool returnOnly = false);
+
+
+    void markSetsUnknown(JSContext *cx, TypeObject *obj);
+
+    void sweep(FreeOp *fop);
+    void finalizeObjects();
+};
+
+enum SpewChannel {
+    ISpewOps,
+    ISpewResult,
+    SPEW_COUNT
+};
+# 1252 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h"
+inline const char * InferSpewColorReset() { return __null; }
+inline const char * InferSpewColor(TypeConstraint *constraint) { return __null; }
+inline const char * InferSpewColor(TypeSet *types) { return __null; }
+inline void InferSpew(SpewChannel which, const char *fmt, ...) {}
+inline const char * TypeString(Type type) { return __null; }
+inline const char * TypeObjectString(TypeObject *type) { return __null; }
+
+
+
+
+void TypeFailure(JSContext *cx, const char *fmt, ...);
+
+}
+}
+
+namespace JS {
+    template<> class AnchorPermitted<js::types::TypeObject *> { };
+}
+# 24 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h" 2
+# 32 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+#define ObjectImpl_h___ 
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfriendapi.h" 1
+# 15 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinfer.h" 1
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsval.h" 1
+# 17 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Barrier.h" 1
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/NumericConversions.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/NumericConversions.h"
+#define NumericConversions_h___ 
+
+
+
+# 1 "/usr/include/math.h" 1 3 4
+# 26 "/usr/include/math.h" 3 4
+#define _MATH_H 1
+
+
+
+extern "C" {
+
+
+
+# 1 "/usr/include/bits/huge_val.h" 1 3 4
+# 29 "/usr/include/bits/huge_val.h" 3 4
+#define HUGE_VAL (__builtin_huge_val())
+# 35 "/usr/include/math.h" 2 3 4
+
+# 1 "/usr/include/bits/huge_valf.h" 1 3 4
+# 29 "/usr/include/bits/huge_valf.h" 3 4
+#define HUGE_VALF (__builtin_huge_valf())
+# 37 "/usr/include/math.h" 2 3 4
+# 1 "/usr/include/bits/huge_vall.h" 1 3 4
+# 26 "/usr/include/bits/huge_vall.h" 3 4
+#define HUGE_VALL (__builtin_huge_vall())
+# 38 "/usr/include/math.h" 2 3 4
+
+
+# 1 "/usr/include/bits/inf.h" 1 3 4
+# 27 "/usr/include/bits/inf.h" 3 4
+#define INFINITY (__builtin_inff())
+# 41 "/usr/include/math.h" 2 3 4
+
+
+# 1 "/usr/include/bits/nan.h" 1 3 4
+# 29 "/usr/include/bits/nan.h" 3 4
+#define NAN (__builtin_nanf (""))
+# 44 "/usr/include/math.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/mathdef.h" 1 3 4
+# 25 "/usr/include/bits/mathdef.h" 3 4
+#define _MATH_H_MATHDEF 1
+
+
+typedef float float_t;
+
+typedef double double_t;
+
+
+
+#define FP_ILOGB0 (-2147483647)
+#define FP_ILOGBNAN (2147483647)
+# 56 "/usr/include/bits/mathdef.h" 3 4
+#define __NO_LONG_DOUBLE_MATH 1
+# 48 "/usr/include/math.h" 2 3 4
+
+
+
+
+
+
+#define __MATHCALL(function,suffix,args) __MATHDECL (_Mdouble_,function,suffix, args)
+
+#define __MATHDECL(type,function,suffix,args) __MATHDECL_1(type, function,suffix, args); __MATHDECL_1(type, __CONCAT(__,function),suffix, args)
+
+
+#define __MATHCALLX(function,suffix,args,attrib) __MATHDECLX (_Mdouble_,function,suffix, args, attrib)
+
+#define __MATHDECLX(type,function,suffix,args,attrib) __MATHDECL_1(type, function,suffix, args) __attribute__ (attrib); __MATHDECL_1(type, __CONCAT(__,function),suffix, args) __attribute__ (attrib)
+
+
+#define __MATHDECL_1(type,function,suffix,args) extern type __MATH_PRECNAME(function,suffix) args __THROW
+
+
+#define _Mdouble_ double
+#define __MATH_PRECNAME(name,r) __CONCAT(name,r)
+#define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_STD
+#define _Mdouble_END_NAMESPACE __END_NAMESPACE_STD
+# 1 "/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern double acos (double __x) throw (); extern double __acos (double __x) throw ();
+
+extern double asin (double __x) throw (); extern double __asin (double __x) throw ();
+
+extern double atan (double __x) throw (); extern double __atan (double __x) throw ();
+
+extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw ();
+
+
+extern double cos (double __x) throw (); extern double __cos (double __x) throw ();
+
+extern double sin (double __x) throw (); extern double __sin (double __x) throw ();
+
+extern double tan (double __x) throw (); extern double __tan (double __x) throw ();
+
+
+
+
+extern double cosh (double __x) throw (); extern double __cosh (double __x) throw ();
+
+extern double sinh (double __x) throw (); extern double __sinh (double __x) throw ();
+
+extern double tanh (double __x) throw (); extern double __tanh (double __x) throw ();
+
+
+
+
+extern void sincos (double __x, double *__sinx, double *__cosx) throw (); extern void __sincos (double __x, double *__sinx, double *__cosx) throw ()
+                                                           ;
+
+
+
+
+
+extern double acosh (double __x) throw (); extern double __acosh (double __x) throw ();
+
+extern double asinh (double __x) throw (); extern double __asinh (double __x) throw ();
+
+extern double atanh (double __x) throw (); extern double __atanh (double __x) throw ();
+
+
+
+
+
+
+
+extern double exp (double __x) throw (); extern double __exp (double __x) throw ();
+
+
+extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw ();
+
+
+extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw ();
+
+
+extern double log (double __x) throw (); extern double __log (double __x) throw ();
+
+
+extern double log10 (double __x) throw (); extern double __log10 (double __x) throw ();
+
+
+extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw ()
+     __attribute__ ((__nonnull__ (2)));
+
+
+
+
+extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw ();
+
+extern double pow10 (double __x) throw (); extern double __pow10 (double __x) throw ();
+
+
+
+
+
+extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw ();
+
+
+extern double log1p (double __x) throw (); extern double __log1p (double __x) throw ();
+
+
+extern double logb (double __x) throw (); extern double __logb (double __x) throw ();
+
+
+
+
+
+
+extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw ();
+
+
+extern double log2 (double __x) throw (); extern double __log2 (double __x) throw ();
+
+
+
+
+
+
+
+
+extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw ();
+
+
+extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw ();
+
+
+
+
+
+extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw ();
+
+
+
+
+
+
+extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw ();
+
+
+
+
+
+
+
+
+extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__));
+
+
+extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__));
+
+
+extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__));
+
+
+extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw ();
+
+
+
+
+extern int __isinf (double __value) throw () __attribute__ ((__const__));
+
+
+extern int __finite (double __value) throw () __attribute__ ((__const__));
+
+
+
+
+
+extern int isinf (double __value) throw () __attribute__ ((__const__));
+
+
+extern int finite (double __value) throw () __attribute__ ((__const__));
+
+
+extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw ();
+
+
+
+extern double significand (double __x) throw (); extern double __significand (double __x) throw ();
+
+
+
+
+
+extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__));
+
+
+
+
+
+
+extern double nan (__const char *__tagb) throw () __attribute__ ((__const__)); extern double __nan (__const char *__tagb) throw () __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnan (double __value) throw () __attribute__ ((__const__));
+
+
+
+extern int isnan (double __value) throw () __attribute__ ((__const__));
+
+
+extern double j0 (double) throw (); extern double __j0 (double) throw ();
+extern double j1 (double) throw (); extern double __j1 (double) throw ();
+extern double jn (int, double) throw (); extern double __jn (int, double) throw ();
+extern double y0 (double) throw (); extern double __y0 (double) throw ();
+extern double y1 (double) throw (); extern double __y1 (double) throw ();
+extern double yn (int, double) throw (); extern double __yn (int, double) throw ();
+
+
+
+
+
+
+extern double erf (double) throw (); extern double __erf (double) throw ();
+extern double erfc (double) throw (); extern double __erfc (double) throw ();
+extern double lgamma (double) throw (); extern double __lgamma (double) throw ();
+
+
+
+
+
+
+extern double tgamma (double) throw (); extern double __tgamma (double) throw ();
+
+
+
+
+
+extern double gamma (double) throw (); extern double __gamma (double) throw ();
+
+
+
+
+
+
+extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw ();
+
+
+
+
+
+
+
+extern double rint (double __x) throw (); extern double __rint (double __x) throw ();
+
+
+extern double nextafter (double __x, double __y) throw () __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) throw () __attribute__ ((__const__));
+
+extern double nexttoward (double __x, long double __y) throw () __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) throw () __attribute__ ((__const__));
+
+
+
+extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw ();
+
+
+
+extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw ();
+
+
+
+extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw ();
+
+
+
+
+extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw ();
+
+
+
+extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw ();
+
+
+
+extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__));
+
+
+
+extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__));
+
+
+
+
+extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw ();
+
+
+
+
+
+
+extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw ();
+extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw ();
+
+
+
+extern long int lround (double __x) throw (); extern long int __lround (double __x) throw ();
+extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw ();
+
+
+
+extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw ();
+
+
+extern double fmax (double __x, double __y) throw (); extern double __fmax (double __x, double __y) throw ();
+
+
+extern double fmin (double __x, double __y) throw (); extern double __fmin (double __x, double __y) throw ();
+
+
+
+extern int __fpclassify (double __value) throw ()
+     __attribute__ ((__const__));
+
+
+extern int __signbit (double __value) throw ()
+     __attribute__ ((__const__));
+
+
+
+extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw ();
+
+
+
+
+
+
+
+
+extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw ();
+# 72 "/usr/include/math.h" 2 3 4
+#undef _Mdouble_
+#undef _Mdouble_BEGIN_NAMESPACE
+#undef _Mdouble_END_NAMESPACE
+#undef __MATH_PRECNAME
+# 84 "/usr/include/math.h" 3 4
+#define _Mfloat_ float
+
+#define _Mdouble_ _Mfloat_
+
+#define __MATH_PRECNAME(name,r) name ##f ##r
+
+
+
+#define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_C99
+#define _Mdouble_END_NAMESPACE __END_NAMESPACE_C99
+# 1 "/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern float acosf (float __x) throw (); extern float __acosf (float __x) throw ();
+
+extern float asinf (float __x) throw (); extern float __asinf (float __x) throw ();
+
+extern float atanf (float __x) throw (); extern float __atanf (float __x) throw ();
+
+extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw ();
+
+
+extern float cosf (float __x) throw (); extern float __cosf (float __x) throw ();
+
+extern float sinf (float __x) throw (); extern float __sinf (float __x) throw ();
+
+extern float tanf (float __x) throw (); extern float __tanf (float __x) throw ();
+
+
+
+
+extern float coshf (float __x) throw (); extern float __coshf (float __x) throw ();
+
+extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw ();
+
+extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw ();
+
+
+
+
+extern void
+ sincosf
+# 82 "/usr/include/bits/mathcalls.h" 3 4
+ (float __x, float *__sinx, float *__cosx) throw (); extern void
+ __sincosf
+# 82 "/usr/include/bits/mathcalls.h" 3 4
+ (float __x, float *__sinx, float *__cosx) throw ()
+                                                           ;
+
+
+
+
+
+extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw ();
+
+extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw ();
+
+extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw ();
+
+
+
+
+
+
+
+extern float expf (float __x) throw (); extern float __expf (float __x) throw ();
+
+
+extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw ();
+
+
+extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw ();
+
+
+extern float logf (float __x) throw (); extern float __logf (float __x) throw ();
+
+
+extern float log10f (float __x) throw (); extern float __log10f (float __x) throw ();
+
+
+extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw ()
+     __attribute__ ((__nonnull__ (2)));
+
+
+
+
+extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw ();
+
+extern float pow10f (float __x) throw (); extern float __pow10f (float __x) throw ();
+
+
+
+
+
+extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw ();
+
+
+extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw ();
+
+
+extern float logbf (float __x) throw (); extern float __logbf (float __x) throw ();
+
+
+
+
+
+
+extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw ();
+
+
+extern float log2f (float __x) throw (); extern float __log2f (float __x) throw ();
+
+
+
+
+
+
+
+
+extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw ();
+
+
+extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw ();
+
+
+
+
+
+extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw ();
+
+
+
+
+
+
+extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw ();
+
+
+
+
+
+
+
+
+extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__));
+
+
+extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__));
+
+
+extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__));
+
+
+extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw ();
+
+
+
+
+extern int __isinff (float __value) throw () __attribute__ ((__const__));
+
+
+extern int __finitef (float __value) throw () __attribute__ ((__const__));
+
+
+
+
+
+extern int isinff (float __value) throw () __attribute__ ((__const__));
+
+
+extern int finitef (float __value) throw () __attribute__ ((__const__));
+
+
+extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw ();
+
+
+
+extern float significandf (float __x) throw (); extern float __significandf (float __x) throw ();
+
+
+
+
+
+extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__));
+
+
+
+
+
+
+extern float nanf (__const char *__tagb) throw () __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) throw () __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnanf (float __value) throw () __attribute__ ((__const__));
+
+
+
+extern int isnanf (float __value) throw () __attribute__ ((__const__));
+
+
+extern float j0f (float) throw (); extern float __j0f (float) throw ();
+extern float j1f (float) throw (); extern float __j1f (float) throw ();
+extern float jnf (int, float) throw (); extern float __jnf (int, float) throw ();
+extern float y0f (float) throw (); extern float __y0f (float) throw ();
+extern float y1f (float) throw (); extern float __y1f (float) throw ();
+extern float ynf (int, float) throw (); extern float __ynf (int, float) throw ();
+
+
+
+
+
+
+extern float erff (float) throw (); extern float __erff (float) throw ();
+extern float erfcf (float) throw (); extern float __erfcf (float) throw ();
+extern float lgammaf (float) throw (); extern float __lgammaf (float) throw ();
+
+
+
+
+
+
+extern float tgammaf (float) throw (); extern float __tgammaf (float) throw ();
+
+
+
+
+
+extern float gammaf (float) throw (); extern float __gammaf (float) throw ();
+
+
+
+
+
+
+extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw ();
+
+
+
+
+
+
+
+extern float rintf (float __x) throw (); extern float __rintf (float __x) throw ();
+
+
+extern float nextafterf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) throw () __attribute__ ((__const__));
+
+extern float nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__));
+
+
+
+extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw ();
+
+
+
+extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw ();
+
+
+
+extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw ();
+
+
+
+
+extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw ();
+
+
+
+extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw ();
+
+
+
+extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__));
+
+
+
+extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__));
+
+
+
+
+extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw ();
+
+
+
+
+
+
+extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw ();
+extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw ();
+
+
+
+extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw ();
+extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw ();
+
+
+
+extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw ();
+
+
+extern float fmaxf (float __x, float __y) throw (); extern float __fmaxf (float __x, float __y) throw ();
+
+
+extern float fminf (float __x, float __y) throw (); extern float __fminf (float __x, float __y) throw ();
+
+
+
+extern int __fpclassifyf (float __value) throw ()
+     __attribute__ ((__const__));
+
+
+extern int __signbitf (float __value) throw ()
+     __attribute__ ((__const__));
+
+
+
+extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw ();
+
+
+
+
+
+
+
+
+extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw ();
+# 95 "/usr/include/math.h" 2 3 4
+#undef _Mdouble_
+#undef _Mdouble_BEGIN_NAMESPACE
+#undef _Mdouble_END_NAMESPACE
+#undef __MATH_PRECNAME
+# 132 "/usr/include/math.h" 3 4
+#define _Mlong_double_ long double
+
+#define _Mdouble_ _Mlong_double_
+
+#define __MATH_PRECNAME(name,r) name ##l ##r
+
+
+
+#define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_C99
+#define _Mdouble_END_NAMESPACE __END_NAMESPACE_C99
+#define __MATH_DECLARE_LDOUBLE 1
+# 1 "/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern long double acosl (long double __x) throw (); extern long double __acosl (long double __x) throw ();
+
+extern long double asinl (long double __x) throw (); extern long double __asinl (long double __x) throw ();
+
+extern long double atanl (long double __x) throw (); extern long double __atanl (long double __x) throw ();
+
+extern long double atan2l (long double __y, long double __x) throw (); extern long double __atan2l (long double __y, long double __x) throw ();
+
+
+extern long double cosl (long double __x) throw (); extern long double __cosl (long double __x) throw ();
+
+extern long double sinl (long double __x) throw (); extern long double __sinl (long double __x) throw ();
+
+extern long double tanl (long double __x) throw (); extern long double __tanl (long double __x) throw ();
+
+
+
+
+extern long double coshl (long double __x) throw (); extern long double __coshl (long double __x) throw ();
+
+extern long double sinhl (long double __x) throw (); extern long double __sinhl (long double __x) throw ();
+
+extern long double tanhl (long double __x) throw (); extern long double __tanhl (long double __x) throw ();
+
+
+
+
+extern void
+ sincosl
+# 82 "/usr/include/bits/mathcalls.h" 3 4
+ (long double __x, long double *__sinx, long double *__cosx) throw (); extern void
+ __sincosl
+# 82 "/usr/include/bits/mathcalls.h" 3 4
+ (long double __x, long double *__sinx, long double *__cosx) throw ()
+                                                           ;
+
+
+
+
+
+extern long double acoshl (long double __x) throw (); extern long double __acoshl (long double __x) throw ();
+
+extern long double asinhl (long double __x) throw (); extern long double __asinhl (long double __x) throw ();
+
+extern long double atanhl (long double __x) throw (); extern long double __atanhl (long double __x) throw ();
+
+
+
+
+
+
+
+extern long double expl (long double __x) throw (); extern long double __expl (long double __x) throw ();
+
+
+extern long double frexpl (long double __x, int *__exponent) throw (); extern long double __frexpl (long double __x, int *__exponent) throw ();
+
+
+extern long double ldexpl (long double __x, int __exponent) throw (); extern long double __ldexpl (long double __x, int __exponent) throw ();
+
+
+extern long double logl (long double __x) throw (); extern long double __logl (long double __x) throw ();
+
+
+extern long double log10l (long double __x) throw (); extern long double __log10l (long double __x) throw ();
+
+
+extern long double modfl (long double __x, long double *__iptr) throw (); extern long double __modfl (long double __x, long double *__iptr) throw ()
+     __attribute__ ((__nonnull__ (2)));
+
+
+
+
+extern long double exp10l (long double __x) throw (); extern long double __exp10l (long double __x) throw ();
+
+extern long double pow10l (long double __x) throw (); extern long double __pow10l (long double __x) throw ();
+
+
+
+
+
+extern long double expm1l (long double __x) throw (); extern long double __expm1l (long double __x) throw ();
+
+
+extern long double log1pl (long double __x) throw (); extern long double __log1pl (long double __x) throw ();
+
+
+extern long double logbl (long double __x) throw (); extern long double __logbl (long double __x) throw ();
+
+
+
+
+
+
+extern long double exp2l (long double __x) throw (); extern long double __exp2l (long double __x) throw ();
+
+
+extern long double log2l (long double __x) throw (); extern long double __log2l (long double __x) throw ();
+
+
+
+
+
+
+
+
+extern long double powl (long double __x, long double __y) throw (); extern long double __powl (long double __x, long double __y) throw ();
+
+
+extern long double sqrtl (long double __x) throw (); extern long double __sqrtl (long double __x) throw ();
+
+
+
+
+
+extern long double hypotl (long double __x, long double __y) throw (); extern long double __hypotl (long double __x, long double __y) throw ();
+
+
+
+
+
+
+extern long double cbrtl (long double __x) throw (); extern long double __cbrtl (long double __x) throw ();
+
+
+
+
+
+
+
+
+extern long double ceill (long double __x) throw () __attribute__ ((__const__)); extern long double __ceill (long double __x) throw () __attribute__ ((__const__));
+
+
+extern long double fabsl (long double __x) throw () __attribute__ ((__const__)); extern long double __fabsl (long double __x) throw () __attribute__ ((__const__));
+
+
+extern long double floorl (long double __x) throw () __attribute__ ((__const__)); extern long double __floorl (long double __x) throw () __attribute__ ((__const__));
+
+
+extern long double fmodl (long double __x, long double __y) throw (); extern long double __fmodl (long double __x, long double __y) throw ();
+
+
+
+
+extern int __isinfl (long double __value) throw () __attribute__ ((__const__));
+
+
+extern int __finitel (long double __value) throw () __attribute__ ((__const__));
+
+
+
+
+
+extern int isinfl (long double __value) throw () __attribute__ ((__const__));
+
+
+extern int finitel (long double __value) throw () __attribute__ ((__const__));
+
+
+extern long double dreml (long double __x, long double __y) throw (); extern long double __dreml (long double __x, long double __y) throw ();
+
+
+
+extern long double significandl (long double __x) throw (); extern long double __significandl (long double __x) throw ();
+
+
+
+
+
+extern long double copysignl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) throw () __attribute__ ((__const__));
+
+
+
+
+
+
+extern long double nanl (__const char *__tagb) throw () __attribute__ ((__const__)); extern long double __nanl (__const char *__tagb) throw () __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnanl (long double __value) throw () __attribute__ ((__const__));
+
+
+
+extern int isnanl (long double __value) throw () __attribute__ ((__const__));
+
+
+extern long double j0l (long double) throw (); extern long double __j0l (long double) throw ();
+extern long double j1l (long double) throw (); extern long double __j1l (long double) throw ();
+extern long double jnl (int, long double) throw (); extern long double __jnl (int, long double) throw ();
+extern long double y0l (long double) throw (); extern long double __y0l (long double) throw ();
+extern long double y1l (long double) throw (); extern long double __y1l (long double) throw ();
+extern long double ynl (int, long double) throw (); extern long double __ynl (int, long double) throw ();
+
+
+
+
+
+
+extern long double erfl (long double) throw (); extern long double __erfl (long double) throw ();
+extern long double erfcl (long double) throw (); extern long double __erfcl (long double) throw ();
+extern long double lgammal (long double) throw (); extern long double __lgammal (long double) throw ();
+
+
+
+
+
+
+extern long double tgammal (long double) throw (); extern long double __tgammal (long double) throw ();
+
+
+
+
+
+extern long double gammal (long double) throw (); extern long double __gammal (long double) throw ();
+
+
+
+
+
+
+extern long double lgammal_r (long double, int *__signgamp) throw (); extern long double __lgammal_r (long double, int *__signgamp) throw ();
+
+
+
+
+
+
+
+extern long double rintl (long double __x) throw (); extern long double __rintl (long double __x) throw ();
+
+
+extern long double nextafterl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) throw () __attribute__ ((__const__));
+
+extern long double nexttowardl (long double __x, long double __y) throw () __attribute__ ((__const__)); extern long double __nexttowardl (long double __x, long double __y) throw () __attribute__ ((__const__));
+
+
+
+extern long double remainderl (long double __x, long double __y) throw (); extern long double __remainderl (long double __x, long double __y) throw ();
+
+
+
+extern long double scalbnl (long double __x, int __n) throw (); extern long double __scalbnl (long double __x, int __n) throw ();
+
+
+
+extern int ilogbl (long double __x) throw (); extern int __ilogbl (long double __x) throw ();
+
+
+
+
+extern long double scalblnl (long double __x, long int __n) throw (); extern long double __scalblnl (long double __x, long int __n) throw ();
+
+
+
+extern long double nearbyintl (long double __x) throw (); extern long double __nearbyintl (long double __x) throw ();
+
+
+
+extern long double roundl (long double __x) throw () __attribute__ ((__const__)); extern long double __roundl (long double __x) throw () __attribute__ ((__const__));
+
+
+
+extern long double truncl (long double __x) throw () __attribute__ ((__const__)); extern long double __truncl (long double __x) throw () __attribute__ ((__const__));
+
+
+
+
+extern long double remquol (long double __x, long double __y, int *__quo) throw (); extern long double __remquol (long double __x, long double __y, int *__quo) throw ();
+
+
+
+
+
+
+extern long int lrintl (long double __x) throw (); extern long int __lrintl (long double __x) throw ();
+extern long long int llrintl (long double __x) throw (); extern long long int __llrintl (long double __x) throw ();
+
+
+
+extern long int lroundl (long double __x) throw (); extern long int __lroundl (long double __x) throw ();
+extern long long int llroundl (long double __x) throw (); extern long long int __llroundl (long double __x) throw ();
+
+
+
+extern long double fdiml (long double __x, long double __y) throw (); extern long double __fdiml (long double __x, long double __y) throw ();
+
+
+extern long double fmaxl (long double __x, long double __y) throw (); extern long double __fmaxl (long double __x, long double __y) throw ();
+
+
+extern long double fminl (long double __x, long double __y) throw (); extern long double __fminl (long double __x, long double __y) throw ();
+
+
+
+extern int __fpclassifyl (long double __value) throw ()
+     __attribute__ ((__const__));
+
+
+extern int __signbitl (long double __value) throw ()
+     __attribute__ ((__const__));
+
+
+
+extern long double fmal (long double __x, long double __y, long double __z) throw (); extern long double __fmal (long double __x, long double __y, long double __z) throw ();
+
+
+
+
+
+
+
+
+extern long double scalbl (long double __x, long double __n) throw (); extern long double __scalbl (long double __x, long double __n) throw ();
+# 144 "/usr/include/math.h" 2 3 4
+#undef _Mdouble_
+#undef _Mdouble_BEGIN_NAMESPACE
+#undef _Mdouble_END_NAMESPACE
+#undef __MATH_PRECNAME
+
+
+
+
+#undef __MATHDECL_1
+#undef __MATHDECL
+#undef __MATHCALL
+
+
+
+
+extern int signgam;
+# 200 "/usr/include/math.h" 3 4
+enum
+  {
+    FP_NAN,
+#define FP_NAN FP_NAN
+    FP_INFINITE,
+#define FP_INFINITE FP_INFINITE
+    FP_ZERO,
+#define FP_ZERO FP_ZERO
+    FP_SUBNORMAL,
+#define FP_SUBNORMAL FP_SUBNORMAL
+    FP_NORMAL
+#define FP_NORMAL FP_NORMAL
+  };
+
+
+
+#define fpclassify(x) (sizeof (x) == sizeof (float) ? __fpclassifyf (x) : __fpclassify (x))
+# 228 "/usr/include/math.h" 3 4
+#define signbit(x) (sizeof (x) == sizeof (float) ? __signbitf (x) : __signbit (x))
+# 240 "/usr/include/math.h" 3 4
+#define isfinite(x) (sizeof (x) == sizeof (float) ? __finitef (x) : __finite (x))
+# 251 "/usr/include/math.h" 3 4
+#define isnormal(x) (fpclassify (x) == FP_NORMAL)
+
+
+
+
+#define isnan(x) (sizeof (x) == sizeof (float) ? __isnanf (x) : __isnan (x))
+# 268 "/usr/include/math.h" 3 4
+#define isinf(x) (sizeof (x) == sizeof (float) ? __isinff (x) : __isinf (x))
+# 279 "/usr/include/math.h" 3 4
+#define MATH_ERRNO 1
+#define MATH_ERREXCEPT 2
+
+
+
+
+
+#define math_errhandling (MATH_ERRNO | MATH_ERREXCEPT)
+
+
+
+
+
+
+typedef enum
+{
+  _IEEE_ = -1,
+  _SVID_,
+  _XOPEN_,
+  _POSIX_,
+  _ISOC_
+} _LIB_VERSION_TYPE;
+
+
+
+
+extern _LIB_VERSION_TYPE _LIB_VERSION;
+# 316 "/usr/include/math.h" 3 4
+struct __exception
+
+
+
+  {
+    int type;
+    char *name;
+    double arg1;
+    double arg2;
+    double retval;
+  };
+
+
+extern int matherr (struct __exception *__exc) throw ();
+
+
+
+
+#define X_TLOSS 1.41484755040568800000e+16
+
+
+#define DOMAIN 1
+#define SING 2
+#define OVERFLOW 3
+#define UNDERFLOW 4
+#define TLOSS 5
+#define PLOSS 6
+
+
+#define HUGE 3.40282347e+38F
+# 359 "/usr/include/math.h" 3 4
+#define M_E 2.7182818284590452354
+#define M_LOG2E 1.4426950408889634074
+#define M_LOG10E 0.43429448190325182765
+#define M_LN2 0.69314718055994530942
+#define M_LN10 2.30258509299404568402
+#define M_PI 3.14159265358979323846
+#define M_PI_2 1.57079632679489661923
+#define M_PI_4 0.78539816339744830962
+#define M_1_PI 0.31830988618379067154
+#define M_2_PI 0.63661977236758134308
+#define M_2_SQRTPI 1.12837916709551257390
+#define M_SQRT2 1.41421356237309504880
+#define M_SQRT1_2 0.70710678118654752440
+
+
+
+
+
+
+#define M_El 2.7182818284590452353602874713526625L
+#define M_LOG2El 1.4426950408889634073599246810018921L
+#define M_LOG10El 0.4342944819032518276511289189166051L
+#define M_LN2l 0.6931471805599453094172321214581766L
+#define M_LN10l 2.3025850929940456840179914546843642L
+#define M_PIl 3.1415926535897932384626433832795029L
+#define M_PI_2l 1.5707963267948966192313216916397514L
+#define M_PI_4l 0.7853981633974483096156608458198757L
+#define M_1_PIl 0.3183098861837906715377675267450287L
+#define M_2_PIl 0.6366197723675813430755350534900574L
+#define M_2_SQRTPIl 1.1283791670955125738961589031215452L
+#define M_SQRT2l 1.4142135623730950488016887242096981L
+#define M_SQRT1_2l 0.7071067811865475244008443621048490L
+# 408 "/usr/include/math.h" 3 4
+#define isgreater(x,y) __builtin_isgreater(x, y)
+#define isgreaterequal(x,y) __builtin_isgreaterequal(x, y)
+#define isless(x,y) __builtin_isless(x, y)
+#define islessequal(x,y) __builtin_islessequal(x, y)
+#define islessgreater(x,y) __builtin_islessgreater(x, y)
+#define isunordered(u,v) __builtin_isunordered(u, v)
+
+
+
+
+# 1 "/usr/include/bits/mathinline.h" 1 3 4
+# 419 "/usr/include/math.h" 2 3 4
+# 480 "/usr/include/math.h" 3 4
+}
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/NumericConversions.h" 2
+
+
+extern double js_NaN;
+
+namespace js {
+
+namespace detail {
+
+union DoublePun {
+    struct {
+
+        uint32_t lo, hi;
+
+
+
+    } s;
+    uint64_t u64;
+    double d;
+};
+
+}
+
+
+inline int32_t
+ToInt32(double d)
+{
+# 114 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/NumericConversions.h"
+    int32_t i;
+    uint32_t tmp0;
+    uint32_t tmp1;
+    uint32_t tmp2;
+    asm (
+# 131 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/NumericConversions.h"
+"   mov     %1, %R4, LSR #20\n"
+"   bic     %1, %1, #(1 << 11)\n"
+
+
+
+"   orr     %R4, %R4, #(1 << 20)\n"
+# 153 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/NumericConversions.h"
+"   sub     %1, %1, #0xff\n"
+"   subs    %1, %1, #0x300\n"
+"   bmi     8f\n"
+
+
+
+
+
+"   subs    %3, %1, #52\n"
+"   bmi     1f\n"
+
+
+
+
+
+
+
+"   bic     %2, %3, #0xff\n"
+"   orr     %3, %3, %2, LSR #3\n"
+
+
+"   mov     %Q4, %Q4, LSL %3\n"
+"   b       2f\n"
+"1:\n"
+
+
+"   rsb     %3, %1, #52\n"
+"   mov     %Q4, %Q4, LSR %3\n"
+
+
+
+
+
+"2:\n"
+
+
+
+
+
+
+
+"   subs    %3, %1, #31\n"
+"   mov     %1, %R4, LSL #11\n"
+"   bmi     3f\n"
+
+
+
+"   bic     %2, %3, #0xff\n"
+"   orr     %3, %3, %2, LSR #3\n"
+
+"   mov     %2, %1, LSL %3\n"
+"   b       4f\n"
+"3:\n"
+
+
+"   rsb     %3, %3, #0\n"
+"   mov     %2, %1, LSR %3\n"
+
+
+
+
+
+"4:\n"
+
+"   orr     %Q4, %Q4, %2\n"
+
+
+
+"   eor     %Q4, %Q4, %R4, ASR #31\n"
+"   add     %0, %Q4, %R4, LSR #31\n"
+"   b       9f\n"
+"8:\n"
+
+
+"   mov     %0, #0\n"
+"9:\n"
+    : "=r" (i), "=&r" (tmp0), "=&r" (tmp1), "=&r" (tmp2), "=&r" (d)
+    : "4" (d)
+    : "cc"
+        );
+    return i;
+# 252 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/NumericConversions.h"
+}
+
+
+inline uint32_t
+ToUint32(double d)
+{
+    return uint32_t(ToInt32(d));
+}
+
+
+inline double
+ToInteger(double d)
+{
+    if (d == 0)
+        return d;
+
+    if (!MOZ_DOUBLE_IS_FINITE(d)) {
+        if (MOZ_DOUBLE_IS_NaN(d))
+            return 0;
+        return d;
+    }
+
+    bool neg = (d < 0);
+    d = floor(neg ? -d : d);
+    return neg ? -d : d;
+}
+
+}
+# 20 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h" 2
+
+namespace js {
+
+class Debugger;
+class ObjectImpl;
+
+class AutoPropDescArrayRooter;
+
+static inline PropertyOp
+CastAsPropertyOp(JSObject *object)
+{
+    return (__extension__ (PropertyOp) (size_t) (object));
+}
+
+static inline StrictPropertyOp
+CastAsStrictPropertyOp(JSObject *object)
+{
+    return (__extension__ (StrictPropertyOp) (size_t) (object));
+}
+
+
+
+
+
+struct PropDesc {
+  private:
+
+
+
+
+    Value pd_;
+
+    Value value_, get_, set_;
+
+
+    uint8_t attrs;
+
+
+    bool hasGet_ : 1;
+    bool hasSet_ : 1;
+    bool hasValue_ : 1;
+    bool hasWritable_ : 1;
+    bool hasEnumerable_ : 1;
+    bool hasConfigurable_ : 1;
+
+
+    bool isUndefined_ : 1;
+
+    PropDesc(const Value &v)
+      : pd_(UndefinedValue()),
+        value_(v),
+        get_(UndefinedValue()), set_(UndefinedValue()),
+        attrs(0),
+        hasGet_(false), hasSet_(false),
+        hasValue_(true), hasWritable_(false), hasEnumerable_(false), hasConfigurable_(false),
+        isUndefined_(false)
+    {
+    }
+
+  public:
+    friend class AutoPropDescArrayRooter;
+    friend void JS::AutoGCRooter::trace(JSTracer *trc);
+
+    enum Enumerability { Enumerable = true, NonEnumerable = false };
+    enum Configurability { Configurable = true, NonConfigurable = false };
+    enum Writability { Writable = true, NonWritable = false };
+
+    PropDesc();
+
+    static PropDesc undefined() { return PropDesc(); }
+    static PropDesc valueOnly(const Value &v) { return PropDesc(v); }
+
+    PropDesc(const Value &v, Writability writable,
+             Enumerability enumerable, Configurability configurable)
+      : pd_(UndefinedValue()),
+        value_(v),
+        get_(UndefinedValue()), set_(UndefinedValue()),
+        attrs((writable ? 0 : 0x02) |
+              (enumerable ? 0x01 : 0) |
+              (configurable ? 0 : 0x04)),
+        hasGet_(false), hasSet_(false),
+        hasValue_(true), hasWritable_(true), hasEnumerable_(true), hasConfigurable_(true),
+        isUndefined_(false)
+    {}
+# 115 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+    bool initialize(JSContext* cx, const Value &v, bool checkAccessors = true);
+# 126 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+    void initFromPropertyDescriptor(const PropertyDescriptor &desc);
+    bool makeObject(JSContext *cx);
+
+    void setUndefined() { isUndefined_ = true; }
+
+    bool isUndefined() const { return isUndefined_; }
+
+    bool hasGet() const { do { } while(0); return hasGet_; }
+    bool hasSet() const { do { } while(0); return hasSet_; }
+    bool hasValue() const { do { } while(0); return hasValue_; }
+    bool hasWritable() const { do { } while(0); return hasWritable_; }
+    bool hasEnumerable() const { do { } while(0); return hasEnumerable_; }
+    bool hasConfigurable() const { do { } while(0); return hasConfigurable_; }
+
+    Value pd() const { do { } while(0); return pd_; }
+    void clearPd() { pd_ = UndefinedValue(); }
+
+    uint8_t attributes() const { do { } while(0); return attrs; }
+
+
+    bool isAccessorDescriptor() const {
+        return !isUndefined() && (hasGet() || hasSet());
+    }
+
+
+    bool isDataDescriptor() const {
+        return !isUndefined() && (hasValue() || hasWritable());
+    }
+
+
+    bool isGenericDescriptor() const {
+        return !isUndefined() && !isAccessorDescriptor() && !isDataDescriptor();
+    }
+
+    bool configurable() const {
+        do { } while(0);
+        do { } while(0);
+        return (attrs & 0x04) == 0;
+    }
+
+    bool enumerable() const {
+        do { } while(0);
+        do { } while(0);
+        return (attrs & 0x01) != 0;
+    }
+
+    bool writable() const {
+        do { } while(0);
+        do { } while(0);
+        return (attrs & 0x02) == 0;
+    }
+
+    const Value & value() const {
+        do { } while(0);
+        return value_;
+    }
+
+    JSObject * getterObject() const {
+        do { } while(0);
+        do { } while(0);
+        return get_.isUndefined() ? __null : &get_.toObject();
+    }
+    JSObject * setterObject() const {
+        do { } while(0);
+        do { } while(0);
+        return set_.isUndefined() ? __null : &set_.toObject();
+    }
+
+    const Value & getterValue() const {
+        do { } while(0);
+        do { } while(0);
+        return get_;
+    }
+    const Value & setterValue() const {
+        do { } while(0);
+        do { } while(0);
+        return set_;
+    }
+
+
+
+
+
+    PropertyOp getter() const {
+        return CastAsPropertyOp(get_.isUndefined() ? __null : &get_.toObject());
+    }
+    StrictPropertyOp setter() const {
+        return CastAsStrictPropertyOp(set_.isUndefined() ? __null : &set_.toObject());
+    }
+
+
+
+
+
+
+    bool checkGetter(JSContext *cx);
+    bool checkSetter(JSContext *cx);
+
+    bool unwrapDebuggerObjectsInto(JSContext *cx, Debugger *dbg, JSObject *obj,
+                                   PropDesc *unwrapped) const;
+
+    bool wrapInto(JSContext *cx, JSObject *obj, const jsid &id, jsid *wrappedId,
+                  PropDesc *wrappedDesc) const;
+
+    class AutoRooter : private AutoGCRooter
+    {
+      public:
+        explicit AutoRooter(JSContext *cx, PropDesc *pd_
+                            )
+          : AutoGCRooter(cx, PROPDESC), pd(pd_), skip(cx, pd_)
+        {
+            do { } while (0);
+        }
+
+        friend void AutoGCRooter::trace(JSTracer *trc);
+
+      private:
+        PropDesc *pd;
+        SkipRoot skip;
+       
+     };
+};
+
+class DenseElementsHeader;
+class SparseElementsHeader;
+class Uint8ElementsHeader;
+class Int8ElementsHeader;
+class Uint16ElementsHeader;
+class Int16ElementsHeader;
+class Uint32ElementsHeader;
+class Int32ElementsHeader;
+class Uint8ClampedElementsHeader;
+class Float32ElementsHeader;
+class Float64ElementsHeader;
+class Uint8ClampedElementsHeader;
+class ArrayBufferElementsHeader;
+
+enum ElementsKind {
+    DenseElements,
+    SparseElements,
+
+    ArrayBufferElements,
+
+
+    Uint8Elements,
+    Int8Elements,
+    Uint16Elements,
+    Int16Elements,
+    Uint32Elements,
+    Int32Elements,
+    Uint8ClampedElements,
+    Float32Elements,
+    Float64Elements
+};
+
+class ElementsHeader
+{
+  protected:
+    uint32_t type;
+    uint32_t length;
+
+    union {
+        class {
+            friend class DenseElementsHeader;
+            uint32_t initializedLength;
+            uint32_t capacity;
+        } dense;
+        class {
+            friend class SparseElementsHeader;
+            Shape * shape;
+        } sparse;
+    };
+
+    void staticAsserts() {
+        typedef int
+ moz_static_assert47
+# 300 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+        [(sizeof(ElementsHeader) == ValuesPerHeader * sizeof(Value)) ? 1 : -1]
+                                                                           ;
+    }
+
+  public:
+    ElementsKind kind() const {
+        do { } while(0);
+        return ElementsKind(type);
+    }
+
+    inline bool isDenseElements() const { return kind() == DenseElements; }
+    inline bool isSparseElements() const { return kind() == SparseElements; }
+    inline bool isArrayBufferElements() const { return kind() == ArrayBufferElements; }
+    inline bool isUint8Elements() const { return kind() == Uint8Elements; }
+    inline bool isInt8Elements() const { return kind() == Int8Elements; }
+    inline bool isUint16Elements() const { return kind() == Uint16Elements; }
+    inline bool isInt16Elements() const { return kind() == Int16Elements; }
+    inline bool isUint32Elements() const { return kind() == Uint32Elements; }
+    inline bool isInt32Elements() const { return kind() == Int32Elements; }
+    inline bool isUint8ClampedElements() const { return kind() == Uint8ClampedElements; }
+    inline bool isFloat32Elements() const { return kind() == Float32Elements; }
+    inline bool isFloat64Elements() const { return kind() == Float64Elements; }
+
+    inline DenseElementsHeader & asDenseElements();
+    inline SparseElementsHeader & asSparseElements();
+    inline ArrayBufferElementsHeader & asArrayBufferElements();
+    inline Uint8ElementsHeader & asUint8Elements();
+    inline Int8ElementsHeader & asInt8Elements();
+    inline Uint16ElementsHeader & asUint16Elements();
+    inline Int16ElementsHeader & asInt16Elements();
+    inline Uint32ElementsHeader & asUint32Elements();
+    inline Int32ElementsHeader & asInt32Elements();
+    inline Uint8ClampedElementsHeader & asUint8ClampedElements();
+    inline Float32ElementsHeader & asFloat32Elements();
+    inline Float64ElementsHeader & asFloat64Elements();
+
+    static ElementsHeader * fromElements(HeapSlot *elems) {
+        return reinterpret_cast<ElementsHeader *>(uintptr_t(elems) - sizeof(ElementsHeader));
+    }
+
+    static const size_t ValuesPerHeader = 2;
+};
+
+class DenseElementsHeader : public ElementsHeader
+{
+  public:
+    uint32_t capacity() const {
+        do { } while(0);
+        return dense.capacity;
+    }
+
+    uint32_t initializedLength() const {
+        do { } while(0);
+        return dense.initializedLength;
+    }
+
+    uint32_t length() const {
+        do { } while(0);
+        return ElementsHeader::length;
+    }
+
+    bool getOwnElement(JSContext *cx, ObjectImpl *obj, uint32_t index, PropDesc *desc);
+
+    bool defineElement(JSContext *cx, ObjectImpl *obj, uint32_t index, const PropDesc &desc,
+                       bool shouldThrow, bool *succeeded);
+
+    bool setElement(JSContext *cx, ObjectImpl *obj, ObjectImpl *receiver, uint32_t index,
+                    const Value &v, bool *succeeded);
+
+  private:
+    inline bool isDenseElements() const ;
+    inline DenseElementsHeader & asDenseElements() ;
+
+    DenseElementsHeader(const DenseElementsHeader &other) ;
+    void operator=(const DenseElementsHeader &other) ;
+};
+
+class SparseElementsHeader : public ElementsHeader
+{
+  public:
+    Shape * shape() {
+        do { } while(0);
+        return sparse.shape;
+    }
+
+    uint32_t length() const {
+        do { } while(0);
+        return ElementsHeader::length;
+    }
+
+    bool getOwnElement(JSContext *cx, ObjectImpl *obj, uint32_t index, PropDesc *desc);
+
+    bool defineElement(JSContext *cx, ObjectImpl *obj, uint32_t index, const PropDesc &desc,
+                       bool shouldThrow, bool *succeeded);
+
+    bool setElement(JSContext *cx, ObjectImpl *obj, ObjectImpl *receiver, uint32_t index,
+                    const Value &v, bool *succeeded);
+
+  private:
+    inline bool isSparseElements() const ;
+    inline SparseElementsHeader & asSparseElements() ;
+
+    SparseElementsHeader(const SparseElementsHeader &other) ;
+    void operator=(const SparseElementsHeader &other) ;
+};
+
+extern uint32_t
+ClampDoubleToUint8(const double x);
+
+struct uint8_clamped {
+    uint8_t val;
+
+    uint8_clamped() { }
+    uint8_clamped(const uint8_clamped& other) : val(other.val) { }
+
+
+    uint8_clamped(uint8_t x) { *this = x; }
+    uint8_clamped(uint16_t x) { *this = x; }
+    uint8_clamped(uint32_t x) { *this = x; }
+    uint8_clamped(int8_t x) { *this = x; }
+    uint8_clamped(int16_t x) { *this = x; }
+    uint8_clamped(int32_t x) { *this = x; }
+    uint8_clamped(double x) { *this = x; }
+
+    uint8_clamped& operator=(const uint8_clamped& x) {
+        val = x.val;
+        return *this;
+    }
+
+    uint8_clamped& operator=(uint8_t x) {
+        val = x;
+        return *this;
+    }
+
+    uint8_clamped& operator=(uint16_t x) {
+        val = (x > 255) ? 255 : uint8_t(x);
+        return *this;
+    }
+
+    uint8_clamped& operator=(uint32_t x) {
+        val = (x > 255) ? 255 : uint8_t(x);
+        return *this;
+    }
+
+    uint8_clamped& operator=(int8_t x) {
+        val = (x >= 0) ? uint8_t(x) : 0;
+        return *this;
+    }
+
+    uint8_clamped& operator=(int16_t x) {
+        val = (x >= 0)
+              ? ((x < 255)
+                 ? uint8_t(x)
+                 : 255)
+              : 0;
+        return *this;
+    }
+
+    uint8_clamped& operator=(int32_t x) {
+        val = (x >= 0)
+              ? ((x < 255)
+                 ? uint8_t(x)
+                 : 255)
+              : 0;
+        return *this;
+    }
+
+    uint8_clamped& operator=(const double x) {
+        val = uint8_t(ClampDoubleToUint8(x));
+        return *this;
+    }
+
+    operator uint8_t() const {
+        return val;
+    }
+
+    void staticAsserts() {
+        typedef int
+ moz_static_assert48
+# 477 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+        [(sizeof(uint8_clamped) == 1) ? 1 : -1]
+                                                                                 ;
+    }
+};
+
+
+template<typename T> static inline const bool TypeIsFloatingPoint() { return false; }
+template<> inline const bool TypeIsFloatingPoint<float>() { return true; }
+template<> inline const bool TypeIsFloatingPoint<double>() { return true; }
+
+template<typename T> static inline const bool TypeIsUnsigned() { return false; }
+template<> inline const bool TypeIsUnsigned<uint8_t>() { return true; }
+template<> inline const bool TypeIsUnsigned<uint16_t>() { return true; }
+template<> inline const bool TypeIsUnsigned<uint32_t>() { return true; }
+
+template <typename T>
+class TypedElementsHeader : public ElementsHeader
+{
+    T getElement(uint32_t index) {
+        do { } while(0);
+        return reinterpret_cast<T *>(this + 1)[index];
+    }
+
+    inline void assign(uint32_t index, double d);
+
+    void setElement(uint32_t index, T value) {
+        do { } while(0);
+        reinterpret_cast<T *>(this + 1)[index] = value;
+    }
+
+  public:
+    uint32_t length() const {
+        do { } while(0);
+        do { } while(0);
+        return ElementsHeader::length;
+    }
+
+    bool getOwnElement(JSContext *cx, ObjectImpl *obj, uint32_t index, PropDesc *desc);
+
+    bool defineElement(JSContext *cx, ObjectImpl *obj, uint32_t index, const PropDesc &desc,
+                       bool shouldThrow, bool *succeeded);
+
+    bool setElement(JSContext *cx, ObjectImpl *obj, ObjectImpl *receiver, uint32_t index,
+                    const Value &v, bool *succeeded);
+
+  private:
+    TypedElementsHeader(const TypedElementsHeader &other) ;
+    void operator=(const TypedElementsHeader &other) ;
+};
+
+template<typename T> inline void
+TypedElementsHeader<T>::assign(uint32_t index, double d)
+{
+    __builtin_unreachable();
+}
+
+template<> inline void
+TypedElementsHeader<uint8_clamped>::assign(uint32_t index, double d)
+{
+    double i = ToInteger(d);
+    uint8_t u = (i <= 0)
+                ? 0
+                : (i >= 255)
+                ? 255
+                : uint8_t(i);
+    setElement(index, uint8_clamped(u));
+}
+
+template<> inline void
+TypedElementsHeader<uint8_t>::assign(uint32_t index, double d)
+{
+    setElement(index, uint8_t(ToUint32(d)));
+}
+
+template<> inline void
+TypedElementsHeader<int8_t>::assign(uint32_t index, double d)
+{
+
+    setElement(index, int8_t(ToInt32(d)));
+}
+
+template<> inline void
+TypedElementsHeader<uint16_t>::assign(uint32_t index, double d)
+{
+    setElement(index, uint16_t(ToUint32(d)));
+}
+
+template<> inline void
+TypedElementsHeader<int16_t>::assign(uint32_t index, double d)
+{
+
+    setElement(index, int16_t(ToInt32(d)));
+}
+
+template<> inline void
+TypedElementsHeader<uint32_t>::assign(uint32_t index, double d)
+{
+    setElement(index, ToUint32(d));
+}
+
+template<> inline void
+TypedElementsHeader<int32_t>::assign(uint32_t index, double d)
+{
+
+    setElement(index, int32_t(ToInt32(d)));
+}
+
+template<> inline void
+TypedElementsHeader<float>::assign(uint32_t index, double d)
+{
+    setElement(index, float(d));
+}
+
+template<> inline void
+TypedElementsHeader<double>::assign(uint32_t index, double d)
+{
+    setElement(index, d);
+}
+
+class Uint8ElementsHeader : public TypedElementsHeader<uint8_t>
+{
+  private:
+    inline bool isUint8Elements() const ;
+    inline Uint8ElementsHeader & asUint8Elements() ;
+    Uint8ElementsHeader(const Uint8ElementsHeader &other) ;
+    void operator=(const Uint8ElementsHeader &other) ;
+};
+class Int8ElementsHeader : public TypedElementsHeader<int8_t>
+{
+  private:
+    bool isInt8Elements() const ;
+    Int8ElementsHeader & asInt8Elements() ;
+    Int8ElementsHeader(const Int8ElementsHeader &other) ;
+    void operator=(const Int8ElementsHeader &other) ;
+};
+class Uint16ElementsHeader : public TypedElementsHeader<uint16_t>
+{
+  private:
+    bool isUint16Elements() const ;
+    Uint16ElementsHeader & asUint16Elements() ;
+    Uint16ElementsHeader(const Uint16ElementsHeader &other) ;
+    void operator=(const Uint16ElementsHeader &other) ;
+};
+class Int16ElementsHeader : public TypedElementsHeader<int16_t>
+{
+  private:
+    bool isInt16Elements() const ;
+    Int16ElementsHeader & asInt16Elements() ;
+    Int16ElementsHeader(const Int16ElementsHeader &other) ;
+    void operator=(const Int16ElementsHeader &other) ;
+};
+class Uint32ElementsHeader : public TypedElementsHeader<uint32_t>
+{
+  private:
+    bool isUint32Elements() const ;
+    Uint32ElementsHeader & asUint32Elements() ;
+    Uint32ElementsHeader(const Uint32ElementsHeader &other) ;
+    void operator=(const Uint32ElementsHeader &other) ;
+};
+class Int32ElementsHeader : public TypedElementsHeader<int32_t>
+{
+  private:
+    bool isInt32Elements() const ;
+    Int32ElementsHeader & asInt32Elements() ;
+    Int32ElementsHeader(const Int32ElementsHeader &other) ;
+    void operator=(const Int32ElementsHeader &other) ;
+};
+class Float32ElementsHeader : public TypedElementsHeader<float>
+{
+  private:
+    bool isFloat32Elements() const ;
+    Float32ElementsHeader & asFloat32Elements() ;
+    Float32ElementsHeader(const Float32ElementsHeader &other) ;
+    void operator=(const Float32ElementsHeader &other) ;
+};
+class Float64ElementsHeader : public TypedElementsHeader<double>
+{
+  private:
+    bool isFloat64Elements() const ;
+    Float64ElementsHeader & asFloat64Elements() ;
+    Float64ElementsHeader(const Float64ElementsHeader &other) ;
+    void operator=(const Float64ElementsHeader &other) ;
+};
+
+class Uint8ClampedElementsHeader : public TypedElementsHeader<uint8_clamped>
+{
+  private:
+    inline bool isUint8Clamped() const ;
+    inline Uint8ClampedElementsHeader & asUint8ClampedElements() ;
+    Uint8ClampedElementsHeader(const Uint8ClampedElementsHeader &other) ;
+    void operator=(const Uint8ClampedElementsHeader &other) ;
+};
+
+class ArrayBufferElementsHeader : public ElementsHeader
+{
+  public:
+    bool getOwnElement(JSContext *cx, ObjectImpl *obj, uint32_t index, PropDesc *desc);
+
+    bool defineElement(JSContext *cx, ObjectImpl *obj, uint32_t index, const PropDesc &desc,
+                       bool shouldThrow, bool *succeeded);
+
+    bool setElement(JSContext *cx, ObjectImpl *obj, ObjectImpl *receiver, uint32_t index,
+                    const Value &v, bool *succeeded);
+
+  private:
+    inline bool isArrayBufferElements() const ;
+    inline ArrayBufferElementsHeader & asArrayBufferElements() ;
+
+    ArrayBufferElementsHeader(const ArrayBufferElementsHeader &other) ;
+    void operator=(const ArrayBufferElementsHeader &other) ;
+};
+
+inline DenseElementsHeader &
+ElementsHeader::asDenseElements()
+{
+    do { } while(0);
+    return *static_cast<DenseElementsHeader *>(this);
+}
+
+inline SparseElementsHeader &
+ElementsHeader::asSparseElements()
+{
+    do { } while(0);
+    return *static_cast<SparseElementsHeader *>(this);
+}
+
+inline Uint8ElementsHeader &
+ElementsHeader::asUint8Elements()
+{
+    do { } while(0);
+    return *static_cast<Uint8ElementsHeader *>(this);
+}
+
+inline Int8ElementsHeader &
+ElementsHeader::asInt8Elements()
+{
+    do { } while(0);
+    return *static_cast<Int8ElementsHeader *>(this);
+}
+
+inline Uint16ElementsHeader &
+ElementsHeader::asUint16Elements()
+{
+    do { } while(0);
+    return *static_cast<Uint16ElementsHeader *>(this);
+}
+
+inline Int16ElementsHeader &
+ElementsHeader::asInt16Elements()
+{
+    do { } while(0);
+    return *static_cast<Int16ElementsHeader *>(this);
+}
+
+inline Uint32ElementsHeader &
+ElementsHeader::asUint32Elements()
+{
+    do { } while(0);
+    return *static_cast<Uint32ElementsHeader *>(this);
+}
+
+inline Int32ElementsHeader &
+ElementsHeader::asInt32Elements()
+{
+    do { } while(0);
+    return *static_cast<Int32ElementsHeader *>(this);
+}
+
+inline Uint8ClampedElementsHeader &
+ElementsHeader::asUint8ClampedElements()
+{
+    do { } while(0);
+    return *static_cast<Uint8ClampedElementsHeader *>(this);
+}
+
+inline Float32ElementsHeader &
+ElementsHeader::asFloat32Elements()
+{
+    do { } while(0);
+    return *static_cast<Float32ElementsHeader *>(this);
+}
+
+inline Float64ElementsHeader &
+ElementsHeader::asFloat64Elements()
+{
+    do { } while(0);
+    return *static_cast<Float64ElementsHeader *>(this);
+}
+
+inline ArrayBufferElementsHeader &
+ElementsHeader::asArrayBufferElements()
+{
+    do { } while(0);
+    return *static_cast<ArrayBufferElementsHeader *>(this);
+}
+
+
+
+
+
+
+
+class ArrayBufferObject;
+class ObjectElements
+{
+    friend struct ::JSObject;
+    friend class ObjectImpl;
+    friend class ArrayBufferObject;
+
+
+    uint32_t capacity;
+
+
+
+
+
+
+
+    uint32_t initializedLength;
+
+
+    uint32_t length;
+
+
+    uint32_t unused;
+
+    void staticAsserts() {
+        typedef int
+ moz_static_assert49
+# 804 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+        [(sizeof(ObjectElements) == VALUES_PER_HEADER * sizeof(Value)) ? 1 : -1]
+                                                                           ;
+    }
+
+  public:
+
+    ObjectElements(uint32_t capacity, uint32_t length)
+      : capacity(capacity), initializedLength(0), length(length)
+    {}
+
+    HeapSlot *elements() { return (HeapSlot *)(uintptr_t(this) + sizeof(ObjectElements)); }
+    static ObjectElements * fromElements(HeapSlot *elems) {
+        return (ObjectElements *)(uintptr_t(elems) - sizeof(ObjectElements));
+    }
+
+    static int offsetOfCapacity() {
+        return (int)__builtin_offsetof (ObjectElements, capacity) - (int)sizeof(ObjectElements);
+    }
+    static int offsetOfInitializedLength() {
+        return (int)__builtin_offsetof (ObjectElements, initializedLength) - (int)sizeof(ObjectElements);
+    }
+    static int offsetOfLength() {
+        return (int)__builtin_offsetof (ObjectElements, length) - (int)sizeof(ObjectElements);
+    }
+
+    static const size_t VALUES_PER_HEADER = 2;
+};
+
+
+extern HeapSlot *emptyObjectElements;
+
+struct Class;
+struct GCMarker;
+struct ObjectOps;
+struct Shape;
+
+class NewObjectCache;
+
+inline Value
+ObjectValue(ObjectImpl &obj);
+# 893 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+class ObjectImpl : public gc::Cell
+{
+  protected:
+
+
+
+
+    HeapPtrShape shape_;
+
+
+
+
+
+
+    HeapPtrTypeObject type_;
+
+    HeapSlot *slots;
+    HeapSlot *elements;
+
+  private:
+    static void staticAsserts() {
+        typedef int
+ moz_static_assert50
+# 914 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+        [(sizeof(ObjectImpl) == sizeof(shadow::Object)) ? 1 : -1]
+                                                                              ;
+        typedef int
+ moz_static_assert51
+# 916 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+        [(sizeof(ObjectImpl) % sizeof(Value) == 0) ? 1 : -1]
+                                                                        ;
+
+        typedef int
+ moz_static_assert52
+# 919 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+        [(__builtin_offsetof (ObjectImpl, shape_) == __builtin_offsetof (shadow::Object, shape)) ? 1 : -1]
+                                                                 ;
+        typedef int
+ moz_static_assert53
+# 921 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+        [(__builtin_offsetof (ObjectImpl, type_) == __builtin_offsetof (shadow::Object, type)) ? 1 : -1]
+                                                               ;
+        typedef int
+ moz_static_assert54
+# 923 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+        [(__builtin_offsetof (ObjectImpl, slots) == __builtin_offsetof (shadow::Object, slots)) ? 1 : -1]
+                                                                 ;
+        typedef int
+ moz_static_assert55
+# 925 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+        [(__builtin_offsetof (ObjectImpl, elements) == __builtin_offsetof (shadow::Object, _1)) ? 1 : -1]
+                                                                          ;
+    }
+
+    JSObject * asObjectPtr() { return reinterpret_cast<JSObject *>(this); }
+
+    friend inline Value ObjectValue(ObjectImpl &obj);
+
+
+
+  public:
+    JSObject * getProto() const {
+        return type_->proto;
+    }
+
+    inline bool isExtensible() const;
+
+
+
+
+
+    inline bool isDenseArray() const;
+    inline bool isSlowArray() const;
+    inline bool isArray() const;
+
+    inline HeapSlotArray getDenseArrayElements();
+    inline const Value & getDenseArrayElement(uint32_t idx);
+    inline uint32_t getDenseArrayInitializedLength();
+
+    bool makeElementsSparse(JSContext *cx) {
+        __builtin_unreachable();
+
+        __builtin_unreachable();
+        return false;
+    }
+
+  protected:
+
+
+
+    void checkShapeConsistency() { }
+
+
+  private:
+
+
+
+
+    inline void getSlotRangeUnchecked(uint32_t start, uint32_t length,
+                                      HeapSlot **fixedStart, HeapSlot **fixedEnd,
+                                      HeapSlot **slotsStart, HeapSlot **slotsEnd);
+    inline void getSlotRange(uint32_t start, uint32_t length,
+                             HeapSlot **fixedStart, HeapSlot **fixedEnd,
+                             HeapSlot **slotsStart, HeapSlot **slotsEnd);
+
+  protected:
+    friend struct GCMarker;
+    friend struct Shape;
+    friend class NewObjectCache;
+
+    inline bool hasContiguousSlots(uint32_t start, uint32_t count) const;
+
+    inline void invalidateSlotRange(uint32_t start, uint32_t count);
+    inline void initializeSlotRange(uint32_t start, uint32_t count);
+
+
+
+
+
+    void initSlotRange(uint32_t start, const Value *vector, uint32_t length);
+
+
+
+
+
+    void copySlotRange(uint32_t start, const Value *vector, uint32_t length);
+# 1016 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+    static const uint32_t SLOT_CAPACITY_MIN = 8;
+
+    HeapSlot *fixedSlots() const {
+        return reinterpret_cast<HeapSlot *>(uintptr_t(this) + sizeof(ObjectImpl));
+    }
+
+    friend class ElementsHeader;
+    friend class DenseElementsHeader;
+    friend class SparseElementsHeader;
+
+    enum DenseElementsResult {
+        Failure,
+        ConvertToSparse,
+        Succeeded
+    };
+
+    DenseElementsResult ensureDenseElementsInitialized(JSContext *cx, uint32_t index,
+                                                       uint32_t extra)
+    {
+        __builtin_unreachable();
+
+        __builtin_unreachable();
+        return Failure;
+    }
+
+
+
+
+
+
+  public:
+    Shape * lastProperty() const {
+        do { } while(0);
+        return shape_;
+    }
+
+    inline bool isNative() const;
+
+    types::TypeObject *type() const {
+        do { } while(0);
+        return type_;
+    }
+
+    uint32_t numFixedSlots() const {
+        return reinterpret_cast<const shadow::Object *>(this)->numFixedSlots();
+    }
+
+
+
+
+
+    bool hasSingletonType() const { return !!type_->singleton; }
+
+
+
+
+
+    bool hasLazyType() const { return type_->lazy(); }
+
+    inline uint32_t slotSpan() const;
+
+
+    inline uint32_t numDynamicSlots() const;
+
+    const Shape * nativeLookup(JSContext *cx, jsid id);
+
+
+
+
+
+    inline Class *getClass() const;
+    inline JSClass *getJSClass() const;
+    inline bool hasClass(const Class *c) const;
+    inline const ObjectOps *getOps() const;
+# 1100 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+    inline bool isDelegate() const;
+
+
+
+
+
+
+    inline bool inDictionaryMode() const;
+
+    const Value &getSlot(uint32_t slot) const {
+        do { } while(0);
+        uint32_t fixed = numFixedSlots();
+        if (slot < fixed)
+            return fixedSlots()[slot];
+        return slots[slot - fixed];
+    }
+
+    HeapSlot *getSlotAddressUnchecked(uint32_t slot) {
+        uint32_t fixed = numFixedSlots();
+        if (slot < fixed)
+            return fixedSlots() + slot;
+        return slots + (slot - fixed);
+    }
+
+    HeapSlot *getSlotAddress(uint32_t slot) {
+
+
+
+
+
+        do { } while(0);
+        return getSlotAddressUnchecked(slot);
+    }
+
+    HeapSlot &getSlotRef(uint32_t slot) {
+        do { } while(0);
+        return *getSlotAddress(slot);
+    }
+
+    inline HeapSlot &nativeGetSlotRef(uint32_t slot);
+    inline const Value &nativeGetSlot(uint32_t slot) const;
+
+    inline void setSlot(uint32_t slot, const Value &value);
+    inline void initSlot(uint32_t slot, const Value &value);
+    inline void initSlotUnchecked(uint32_t slot, const Value &value);
+
+
+
+    HeapSlot &getFixedSlotRef(uint32_t slot) {
+        do { } while(0);
+        return fixedSlots()[slot];
+    }
+
+    const Value &getFixedSlot(uint32_t slot) const {
+        do { } while(0);
+        return fixedSlots()[slot];
+    }
+
+    inline void setFixedSlot(uint32_t slot, const Value &value);
+    inline void initFixedSlot(uint32_t slot, const Value &value);
+
+
+
+
+
+
+
+    static inline uint32_t dynamicSlotsCount(uint32_t nfixed, uint32_t span);
+
+
+    inline size_t sizeOfThis() const;
+
+
+
+    ObjectElements * getElementsHeader() const {
+        return ObjectElements::fromElements(elements);
+    }
+
+    ElementsHeader & elementsHeader() const {
+        __builtin_unreachable();
+        return *ElementsHeader::fromElements(elements);
+    }
+
+    inline HeapSlot *fixedElements() const {
+        typedef int
+
+ moz_static_assert56
+# 1184 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h"
+        [(2 * sizeof(Value) == sizeof(ObjectElements)) ? 1 : -1]
+
+                                                                      ;
+        return &fixedSlots()[2];
+    }
+
+    void setFixedElements() { this->elements = fixedElements(); }
+
+    inline bool hasDynamicElements() const {
+
+
+
+
+
+
+
+        return elements != emptyObjectElements && elements != fixedElements();
+    }
+
+
+    static inline void readBarrier(ObjectImpl *obj);
+    static inline void writeBarrierPre(ObjectImpl *obj);
+    static inline void writeBarrierPost(ObjectImpl *obj, void *addr);
+    inline void privateWriteBarrierPre(void **oldval);
+    inline void privateWriteBarrierPost(void **oldval);
+    void markChildren(JSTracer *trc);
+
+
+
+    inline void *&privateRef(uint32_t nfixed) const;
+
+    inline bool hasPrivate() const;
+    inline void *getPrivate() const;
+    inline void setPrivate(void *data);
+    inline void setPrivateUnbarriered(void *data);
+    inline void initPrivate(void *data);
+
+
+    inline void *getPrivate(uint32_t nfixed) const;
+
+
+    static size_t offsetOfShape() { return __builtin_offsetof (ObjectImpl, shape_); }
+    HeapPtrShape *addressOfShape() { return &shape_; }
+
+    static size_t offsetOfType() { return __builtin_offsetof (ObjectImpl, type_); }
+    HeapPtrTypeObject *addressOfType() { return &type_; }
+
+    static size_t offsetOfElements() { return __builtin_offsetof (ObjectImpl, elements); }
+    static size_t offsetOfFixedElements() {
+        return sizeof(ObjectImpl) + sizeof(ObjectElements);
+    }
+
+    static size_t getFixedSlotOffset(size_t slot) {
+        return sizeof(ObjectImpl) + slot * sizeof(Value);
+    }
+    static size_t getPrivateDataOffset(size_t nfixed) { return getFixedSlotOffset(nfixed); }
+    static size_t offsetOfSlots() { return __builtin_offsetof (ObjectImpl, slots); }
+};
+
+inline Value
+ObjectValue(ObjectImpl &obj)
+{
+    Value v;
+    v.setObject(*obj.asObjectPtr());
+    return v;
+}
+
+bool
+GetOwnElement(JSContext *cx, ObjectImpl *obj, uint32_t index, PropDesc *desc);
+
+
+extern bool
+GetElement(JSContext *cx, ObjectImpl *obj, ObjectImpl *receiver, uint32_t index, Value *vp);
+
+extern bool
+DefineElement(JSContext *cx, ObjectImpl *obj, uint32_t index, const PropDesc &desc,
+              bool shouldThrow, bool *succeeded);
+
+
+extern bool
+SetElement(JSContext *cx, ObjectImpl *obj, ObjectImpl *receiver, uint32_t index, const Value &v,
+           bool *succeeded);
+
+extern bool
+HasElement(JSContext *cx, ObjectImpl *obj, uint32_t index, bool *found);
+
+}
+# 33 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String.h"
+#define String_h_ 
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatom.h" 1
+# 15 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsstr.h" 1
+
+
+
+
+
+
+
+#define jsstr_h___ 
+
+# 1 "/usr/include/ctype.h" 1 3 4
+# 25 "/usr/include/ctype.h" 3 4
+#define _CTYPE_H 1
+
+
+
+
+extern "C" {
+# 45 "/usr/include/ctype.h" 3 4
+#define _ISbit(bit) ((bit) < 8 ? ((1 << (bit)) << 8) : ((1 << (bit)) >> 8))
+
+
+enum
+{
+  _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
+  _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
+  _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
+  _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
+  _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
+  _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
+  _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
+  _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
+  _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
+  _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
+  _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
+  _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
+};
+# 81 "/usr/include/ctype.h" 3 4
+extern __const unsigned short int **__ctype_b_loc (void)
+     throw () __attribute__ ((__const));
+extern __const __int32_t **__ctype_tolower_loc (void)
+     throw () __attribute__ ((__const));
+extern __const __int32_t **__ctype_toupper_loc (void)
+     throw () __attribute__ ((__const));
+
+
+
+
+
+
+#define __isctype_f(type) __extern_inline int is ##type (int __c) __THROW { return (*__ctype_b_loc ())[(int) (__c)] & (unsigned short int) _IS ##type; }
+
+
+
+
+
+
+
+#define __isascii(c) (((c) & ~0x7f) == 0)
+#define __toascii(c) ((c) & 0x7f)
+
+#define __exctype(name) extern int name (int) __THROW
+
+
+
+
+
+
+
+extern int isalnum (int) throw ();
+extern int isalpha (int) throw ();
+extern int iscntrl (int) throw ();
+extern int isdigit (int) throw ();
+extern int islower (int) throw ();
+extern int isgraph (int) throw ();
+extern int isprint (int) throw ();
+extern int ispunct (int) throw ();
+extern int isspace (int) throw ();
+extern int isupper (int) throw ();
+extern int isxdigit (int) throw ();
+
+
+
+extern int tolower (int __c) throw ();
+
+
+extern int toupper (int __c) throw ();
+
+
+
+
+
+
+
+
+extern int isblank (int) throw ();
+
+
+
+
+
+
+extern int isctype (int __c, int __mask) throw ();
+
+
+
+
+
+
+extern int isascii (int __c) throw ();
+
+
+
+extern int toascii (int __c) throw ();
+
+
+
+extern int _toupper (int) throw ();
+extern int _tolower (int) throw ();
+
+
+
+#define __tobody(c,f,a,args) (__extension__ ({ int __res; if (sizeof (c) > 1) { if (__builtin_constant_p (c)) { int __c = (c); __res = __c < -128 || __c > 255 ? __c : (a)[__c]; } else __res = f args; } else __res = (a)[(int) (c)]; __res; }))
+# 263 "/usr/include/ctype.h" 3 4
+#define __isctype_l(c,type,locale) ((locale)->__ctype_b[(int) (c)] & (unsigned short int) type)
+
+
+#define __exctype_l(name) extern int name (int, __locale_t) __THROW
+
+
+
+
+
+
+extern int isalnum_l (int, __locale_t) throw ();
+extern int isalpha_l (int, __locale_t) throw ();
+extern int iscntrl_l (int, __locale_t) throw ();
+extern int isdigit_l (int, __locale_t) throw ();
+extern int islower_l (int, __locale_t) throw ();
+extern int isgraph_l (int, __locale_t) throw ();
+extern int isprint_l (int, __locale_t) throw ();
+extern int ispunct_l (int, __locale_t) throw ();
+extern int isspace_l (int, __locale_t) throw ();
+extern int isupper_l (int, __locale_t) throw ();
+extern int isxdigit_l (int, __locale_t) throw ();
+
+extern int isblank_l (int, __locale_t) throw ();
+
+
+
+extern int __tolower_l (int __c, __locale_t __l) throw ();
+extern int tolower_l (int __c, __locale_t __l) throw ();
+
+
+extern int __toupper_l (int __c, __locale_t __l) throw ();
+extern int toupper_l (int __c, __locale_t __l) throw ();
+# 349 "/usr/include/ctype.h" 3 4
+}
+# 11 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsstr.h" 2
+
+
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Unicode.h" 1
+
+
+
+
+
+#define Unicode_h__ 
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Unicode.h"
+extern const bool js_isidstart[];
+extern const bool js_isident[];
+extern const bool js_isspace[];
+
+namespace js {
+namespace unicode {
+# 68 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Unicode.h"
+struct CharFlag {
+    enum temp {
+        SPACE = 1 << 0,
+        LETTER = 1 << 1,
+        IDENTIFIER_PART = 1 << 2,
+        NO_DELTA = 1 << 3,
+        ENCLOSING_MARK = 1 << 4,
+        COMBINING_SPACING_MARK = 1 << 5
+    };
+};
+
+const jschar BYTE_ORDER_MARK2 = 0xFFFE;
+const jschar NO_BREAK_SPACE = 0x00A0;
+
+class CharacterInfo {
+# 103 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Unicode.h"
+  public:
+    uint16_t upperCase;
+    uint16_t lowerCase;
+    uint8_t flags;
+
+    inline bool isSpace() const {
+        return flags & CharFlag::SPACE;
+    }
+
+    inline bool isLetter() const {
+        return flags & CharFlag::LETTER;
+    }
+
+    inline bool isIdentifierPart() const {
+        return flags & (CharFlag::IDENTIFIER_PART | CharFlag::LETTER);
+    }
+
+    inline bool isEnclosingMark() const {
+        return flags & CharFlag::ENCLOSING_MARK;
+    }
+
+    inline bool isCombiningSpacingMark() const {
+        return flags & CharFlag::COMBINING_SPACING_MARK;
+    }
+};
+
+extern const uint8_t index1[];
+extern const uint8_t index2[];
+extern const CharacterInfo js_charinfo[];
+
+inline const CharacterInfo&
+CharInfo(jschar code)
+{
+    size_t index = index1[code >> 6];
+    index = index2[(index << 6) + (code & 0x3f)];
+
+    return js_charinfo[index];
+}
+
+inline bool
+IsIdentifierStart(jschar ch)
+{
+# 154 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Unicode.h"
+    if (ch < 128)
+        return js_isidstart[ch];
+
+    return CharInfo(ch).isLetter();
+}
+
+inline bool
+IsIdentifierPart(jschar ch)
+{
+
+
+    if (ch < 128)
+        return js_isident[ch];
+
+    return CharInfo(ch).isIdentifierPart();
+}
+
+inline bool
+IsLetter(jschar ch)
+{
+    return CharInfo(ch).isLetter();
+}
+
+inline bool
+IsSpace(jschar ch)
+{
+# 192 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Unicode.h"
+    if (ch < 128)
+        return js_isspace[ch];
+
+    if (ch == NO_BREAK_SPACE)
+        return true;
+
+    return CharInfo(ch).isSpace();
+}
+
+inline bool
+IsSpaceOrBOM2(jschar ch)
+{
+    if (ch < 128)
+        return js_isspace[ch];
+
+
+    if (ch == NO_BREAK_SPACE || ch == BYTE_ORDER_MARK2)
+        return true;
+
+    return CharInfo(ch).isSpace();
+}
+
+inline jschar
+ToUpperCase(jschar ch)
+{
+    const CharacterInfo &info = CharInfo(ch);
+
+
+
+
+
+    if (info.flags & CharFlag::NO_DELTA)
+        return info.upperCase;
+
+    return uint16_t(ch) + info.upperCase;
+}
+
+inline jschar
+ToLowerCase(jschar ch)
+{
+    const CharacterInfo &info = CharInfo(ch);
+
+    if (info.flags & CharFlag::NO_DELTA)
+        return info.lowerCase;
+
+    return uint16_t(ch) + info.lowerCase;
+}
+
+
+
+inline bool
+IsXMLSpace(jschar ch)
+{
+    return ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n';
+}
+
+inline bool
+IsXMLNamespaceStart(jschar ch)
+{
+    if (ch == '_')
+        return true;
+
+    return CharInfo(ch).isCombiningSpacingMark() || IsIdentifierStart(ch);
+}
+
+inline bool
+IsXMLNamespacePart(jschar ch)
+{
+    if (ch == '.' || ch == '-' || ch == '_')
+        return true;
+
+    return CharInfo(ch).isEnclosingMark() || IsIdentifierPart(ch);
+}
+
+inline bool
+IsXMLNameStart(jschar ch)
+{
+    if (ch == '_' || ch == ':')
+        return true;
+
+    return CharInfo(ch).isCombiningSpacingMark() || IsIdentifierStart(ch);
+}
+
+inline bool
+IsXMLNamePart(jschar ch)
+{
+    if (ch == '.' || ch == '-' || ch == '_' || ch == ':')
+        return true;
+
+    return CharInfo(ch).isEnclosingMark() || IsIdentifierPart(ch);
+}
+
+
+}
+}
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsstr.h" 2
+
+namespace js {
+
+
+class StringBuffer;
+# 32 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsstr.h"
+class StringSegmentRange;
+class MutatingRopeSegmentRange;
+
+
+
+
+class RopeBuilder;
+
+}
+
+extern JSString *
+js_ConcatStrings(JSContext *cx, js::HandleString s1, js::HandleString s2);
+
+extern JSString *
+js_toLowerCase(JSContext *cx, JSString *str);
+
+extern JSString *
+js_toUpperCase(JSContext *cx, JSString *str);
+
+struct JSSubString {
+    size_t length;
+    const jschar *chars;
+};
+
+extern jschar js_empty_ucstr[];
+extern JSSubString js_EmptySubString;
+
+
+
+
+
+#define JS7_ISDEC(c) ((((unsigned)(c)) - '0') <= 9)
+#define JS7_UNDEC(c) ((c) - '0')
+#define JS7_ISHEX(c) ((c) < 128 && isxdigit(c))
+#define JS7_UNHEX(c) (unsigned)(JS7_ISDEC(c) ? (c) - '0' : 10 + tolower(c) - 'a')
+#define JS7_ISLET(c) ((c) < 128 && isalpha(c))
+
+
+extern JSObject *
+js_InitStringClass(JSContext *cx, JSObject *obj);
+
+extern const char js_escape_str[];
+extern const char js_unescape_str[];
+extern const char js_uneval_str[];
+extern const char js_decodeURI_str[];
+extern const char js_encodeURI_str[];
+extern const char js_decodeURIComponent_str[];
+extern const char js_encodeURIComponent_str[];
+
+
+extern JSFixedString *
+js_NewString(JSContext *cx, jschar *chars, size_t length);
+
+extern JSLinearString *
+js_NewDependentString(JSContext *cx, JSString *base, size_t start, size_t length);
+
+
+extern JSFixedString *
+js_NewStringCopyN(JSContext *cx, const jschar *s, size_t n);
+
+extern JSFixedString *
+js_NewStringCopyN(JSContext *cx, const char *s, size_t n);
+
+
+extern JSFixedString *
+js_NewStringCopyZ(JSContext *cx, const jschar *s);
+
+extern JSFixedString *
+js_NewStringCopyZ(JSContext *cx, const char *s);
+
+
+
+
+extern const char *
+js_ValueToPrintable(JSContext *cx, const js::Value &,
+                    JSAutoByteString *bytes, bool asSource = false);
+
+namespace js {
+
+
+
+
+
+extern JSString *
+ToStringSlow(JSContext *cx, const Value &v);
+
+
+
+
+
+
+static __attribute__((always_inline)) inline JSString *
+ToString(JSContext *cx, const js::Value &v)
+{
+    if (v.isString())
+        return v.toString();
+    return ToStringSlow(cx, v);
+}
+
+
+
+
+
+
+inline bool
+ValueToStringBuffer(JSContext *cx, const Value &v, StringBuffer &sb);
+
+}
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSString *
+js_ValueToSource(JSContext *cx, const js::Value &v);
+
+namespace js {
+
+
+
+
+
+extern bool
+EqualStrings(JSContext *cx, JSString *str1, JSString *str2, bool *result);
+
+
+extern bool
+EqualStrings(JSContext *cx, JSLinearString *str1, JSLinearString *str2, bool *result) ;
+
+
+extern bool
+EqualStrings(JSLinearString *str1, JSLinearString *str2);
+
+
+
+
+
+extern bool
+CompareStrings(JSContext *cx, JSString *str1, JSString *str2, int32_t *result);
+
+
+
+
+extern bool
+StringEqualsAscii(JSLinearString *str, const char *asciiBytes);
+
+}
+
+extern size_t
+js_strlen(const jschar *s);
+
+extern jschar *
+js_strchr(const jschar *s, jschar c);
+
+extern jschar *
+js_strchr_limit(const jschar *s, jschar c, const jschar *limit);
+
+static __attribute__((always_inline)) inline void
+js_strncpy(jschar *dst, const jschar *src, size_t nelem)
+{
+    return js::PodCopy(dst, src, nelem);
+}
+
+namespace js {
+
+
+
+
+
+
+extern jschar *
+InflateString(JSContext *cx, const char *bytes, size_t *length,
+              FlationCoding fc = NormalEncoding);
+
+extern char *
+DeflateString(JSContext *cx, const jschar *chars, size_t length);
+# 216 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsstr.h"
+extern bool
+InflateStringToBuffer(JSContext *cx, const char *bytes, size_t length,
+                      jschar *chars, size_t *charsLength);
+
+extern bool
+InflateUTF8StringToBuffer(JSContext *cx, const char *bytes, size_t length,
+                          jschar *chars, size_t *charsLength,
+                          FlationCoding fc = NormalEncoding);
+
+
+extern size_t
+GetDeflatedStringLength(JSContext *cx, const jschar *chars, size_t charsLength);
+
+
+extern size_t
+GetDeflatedUTF8StringLength(JSContext *cx, const jschar *chars,
+                            size_t charsLength,
+                            FlationCoding fc = NormalEncoding);
+
+
+
+
+
+
+
+extern bool
+DeflateStringToBuffer(JSContext *cx, const jschar *chars,
+                      size_t charsLength, char *bytes, size_t *length);
+
+
+
+
+extern bool
+DeflateStringToUTF8Buffer(JSContext *cx, const jschar *chars,
+                          size_t charsLength, char *bytes, size_t *length,
+                          FlationCoding fc = NormalEncoding);
+
+
+
+
+
+extern JSBool
+str_replace(JSContext *cx, unsigned argc, js::Value *vp);
+
+extern JSBool
+str_fromCharCode(JSContext *cx, unsigned argc, Value *vp);
+
+}
+
+extern JSBool
+js_str_toString(JSContext *cx, unsigned argc, js::Value *vp);
+
+extern JSBool
+js_str_charAt(JSContext *cx, unsigned argc, js::Value *vp);
+
+extern JSBool
+js_str_charCodeAt(JSContext *cx, unsigned argc, js::Value *vp);
+
+
+
+
+
+extern int
+js_OneUcs4ToUtf8Char(uint8_t *utf8Buffer, uint32_t ucs4Char);
+
+namespace js {
+
+extern size_t
+PutEscapedStringImpl(char *buffer, size_t size, FILE *fp, JSLinearString *str, uint32_t quote);
+# 295 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsstr.h"
+inline size_t
+PutEscapedString(char *buffer, size_t size, JSLinearString *str, uint32_t quote)
+{
+    size_t n = PutEscapedStringImpl(buffer, size, __null, str, quote);
+
+
+    do { } while(0);
+    return n;
+}
+
+
+
+
+
+
+inline bool
+FileEscapedString(FILE *fp, JSLinearString *str, uint32_t quote)
+{
+    return PutEscapedStringImpl(__null, 0, fp, str, quote) != size_t(-1);
+}
+
+JSBool
+str_match(JSContext *cx, unsigned argc, Value *vp);
+
+JSBool
+str_search(JSContext *cx, unsigned argc, Value *vp);
+
+JSBool
+str_split(JSContext *cx, unsigned argc, Value *vp);
+
+}
+
+extern JSBool
+js_String(JSContext *cx, unsigned argc, js::Value *vp);
+# 17 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String.h" 2
+
+
+
+
+class JSString;
+class JSDependentString;
+class JSUndependedString;
+class JSExtensibleString;
+class JSExternalString;
+class JSLinearString;
+class JSFixedString;
+class JSRope;
+class JSAtom;
+
+namespace js {
+
+class StaticStrings;
+class PropertyName;
+
+
+static const size_t UINT32_CHAR_BUFFER_LENGTH = sizeof("4294967295") - 1;
+
+}
+# 131 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String.h"
+class JSString : public js::gc::Cell
+{
+  protected:
+    static const size_t NUM_INLINE_CHARS = 2 * sizeof(void *) / sizeof(jschar);
+
+
+    struct Data
+    {
+        size_t lengthAndFlags;
+        union {
+            const jschar *chars;
+            JSString *left;
+        } u1;
+        union {
+            jschar inlineStorage[NUM_INLINE_CHARS];
+            struct {
+                union {
+                    JSLinearString *base;
+                    JSString *right;
+                    size_t capacity;
+                    const JSStringFinalizer *externalFinalizer;
+                } u2;
+                union {
+                    JSString *parent;
+                    size_t reserved;
+                } u3;
+            } s;
+        };
+    } d;
+
+  public:
+# 200 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String.h"
+    static const size_t LENGTH_SHIFT = 4;
+    static const size_t FLAGS_MASK = (((uint32_t)1 << (LENGTH_SHIFT)) - 1);
+
+    static const size_t ROPE_BIT = ((uint32_t)1 << (0));
+
+    static const size_t DEPENDENT_FLAGS = ((uint32_t)1 << (1));
+    static const size_t EXTENSIBLE_FLAGS = ((uint32_t)1 << (2));
+    static const size_t FIXED_FLAGS = ((uint32_t)1 << (1)) | ((uint32_t)1 << (2));
+    static const size_t UNDEPENDED_FLAGS = ((uint32_t)1 << (1)) | ((uint32_t)1 << (3));
+
+    static const size_t ATOM_MASK = (((uint32_t)1 << (3)) - 1);
+    static const size_t NON_STATIC_ATOM_FLAGS = ((uint32_t)1 << (3));
+
+    static const size_t MAX_LENGTH = ((uint32_t)1 << (32 - LENGTH_SHIFT)) - 1;
+
+    size_t buildLengthAndFlags(size_t length, size_t flags) {
+        do { } while(0);
+        do { } while(0);
+        return (length << LENGTH_SHIFT) | flags;
+    }
+
+
+
+
+
+
+    static inline bool validateLength(JSContext *cx, size_t length);
+
+    static void staticAsserts() {
+        typedef int moz_static_assert57[((8 * 4) >= 32) ? 1 : -1];
+        typedef int
+ moz_static_assert58
+# 230 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String.h"
+        [(((JSString::MAX_LENGTH << JSString::LENGTH_SHIFT) >> JSString::LENGTH_SHIFT) == JSString::MAX_LENGTH) ? 1 : -1]
+                                                                           ;
+        typedef int
+ moz_static_assert59
+# 232 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String.h"
+        [(sizeof(JSString) == __builtin_offsetof (JSString, d.inlineStorage) + NUM_INLINE_CHARS * sizeof(jschar)) ? 1 : -1]
+                                                                                                 ;
+        typedef int
+ moz_static_assert60
+# 234 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String.h"
+        [(__builtin_offsetof (JSString, d.u1.chars) == __builtin_offsetof (js::shadow::Atom, chars)) ? 1 : -1]
+                                                           ;
+    }
+
+
+    friend class JSRope;
+
+  public:
+
+
+    __attribute__((always_inline)) inline
+    size_t length() const {
+        return d.lengthAndFlags >> LENGTH_SHIFT;
+    }
+
+    __attribute__((always_inline)) inline
+    bool empty() const {
+        return d.lengthAndFlags <= FLAGS_MASK;
+    }
+
+
+
+
+
+
+    inline const jschar *getChars(JSContext *cx);
+    inline const jschar *getCharsZ(JSContext *cx);
+
+
+
+    inline JSLinearString *ensureLinear(JSContext *cx);
+    inline JSFlatString *ensureFlat(JSContext *cx);
+    inline JSFixedString *ensureFixed(JSContext *cx);
+
+
+
+    __attribute__((always_inline)) inline
+    bool isRope() const {
+        bool rope = d.lengthAndFlags & ROPE_BIT;
+        do { } while (0);
+        return rope;
+    }
+
+    __attribute__((always_inline)) inline
+    JSRope &asRope() const {
+        do { } while(0);
+        return *(JSRope *)this;
+    }
+
+    __attribute__((always_inline)) inline
+    bool isLinear() const {
+        return !(d.lengthAndFlags & ROPE_BIT);
+    }
+
+    __attribute__((always_inline)) inline
+    JSLinearString &asLinear() const {
+        do { } while(0);
+        return *(JSLinearString *)this;
+    }
+
+    __attribute__((always_inline)) inline
+    bool isDependent() const {
+        return (d.lengthAndFlags & FLAGS_MASK) == DEPENDENT_FLAGS;
+    }
+
+    __attribute__((always_inline)) inline
+    JSDependentString &asDependent() const {
+        do { } while(0);
+        return *(JSDependentString *)this;
+    }
+
+    __attribute__((always_inline)) inline
+    bool isFlat() const {
+        return isLinear() && !isDependent();
+    }
+
+    __attribute__((always_inline)) inline
+    JSFlatString &asFlat() const {
+        do { } while(0);
+        return *(JSFlatString *)this;
+    }
+
+    __attribute__((always_inline)) inline
+    bool isExtensible() const {
+        return (d.lengthAndFlags & FLAGS_MASK) == EXTENSIBLE_FLAGS;
+    }
+
+    __attribute__((always_inline)) inline
+    JSExtensibleString &asExtensible() const {
+        do { } while(0);
+        return *(JSExtensibleString *)this;
+    }
+
+
+    bool isShort() const;
+    bool isFixed() const;
+    bool isInline() const;
+
+    __attribute__((always_inline)) inline
+    JSFixedString &asFixed() const {
+        do { } while(0);
+        return *(JSFixedString *)this;
+    }
+
+    bool isExternal() const;
+
+    __attribute__((always_inline)) inline
+    JSExternalString &asExternal() const {
+        do { } while(0);
+        return *(JSExternalString *)this;
+    }
+
+    __attribute__((always_inline)) inline
+    bool isUndepended() const {
+        return (d.lengthAndFlags & FLAGS_MASK) == UNDEPENDED_FLAGS;
+    }
+
+    __attribute__((always_inline)) inline
+    bool isAtom() const {
+        return !(d.lengthAndFlags & ATOM_MASK);
+    }
+
+    __attribute__((always_inline)) inline
+    JSAtom &asAtom() const {
+        do { } while(0);
+        return *(JSAtom *)this;
+    }
+
+
+
+    inline bool hasBase() const {
+        typedef int moz_static_assert61[((DEPENDENT_FLAGS | ((uint32_t)1 << (3))) == UNDEPENDED_FLAGS) ? 1 : -1];
+        return (d.lengthAndFlags & (((uint32_t)1 << (3)) - 1)) == DEPENDENT_FLAGS;
+    }
+
+    inline JSLinearString *base() const {
+        do { } while(0);
+        return d.s.u2.base;
+    }
+
+    inline void markBase(JSTracer *trc);
+
+
+
+    inline void finalize(js::FreeOp *fop);
+
+
+
+    size_t sizeOfExcludingThis(JSMallocSizeOfFun mallocSizeOf);
+
+
+
+    static size_t offsetOfLengthAndFlags() {
+        return __builtin_offsetof (JSString, d.lengthAndFlags);
+    }
+
+    static size_t offsetOfChars() {
+        return __builtin_offsetof (JSString, d.u1.chars);
+    }
+
+    static inline void writeBarrierPre(JSString *str);
+    static inline void writeBarrierPost(JSString *str, void *addr);
+    static inline bool needWriteBarrierPre(JSCompartment *comp);
+    static inline void readBarrier(JSString *str);
+
+    static inline js::ThingRootKind rootKind() { return js::THING_ROOT_STRING; }
+
+
+
+
+
+
+  private:
+    JSString() ;
+    JSString(const JSString &other) ;
+    void operator=(const JSString &other) ;
+};
+
+class JSRope : public JSString
+{
+    enum UsingBarrier { WithIncrementalBarrier, NoBarrier };
+    template<UsingBarrier b>
+    JSFlatString *flattenInternal(JSContext *cx);
+
+    friend class JSString;
+    JSFlatString *flatten(JSContext *cx);
+
+    void init(JSString *left, JSString *right, size_t length);
+
+  public:
+    static inline JSRope *new_(JSContext *cx, js::HandleString left,
+                               js::HandleString right, size_t length);
+
+    inline JSString *leftChild() const {
+        do { } while(0);
+        return d.u1.left;
+    }
+
+    inline JSString *rightChild() const {
+        do { } while(0);
+        return d.s.u2.right;
+    }
+
+    inline void markChildren(JSTracer *trc);
+};
+
+typedef int moz_static_assert62[(sizeof(JSRope) == sizeof(JSString)) ? 1 : -1];
+
+class JSLinearString : public JSString
+{
+    friend class JSString;
+
+
+    JSLinearString *ensureLinear(JSContext *cx) ;
+    bool isLinear() const ;
+    JSLinearString &asLinear() const ;
+
+  public:
+    __attribute__((always_inline)) inline
+    const jschar *chars() const {
+        do { } while(0);
+        return d.u1.chars;
+    }
+};
+
+typedef int moz_static_assert63[(sizeof(JSLinearString) == sizeof(JSString)) ? 1 : -1];
+
+class JSDependentString : public JSLinearString
+{
+    friend class JSString;
+    JSFixedString *undepend(JSContext *cx);
+
+    void init(JSLinearString *base, const jschar *chars, size_t length);
+
+
+    bool isDependent() const ;
+    JSDependentString &asDependent() const ;
+
+  public:
+    static inline JSDependentString *new_(JSContext *cx, JSLinearString *base,
+                                          const jschar *chars, size_t length);
+};
+
+typedef int moz_static_assert64[(sizeof(JSDependentString) == sizeof(JSString)) ? 1 : -1];
+
+class JSFlatString : public JSLinearString
+{
+
+    JSFlatString *ensureFlat(JSContext *cx) ;
+    bool isFlat() const ;
+    JSFlatString &asFlat() const ;
+
+    bool isIndexSlow(uint32_t *indexp) const;
+
+  public:
+    __attribute__((always_inline)) inline
+    const jschar *charsZ() const {
+        do { } while(0);
+        return chars();
+    }
+
+
+
+
+
+
+
+    inline bool isIndex(uint32_t *indexp) const {
+        const jschar *s = chars();
+        return ((((unsigned)(*s)) - '0') <= 9) && isIndexSlow(indexp);
+    }
+
+
+
+
+
+
+    inline js::PropertyName *toPropertyName(JSContext *cx);
+
+    inline void finalize(js::FreeOp *fop);
+};
+
+typedef int moz_static_assert65[(sizeof(JSFlatString) == sizeof(JSString)) ? 1 : -1];
+
+class JSExtensibleString : public JSFlatString
+{
+
+    bool isExtensible() const ;
+    JSExtensibleString &asExtensible() const ;
+
+  public:
+    __attribute__((always_inline)) inline
+    size_t capacity() const {
+        do { } while(0);
+        return d.s.u2.capacity;
+    }
+};
+
+typedef int moz_static_assert66[(sizeof(JSExtensibleString) == sizeof(JSString)) ? 1 : -1];
+
+class JSFixedString : public JSFlatString
+{
+    void init(const jschar *chars, size_t length);
+
+
+    JSFlatString *ensureFixed(JSContext *cx) ;
+    bool isFixed() const ;
+    JSFixedString &asFixed() const ;
+
+  public:
+    static inline JSFixedString *new_(JSContext *cx, const jschar *chars, size_t length);
+
+
+
+
+
+
+    inline JSAtom *morphAtomizedStringIntoAtom();
+};
+
+typedef int moz_static_assert67[(sizeof(JSFixedString) == sizeof(JSString)) ? 1 : -1];
+
+class JSInlineString : public JSFixedString
+{
+    static const size_t MAX_INLINE_LENGTH = NUM_INLINE_CHARS - 1;
+
+  public:
+    static inline JSInlineString *new_(JSContext *cx);
+
+    inline jschar *init(size_t length);
+
+    inline void resetLength(size_t length);
+
+    static bool lengthFits(size_t length) {
+        return length <= MAX_INLINE_LENGTH;
+    }
+
+};
+
+typedef int moz_static_assert68[(sizeof(JSInlineString) == sizeof(JSString)) ? 1 : -1];
+
+class JSShortString : public JSInlineString
+{
+
+    static const size_t INLINE_EXTENSION_CHARS = sizeof(JSString::Data) / sizeof(jschar);
+
+    static void staticAsserts() {
+        typedef int moz_static_assert69[(INLINE_EXTENSION_CHARS % js::gc::Cell::CellSize == 0) ? 1 : -1];
+        typedef int
+
+ moz_static_assert70
+# 582 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String.h"
+        [(MAX_SHORT_LENGTH + 1 == (sizeof(JSShortString) - __builtin_offsetof (JSShortString, d.inlineStorage)) / sizeof(jschar)) ? 1 : -1]
+
+                                                                                     ;
+    }
+
+    jschar inlineStorageExtension[INLINE_EXTENSION_CHARS];
+
+  public:
+    static inline JSShortString *new_(JSContext *cx);
+
+    jschar *inlineStorageBeforeInit() {
+        return d.inlineStorage;
+    }
+
+    inline void initAtOffsetInBuffer(const jschar *chars, size_t length);
+
+    static const size_t MAX_SHORT_LENGTH = JSString::NUM_INLINE_CHARS +
+                                           INLINE_EXTENSION_CHARS
+                                           -1 ;
+
+    static bool lengthFits(size_t length) {
+        return length <= MAX_SHORT_LENGTH;
+    }
+
+
+
+    __attribute__((always_inline)) inline void finalize(js::FreeOp *fop);
+};
+
+typedef int moz_static_assert71[(sizeof(JSShortString) == 2 * sizeof(JSString)) ? 1 : -1];
+
+class JSExternalString : public JSFixedString
+{
+    void init(const jschar *chars, size_t length, const JSStringFinalizer *fin);
+
+
+    bool isExternal() const ;
+    JSExternalString &asExternal() const ;
+
+  public:
+    static inline JSExternalString *new_(JSContext *cx, const jschar *chars, size_t length,
+                                         const JSStringFinalizer *fin);
+
+    const JSStringFinalizer *externalFinalizer() const {
+        do { } while(0);
+        return d.s.u2.externalFinalizer;
+    }
+
+
+
+    inline void finalize(js::FreeOp *fop);
+};
+
+typedef int moz_static_assert72[(sizeof(JSExternalString) == sizeof(JSString)) ? 1 : -1];
+
+class JSUndependedString : public JSFixedString
+{
+
+
+
+
+
+};
+
+typedef int moz_static_assert73[(sizeof(JSUndependedString) == sizeof(JSString)) ? 1 : -1];
+
+class JSAtom : public JSFixedString
+{
+
+    bool isAtom() const ;
+    JSAtom &asAtom() const ;
+
+  public:
+
+    inline js::PropertyName *asPropertyName();
+
+    inline void finalize(js::FreeOp *fop);
+
+
+
+
+};
+
+typedef int moz_static_assert74[(sizeof(JSAtom) == sizeof(JSString)) ? 1 : -1];
+
+class JSInlineAtom : public JSInlineString
+{
+
+
+
+
+};
+
+typedef int moz_static_assert75[(sizeof(JSInlineAtom) == sizeof(JSInlineString)) ? 1 : -1];
+
+class JSShortAtom : public JSShortString
+{
+
+
+
+
+};
+
+typedef int moz_static_assert76[(sizeof(JSShortAtom) == sizeof(JSShortString)) ? 1 : -1];
+
+namespace js {
+
+class StaticStrings
+{
+  private:
+
+    static const size_t SMALL_CHAR_LIMIT = 128U;
+    static const size_t NUM_SMALL_CHARS = 64U;
+
+    static const size_t INT_STATIC_LIMIT = 256U;
+
+    JSAtom *length2StaticTable[NUM_SMALL_CHARS * NUM_SMALL_CHARS];
+    JSAtom *intStaticTable[INT_STATIC_LIMIT];
+
+  public:
+
+    static const size_t UNIT_STATIC_LIMIT = 256U;
+    JSAtom *unitStaticTable[UNIT_STATIC_LIMIT];
+
+    StaticStrings() {
+        PodArrayZero(unitStaticTable);
+        PodArrayZero(length2StaticTable);
+        PodArrayZero(intStaticTable);
+    }
+
+    bool init(JSContext *cx);
+    void trace(JSTracer *trc);
+
+    static inline bool hasUint(uint32_t u);
+    inline JSAtom *getUint(uint32_t u);
+
+    static inline bool hasInt(int32_t i);
+    inline JSAtom *getInt(int32_t i);
+
+    static inline bool hasUnit(jschar c);
+    JSAtom *getUnit(jschar c);
+
+
+    inline JSLinearString *getUnitStringForElement(JSContext *cx, JSString *str, size_t index);
+
+    static bool isStatic(JSAtom *atom);
+
+
+    inline JSAtom *lookup(const jschar *chars, size_t length);
+
+  private:
+    typedef uint8_t SmallChar;
+    static const SmallChar INVALID_SMALL_CHAR = -1;
+
+    static inline bool fitsInSmallChar(jschar c);
+
+    static const SmallChar toSmallChar[];
+
+    JSAtom *getLength2(jschar c1, jschar c2);
+    JSAtom *getLength2(uint32_t u);
+};
+# 759 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String.h"
+class PropertyName : public JSAtom
+{};
+
+typedef int moz_static_assert77[(sizeof(PropertyName) == sizeof(JSString)) ? 1 : -1];
+
+static __attribute__((always_inline)) inline jsid
+NameToId(PropertyName *name)
+{
+    return NON_INTEGER_ATOM_TO_JSID(name);
+}
+
+typedef HeapPtr<JSAtom> HeapPtrAtom;
+
+}
+
+
+
+__attribute__((always_inline)) inline const jschar *
+JSString::getChars(JSContext *cx)
+{
+    if (JSLinearString *str = ensureLinear(cx))
+        return str->chars();
+    return __null;
+}
+
+__attribute__((always_inline)) inline const jschar *
+JSString::getCharsZ(JSContext *cx)
+{
+    if (JSFlatString *str = ensureFlat(cx))
+        return str->chars();
+    return __null;
+}
+
+__attribute__((always_inline)) inline JSLinearString *
+JSString::ensureLinear(JSContext *cx)
+{
+    return isLinear()
+           ? &asLinear()
+           : asRope().flatten(cx);
+}
+
+__attribute__((always_inline)) inline JSFlatString *
+JSString::ensureFlat(JSContext *cx)
+{
+    return isFlat()
+           ? &asFlat()
+           : isDependent()
+             ? asDependent().undepend(cx)
+             : asRope().flatten(cx);
+}
+
+__attribute__((always_inline)) inline JSFixedString *
+JSString::ensureFixed(JSContext *cx)
+{
+    if (!ensureFlat(cx))
+        return __null;
+    if (isExtensible())
+        d.lengthAndFlags = buildLengthAndFlags(length(), FIXED_FLAGS);
+    return &asFixed();
+}
+
+inline js::PropertyName *
+JSAtom::asPropertyName()
+{
+
+
+
+
+    return static_cast<js::PropertyName *>(this);
+}
+# 34 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h" 2
+
+namespace js {
+
+class AutoPropDescArrayRooter;
+class BaseProxyHandler;
+class CallObject;
+struct GCMarker;
+struct NativeIterator;
+
+namespace mjit { class Compiler; }
+
+inline JSObject *
+CastAsObject(PropertyOp op)
+{
+    return (__extension__ (JSObject *) (size_t) (op));
+}
+
+inline JSObject *
+CastAsObject(StrictPropertyOp op)
+{
+    return (__extension__ (JSObject *) (size_t) (op));
+}
+
+inline Value
+CastAsObjectJsval(PropertyOp op)
+{
+    return ObjectOrNullValue(CastAsObject(op));
+}
+
+inline Value
+CastAsObjectJsval(StrictPropertyOp op)
+{
+    return ObjectOrNullValue(CastAsObject(op));
+}
+
+
+
+
+
+
+
+#define JS_PSG(name,getter,flags) {name, 0, (flags) | JSPROP_SHARED | JSPROP_NATIVE_ACCESSORS, (JSPropertyOp)getter, NULL}
+
+
+#define JS_PSGS(name,getter,setter,flags) {name, 0, (flags) | JSPROP_SHARED | JSPROP_NATIVE_ACCESSORS, (JSPropertyOp)getter, (JSStrictPropertyOp)setter}
+
+
+#define JS_PS_END {0, 0, 0, 0, 0}
+
+
+
+typedef Vector<PropDesc, 1> PropDescArray;
+
+
+
+
+
+
+
+namespace baseops {
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+LookupProperty(JSContext *cx, HandleObject obj, HandleId id, JSObject **objp,
+               JSProperty **propp);
+
+inline bool
+LookupProperty(JSContext *cx, HandleObject obj, PropertyName *name,
+               JSObject **objp, JSProperty **propp)
+{
+    return LookupProperty(cx, obj, RootedId(cx, NameToId(name)), objp, propp);
+}
+
+extern __attribute__((visibility("default"))) JSBool
+LookupElement(JSContext *cx, HandleObject obj, uint32_t index,
+              JSObject **objp, JSProperty **propp);
+
+extern JSBool
+DefineProperty(JSContext *cx, HandleObject obj, HandleId id, const js::Value *value,
+               JSPropertyOp getter, JSStrictPropertyOp setter, unsigned attrs);
+
+extern JSBool
+DefineElement(JSContext *cx, HandleObject obj, uint32_t index, const js::Value *value,
+              JSPropertyOp getter, JSStrictPropertyOp setter, unsigned attrs);
+
+extern JSBool
+GetProperty(JSContext *cx, HandleObject obj, HandleObject receiver, HandleId id, js::Value *vp);
+
+extern JSBool
+GetElement(JSContext *cx, HandleObject obj, HandleObject receiver, uint32_t index, js::Value *vp);
+
+inline JSBool
+GetProperty(JSContext *cx, HandleObject obj, HandleId id, js::Value *vp)
+{
+    return GetProperty(cx, obj, obj, id, vp);
+}
+
+inline JSBool
+GetElement(JSContext *cx, HandleObject obj, uint32_t index, js::Value *vp)
+{
+    return GetElement(cx, obj, obj, index, vp);
+}
+
+extern JSBool
+GetPropertyDefault(JSContext *cx, HandleObject obj, HandleId id, const Value &def, Value *vp);
+
+extern JSBool
+SetPropertyHelper(JSContext *cx, HandleObject obj, HandleId id, unsigned defineHow,
+                  Value *vp, JSBool strict);
+
+inline bool
+SetPropertyHelper(JSContext *cx, HandleObject obj, PropertyName *name, unsigned defineHow,
+                  Value *vp, JSBool strict)
+{
+    return SetPropertyHelper(cx, obj, RootedId(cx, NameToId(name)), defineHow, vp, strict);
+}
+
+extern JSBool
+SetElementHelper(JSContext *cx, HandleObject obj, uint32_t index, unsigned defineHow,
+                 Value *vp, JSBool strict);
+
+extern JSType
+TypeOf(JSContext *cx, HandleObject obj);
+
+extern JSBool
+GetAttributes(JSContext *cx, HandleObject obj, HandleId id, unsigned *attrsp);
+
+extern JSBool
+SetAttributes(JSContext *cx, HandleObject obj, HandleId id, unsigned *attrsp);
+
+extern JSBool
+GetElementAttributes(JSContext *cx, HandleObject obj, uint32_t index, unsigned *attrsp);
+
+extern JSBool
+SetElementAttributes(JSContext *cx, HandleObject obj, uint32_t index, unsigned *attrsp);
+
+extern JSBool
+DeleteProperty(JSContext *cx, HandleObject obj, HandlePropertyName name, Value *rval, JSBool strict);
+
+extern JSBool
+DeleteElement(JSContext *cx, HandleObject obj, uint32_t index, Value *rval, JSBool strict);
+
+extern JSBool
+DeleteSpecial(JSContext *cx, HandleObject obj, HandleSpecialId sid, Value *rval, JSBool strict);
+
+extern JSBool
+DeleteGeneric(JSContext *cx, HandleObject obj, HandleId id, Value *rval, JSBool strict);
+
+}
+
+
+extern JSBool
+DefaultValue(JSContext *cx, HandleObject obj, JSType hint, Value *vp);
+
+extern Class ArrayClass;
+extern Class ArrayBufferClass;
+extern Class BlockClass;
+extern Class BooleanClass;
+extern Class CallableObjectClass;
+extern Class DataViewClass;
+extern Class DateClass;
+extern Class ErrorClass;
+extern Class ElementIteratorClass;
+extern Class GeneratorClass;
+extern Class IteratorClass;
+extern Class JSONClass;
+extern Class MathClass;
+extern Class NumberClass;
+extern Class NormalArgumentsObjectClass;
+extern Class ObjectClass;
+extern Class ProxyClass;
+extern Class RegExpClass;
+extern Class RegExpStaticsClass;
+extern Class SlowArrayClass;
+extern Class StopIterationClass;
+extern Class StringClass;
+extern Class StrictArgumentsObjectClass;
+extern Class WeakMapClass;
+extern Class WithClass;
+extern Class XMLFilterClass;
+
+class ArgumentsObject;
+class ArrayBufferObject;
+class BlockObject;
+class BooleanObject;
+class ClonedBlockObject;
+class DataViewObject;
+class DebugScopeObject;
+class DeclEnvObject;
+class ElementIteratorObject;
+class GlobalObject;
+class NestedScopeObject;
+class NewObjectCache;
+class NormalArgumentsObject;
+class NumberObject;
+class ScopeObject;
+class StaticBlockObject;
+class StrictArgumentsObject;
+class StringObject;
+class RegExpObject;
+class WithObject;
+
+}
+# 252 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+struct JSObject : public js::ObjectImpl
+{
+  private:
+    friend struct js::Shape;
+    friend struct js::GCMarker;
+    friend class js::NewObjectCache;
+
+
+    void makeLazyType(JSContext *cx);
+
+  public:
+
+
+
+
+    bool setLastProperty(JSContext *cx, const js::Shape *shape);
+
+
+    inline void setLastPropertyInfallible(const js::Shape *shape);
+
+
+    static inline JSObject *create(JSContext *cx,
+                                   js::gc::AllocKind kind,
+                                   js::HandleShape shape,
+                                   js::HandleTypeObject type,
+                                   js::HeapSlot *slots);
+
+
+    static inline JSObject *createDenseArray(JSContext *cx,
+                                             js::gc::AllocKind kind,
+                                             js::HandleShape shape,
+                                             js::HandleTypeObject type,
+                                             uint32_t length);
+
+
+
+
+
+
+    inline void removeLastProperty(JSContext *cx);
+    inline bool canRemoveLastProperty();
+
+
+
+
+
+    bool setSlotSpan(JSContext *cx, uint32_t span);
+
+    inline bool nativeContains(JSContext *cx, jsid id);
+    inline bool nativeContains(JSContext *cx, const js::Shape &shape);
+
+
+    static const uint32_t NELEMENTS_LIMIT = ((uint32_t)1 << (28));
+
+  public:
+    inline bool setDelegate(JSContext *cx);
+
+    inline bool isBoundFunction() const;
+
+
+
+
+
+
+    inline bool isSystem() const;
+    inline bool setSystem(JSContext *cx);
+
+    inline bool hasSpecialEquality() const;
+
+    inline bool watched() const;
+    inline bool setWatched(JSContext *cx);
+
+
+    inline bool isVarObj();
+    inline bool setVarObj(JSContext *cx);
+
+
+
+
+
+
+
+    inline bool hasUncacheableProto() const;
+    inline bool setUncacheableProto(JSContext *cx);
+
+    bool generateOwnShape(JSContext *cx, js::Shape *newShape = __null) {
+        return replaceWithNewEquivalentShape(cx, lastProperty(), newShape);
+    }
+
+  private:
+    js::Shape *replaceWithNewEquivalentShape(JSContext *cx, js::Shape *existingShape,
+                                             js::Shape *newShape = __null);
+
+    enum GenerateShape {
+        GENERATE_NONE,
+        GENERATE_SHAPE
+    };
+
+    bool setFlag(JSContext *cx, uint32_t flag,
+                 GenerateShape generateShape = GENERATE_NONE);
+
+  public:
+    inline bool nativeEmpty() const;
+
+    bool shadowingShapeChange(JSContext *cx, const js::Shape &shape);
+
+
+    inline bool isIndexed() const;
+
+    inline uint32_t propertyCount() const;
+
+    inline bool hasShapeTable() const;
+
+    inline size_t computedSizeOfThisSlotsElements() const;
+
+    inline void sizeOfExcludingThis(JSMallocSizeOfFun mallocSizeOf,
+                                    size_t *slotsSize, size_t *elementsSize,
+                                    size_t *miscSize) const;
+
+    static const uint32_t MAX_FIXED_SLOTS = 16;
+
+  public:
+
+
+
+
+    inline bool isFixedSlot(size_t slot);
+
+
+    inline size_t dynamicSlotIndex(size_t slot);
+
+
+    inline const js::HeapSlot *getRawSlots();
+
+
+
+
+
+
+    bool growSlots(JSContext *cx, uint32_t oldCount, uint32_t newCount);
+    void shrinkSlots(JSContext *cx, uint32_t oldCount, uint32_t newCount);
+
+    bool hasDynamicSlots() const { return slots != __null; }
+
+  protected:
+    inline bool updateSlotsForSpan(JSContext *cx, size_t oldSpan, size_t newSpan);
+
+  public:
+
+
+
+
+    inline void prepareSlotRangeForOverwrite(size_t start, size_t end);
+    inline void prepareElementRangeForOverwrite(size_t start, size_t end);
+
+    void rollbackProperties(JSContext *cx, uint32_t slotSpan);
+
+    inline void nativeSetSlot(unsigned slot, const js::Value &value);
+    inline void nativeSetSlotWithType(JSContext *cx, const js::Shape *shape, const js::Value &value);
+
+    inline const js::Value &getReservedSlot(unsigned index) const;
+    inline js::HeapSlot &getReservedSlotRef(unsigned index);
+    inline void initReservedSlot(unsigned index, const js::Value &v);
+    inline void setReservedSlot(unsigned index, const js::Value &v);
+
+
+
+
+
+    inline bool setSingletonType(JSContext *cx);
+
+    inline js::types::TypeObject *getType(JSContext *cx);
+
+    const js::HeapPtr<js::types::TypeObject> &typeFromGC() const {
+
+        return type_;
+    }
+
+    inline void setType(js::types::TypeObject *newType);
+
+    js::types::TypeObject *getNewType(JSContext *cx, JSFunction *fun = __null);
+# 443 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+    inline bool setIteratedSingleton(JSContext *cx);
+
+
+
+
+
+    bool setNewTypeUnknown(JSContext *cx);
+
+
+    bool splicePrototype(JSContext *cx, JSObject *proto);
+
+
+
+
+
+    bool shouldSplicePrototype(JSContext *cx);
+# 487 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+    inline JSObject *getParent() const;
+    static bool setParent(JSContext *cx, js::HandleObject obj, js::HandleObject newParent);
+
+
+
+
+
+
+    inline JSObject *enclosingScope();
+
+    inline js::GlobalObject &global() const;
+
+
+    inline JSPrincipals *principals(JSContext *cx);
+
+
+    inline bool clearType(JSContext *cx);
+    bool clearParent(JSContext *cx);
+
+
+
+
+
+  private:
+    enum ImmutabilityType { SEAL, FREEZE };
+
+
+
+
+
+
+
+    bool sealOrFreeze(JSContext *cx, ImmutabilityType it);
+
+    bool isSealedOrFrozen(JSContext *cx, ImmutabilityType it, bool *resultp);
+
+    static inline unsigned getSealedOrFrozenAttributes(unsigned attrs, ImmutabilityType it);
+
+  public:
+    bool preventExtensions(JSContext *cx);
+
+
+    inline bool seal(JSContext *cx) { return sealOrFreeze(cx, SEAL); }
+
+    bool freeze(JSContext *cx) { return sealOrFreeze(cx, FREEZE); }
+
+    bool isSealed(JSContext *cx, bool *resultp) { return isSealedOrFrozen(cx, SEAL, resultp); }
+    bool isFrozen(JSContext *cx, bool *resultp) { return isSealedOrFrozen(cx, FREEZE, resultp); }
+
+
+
+    inline bool ensureElements(JSContext *cx, unsigned cap);
+    bool growElements(JSContext *cx, unsigned cap);
+    void shrinkElements(JSContext *cx, unsigned cap);
+
+    inline js::ElementIteratorObject *asElementIterator();
+
+
+
+
+
+    bool allocateSlowArrayElements(JSContext *cx);
+
+    inline uint32_t getArrayLength() const;
+    inline void setArrayLength(JSContext *cx, uint32_t length);
+
+    inline uint32_t getDenseArrayCapacity();
+    inline void setDenseArrayLength(uint32_t length);
+    inline void setDenseArrayInitializedLength(uint32_t length);
+    inline void ensureDenseArrayInitializedLength(JSContext *cx, unsigned index, unsigned extra);
+    inline void setDenseArrayElement(unsigned idx, const js::Value &val);
+    inline void initDenseArrayElement(unsigned idx, const js::Value &val);
+    inline void setDenseArrayElementWithType(JSContext *cx, unsigned idx, const js::Value &val);
+    inline void initDenseArrayElementWithType(JSContext *cx, unsigned idx, const js::Value &val);
+    inline void copyDenseArrayElements(unsigned dstStart, const js::Value *src, unsigned count);
+    inline void initDenseArrayElements(unsigned dstStart, const js::Value *src, unsigned count);
+    inline void moveDenseArrayElements(unsigned dstStart, unsigned srcStart, unsigned count);
+    inline void moveDenseArrayElementsUnbarriered(unsigned dstStart, unsigned srcStart, unsigned count);
+    inline bool denseArrayHasInlineSlots() const;
+
+
+    inline void markDenseArrayNotPacked(JSContext *cx);
+# 577 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+    enum EnsureDenseResult { ED_OK, ED_FAILED, ED_SPARSE };
+    inline EnsureDenseResult ensureDenseArrayElements(JSContext *cx, unsigned index, unsigned extra);
+
+
+
+
+
+    bool willBeSparseDenseArray(unsigned requiredCapacity, unsigned newElementsHint);
+
+    static bool makeDenseArraySlow(JSContext *cx, js::HandleObject obj);
+
+
+
+
+
+
+    bool arrayGetOwnDataElement(JSContext *cx, size_t i, js::Value *vp);
+
+  public:
+
+
+
+
+    static const uint32_t JSSLOT_DATE_UTC_TIME = 0;
+
+
+
+
+
+
+    static const uint32_t JSSLOT_DATE_COMPONENTS_START = 1;
+
+    static const uint32_t JSSLOT_DATE_LOCAL_TIME = 1;
+    static const uint32_t JSSLOT_DATE_LOCAL_YEAR = 2;
+    static const uint32_t JSSLOT_DATE_LOCAL_MONTH = 3;
+    static const uint32_t JSSLOT_DATE_LOCAL_DATE = 4;
+    static const uint32_t JSSLOT_DATE_LOCAL_DAY = 5;
+    static const uint32_t JSSLOT_DATE_LOCAL_HOURS = 6;
+    static const uint32_t JSSLOT_DATE_LOCAL_MINUTES = 7;
+    static const uint32_t JSSLOT_DATE_LOCAL_SECONDS = 8;
+
+    static const uint32_t DATE_CLASS_RESERVED_SLOTS = 9;
+
+    inline const js::Value &getDateUTCTime() const;
+    inline void setDateUTCTime(const js::Value &pthis);
+
+
+
+
+
+    friend struct JSFunction;
+
+    inline JSFunction *toFunction();
+    inline const JSFunction *toFunction() const;
+
+  public:
+
+
+
+
+    static const uint32_t ITER_CLASS_NFIXED_SLOTS = 1;
+
+    inline js::NativeIterator *getNativeIterator() const;
+    inline void setNativeIterator(js::NativeIterator *);
+# 653 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+  private:
+    static const uint32_t JSSLOT_NAME_PREFIX = 0;
+    static const uint32_t JSSLOT_NAME_URI = 1;
+
+    static const uint32_t JSSLOT_NAMESPACE_DECLARED = 2;
+
+    static const uint32_t JSSLOT_QNAME_LOCAL_NAME = 2;
+
+  public:
+    static const uint32_t NAMESPACE_CLASS_RESERVED_SLOTS = 3;
+    static const uint32_t QNAME_CLASS_RESERVED_SLOTS = 3;
+
+    inline JSLinearString *getNamePrefix() const;
+    inline jsval getNamePrefixVal() const;
+    inline void setNamePrefix(JSLinearString *prefix);
+    inline void clearNamePrefix();
+
+    inline JSLinearString *getNameURI() const;
+    inline jsval getNameURIVal() const;
+    inline void setNameURI(JSLinearString *uri);
+
+    inline jsval getNamespaceDeclared() const;
+    inline void setNamespaceDeclared(jsval decl);
+
+    inline JSAtom *getQNameLocalName() const;
+    inline jsval getQNameLocalNameVal() const;
+    inline void setQNameLocalName(JSAtom *name);
+
+
+
+
+    inline bool isCallable();
+
+    inline void finish(js::FreeOp *fop);
+    __attribute__((always_inline)) inline void finalize(js::FreeOp *fop);
+
+    inline bool hasProperty(JSContext *cx, js::HandleId id, bool *foundp, unsigned flags = 0);
+# 698 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+    bool allocSlot(JSContext *cx, uint32_t *slotp);
+    void freeSlot(JSContext *cx, uint32_t slot);
+
+  public:
+    static bool reportReadOnly(JSContext *cx, jsid id, unsigned report = 0x0);
+    bool reportNotConfigurable(JSContext* cx, jsid id, unsigned report = 0x0);
+    bool reportNotExtensible(JSContext *cx, unsigned report = 0x0);
+
+
+
+
+
+
+
+    bool callMethod(JSContext *cx, js::HandleId id, unsigned argc, js::Value *argv, js::Value *vp);
+
+  private:
+    js::Shape *getChildProperty(JSContext *cx, js::Shape *parent, js::StackShape &child);
+
+  protected:
+
+
+
+
+
+
+
+    js::Shape *addPropertyInternal(JSContext *cx, jsid id,
+                                   JSPropertyOp getter, JSStrictPropertyOp setter,
+                                   uint32_t slot, unsigned attrs,
+                                   unsigned flags, int shortid, js::Shape **spp,
+                                   bool allowDictionary);
+
+  private:
+    bool toDictionaryMode(JSContext *cx);
+
+    struct TradeGutsReserved;
+    static bool ReserveForTradeGuts(JSContext *cx, JSObject *a, JSObject *b,
+                                    TradeGutsReserved &reserved);
+
+    static void TradeGuts(JSContext *cx, JSObject *a, JSObject *b,
+                          TradeGutsReserved &reserved);
+
+  public:
+
+    js::Shape *addProperty(JSContext *cx, jsid id,
+                           JSPropertyOp getter, JSStrictPropertyOp setter,
+                           uint32_t slot, unsigned attrs,
+                           unsigned flags, int shortid, bool allowDictionary = true);
+
+
+    js::Shape *addDataProperty(JSContext *cx, jsid id, uint32_t slot, unsigned attrs) {
+        do { } while(0);
+        return addProperty(cx, id, __null, __null, slot, attrs, 0, 0);
+    }
+
+
+    js::Shape *putProperty(JSContext *cx, jsid id,
+                           JSPropertyOp getter, JSStrictPropertyOp setter,
+                           uint32_t slot, unsigned attrs,
+                           unsigned flags, int shortid);
+    inline js::Shape *
+    putProperty(JSContext *cx, js::PropertyName *name,
+                JSPropertyOp getter, JSStrictPropertyOp setter,
+                uint32_t slot, unsigned attrs, unsigned flags, int shortid) {
+        return putProperty(cx, js::NameToId(name), getter, setter, slot, attrs, flags, shortid);
+    }
+
+
+    js::Shape *changeProperty(JSContext *cx, js::Shape *shape, unsigned attrs, unsigned mask,
+                              JSPropertyOp getter, JSStrictPropertyOp setter);
+
+    inline bool changePropertyAttributes(JSContext *cx, js::Shape *shape, unsigned attrs);
+
+
+    bool removeProperty(JSContext *cx, jsid id);
+
+
+    void clear(JSContext *cx);
+
+    inline JSBool lookupGeneric(JSContext *cx, js::HandleId id, JSObject **objp, JSProperty **propp);
+    inline JSBool lookupProperty(JSContext *cx, js::PropertyName *name, JSObject **objp, JSProperty **propp);
+    inline JSBool lookupElement(JSContext *cx, uint32_t index,
+                                JSObject **objp, JSProperty **propp);
+    inline JSBool lookupSpecial(JSContext *cx, js::SpecialId sid,
+                                JSObject **objp, JSProperty **propp);
+
+    inline JSBool defineGeneric(JSContext *cx, js::HandleId id, const js::Value &value,
+                                JSPropertyOp getter = JS_PropertyStub,
+                                JSStrictPropertyOp setter = JS_StrictPropertyStub,
+                                unsigned attrs = 0x01);
+    inline JSBool defineProperty(JSContext *cx, js::PropertyName *name, const js::Value &value,
+                                 JSPropertyOp getter = JS_PropertyStub,
+                                 JSStrictPropertyOp setter = JS_StrictPropertyStub,
+                                 unsigned attrs = 0x01);
+
+    inline JSBool defineElement(JSContext *cx, uint32_t index, const js::Value &value,
+                                JSPropertyOp getter = JS_PropertyStub,
+                                JSStrictPropertyOp setter = JS_StrictPropertyStub,
+                                unsigned attrs = 0x01);
+    inline JSBool defineSpecial(JSContext *cx, js::SpecialId sid, const js::Value &value,
+                                JSPropertyOp getter = JS_PropertyStub,
+                                JSStrictPropertyOp setter = JS_StrictPropertyStub,
+                                unsigned attrs = 0x01);
+
+    inline JSBool getGeneric(JSContext *cx, js::HandleObject receiver, js::HandleId id, js::Value *vp);
+    inline JSBool getProperty(JSContext *cx, js::HandleObject receiver, js::PropertyName *name,
+                              js::Value *vp);
+    inline JSBool getElement(JSContext *cx, js::HandleObject receiver, uint32_t index, js::Value *vp);
+
+
+    inline JSBool getElementIfPresent(JSContext *cx, js::HandleObject receiver, uint32_t index,
+                                      js::Value *vp, bool *present);
+    inline JSBool getSpecial(JSContext *cx, js::HandleObject receiver, js::SpecialId sid, js::Value *vp);
+
+    inline JSBool getGeneric(JSContext *cx, js::HandleId id, js::Value *vp);
+    inline JSBool getProperty(JSContext *cx, js::PropertyName *name, js::Value *vp);
+    inline JSBool getElement(JSContext *cx, uint32_t index, js::Value *vp);
+    inline JSBool getSpecial(JSContext *cx, js::SpecialId sid, js::Value *vp);
+
+    inline JSBool setGeneric(JSContext *cx, js::HandleId id, js::Value *vp, JSBool strict);
+    inline JSBool setProperty(JSContext *cx, js::PropertyName *name, js::Value *vp, JSBool strict);
+    inline JSBool setElement(JSContext *cx, uint32_t index, js::Value *vp, JSBool strict);
+    inline JSBool setSpecial(JSContext *cx, js::SpecialId sid, js::Value *vp, JSBool strict);
+
+    JSBool nonNativeSetProperty(JSContext *cx, js::HandleId id, js::Value *vp, JSBool strict);
+    JSBool nonNativeSetElement(JSContext *cx, uint32_t index, js::Value *vp, JSBool strict);
+
+    inline JSBool getGenericAttributes(JSContext *cx, js::HandleId id, unsigned *attrsp);
+    inline JSBool getPropertyAttributes(JSContext *cx, js::PropertyName *name, unsigned *attrsp);
+    inline JSBool getElementAttributes(JSContext *cx, uint32_t index, unsigned *attrsp);
+    inline JSBool getSpecialAttributes(JSContext *cx, js::SpecialId sid, unsigned *attrsp);
+
+    inline JSBool setGenericAttributes(JSContext *cx, js::HandleId id, unsigned *attrsp);
+    inline JSBool setPropertyAttributes(JSContext *cx, js::PropertyName *name, unsigned *attrsp);
+    inline JSBool setElementAttributes(JSContext *cx, uint32_t index, unsigned *attrsp);
+    inline JSBool setSpecialAttributes(JSContext *cx, js::SpecialId sid, unsigned *attrsp);
+
+    inline bool deleteProperty(JSContext *cx, js::HandlePropertyName name, js::Value *rval, bool strict);
+    inline bool deleteElement(JSContext *cx, uint32_t index, js::Value *rval, bool strict);
+    inline bool deleteSpecial(JSContext *cx, js::HandleSpecialId sid, js::Value *rval, bool strict);
+    bool deleteByValue(JSContext *cx, const js::Value &property, js::Value *rval, bool strict);
+
+    inline bool enumerate(JSContext *cx, JSIterateOp iterop, js::Value *statep, jsid *idp);
+    inline bool defaultValue(JSContext *cx, JSType hint, js::Value *vp);
+    inline JSType typeOf(JSContext *cx);
+    inline JSObject *thisObject(JSContext *cx);
+
+    static bool thisObject(JSContext *cx, const js::Value &v, js::Value *vp);
+
+    bool swap(JSContext *cx, JSObject *other);
+
+    inline void initArrayClass();
+# 881 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+    inline bool isArguments() const;
+    inline bool isArrayBuffer() const;
+    inline bool isDataView() const;
+    inline bool isDate() const;
+    inline bool isElementIterator() const;
+    inline bool isError() const;
+    inline bool isFunction() const;
+    inline bool isGenerator() const;
+    inline bool isGlobal() const;
+    inline bool isIterator() const;
+    inline bool isObject() const;
+    inline bool isPrimitive() const;
+    inline bool isProxy() const;
+    inline bool isRegExp() const;
+    inline bool isRegExpStatics() const;
+    inline bool isScope() const;
+    inline bool isScript() const;
+    inline bool isStopIteration() const;
+    inline bool isTypedArray() const;
+    inline bool isWeakMap() const;
+
+    inline bool isNamespace() const;
+    inline bool isQName() const;
+    inline bool isXML() const;
+    inline bool isXMLId() const;
+
+
+
+    inline bool isBlock() const;
+    inline bool isCall() const;
+    inline bool isDeclEnv() const;
+    inline bool isNestedScope() const;
+    inline bool isWith() const;
+    inline bool isClonedBlock() const;
+    inline bool isStaticBlock() const;
+
+
+    inline bool isBoolean() const;
+    inline bool isNumber() const;
+    inline bool isString() const;
+
+
+    inline bool isNormalArguments() const;
+    inline bool isStrictArguments() const;
+
+
+    inline bool isDebugScope() const;
+    inline bool isWrapper() const;
+    inline bool isFunctionProxy() const;
+    inline bool isCrossCompartmentWrapper() const;
+
+    inline js::ArgumentsObject &asArguments();
+    inline js::ArrayBufferObject &asArrayBuffer();
+    inline const js::ArgumentsObject &asArguments() const;
+    inline js::BlockObject &asBlock();
+    inline js::BooleanObject &asBoolean();
+    inline js::CallObject &asCall();
+    inline js::ClonedBlockObject &asClonedBlock();
+    inline js::DataViewObject &asDataView();
+    inline js::DeclEnvObject &asDeclEnv();
+    inline js::DebugScopeObject &asDebugScope();
+    inline js::GlobalObject &asGlobal();
+    inline js::NestedScopeObject &asNestedScope();
+    inline js::NormalArgumentsObject &asNormalArguments();
+    inline js::NumberObject &asNumber();
+    inline js::RegExpObject &asRegExp();
+    inline js::ScopeObject &asScope();
+    inline js::StrictArgumentsObject &asStrictArguments();
+    inline js::StaticBlockObject &asStaticBlock();
+    inline js::StringObject &asString();
+    inline js::WithObject &asWith();
+
+    static inline js::ThingRootKind rootKind() { return js::THING_ROOT_OBJECT; }
+
+
+
+
+
+  private:
+    static void staticAsserts() {
+        typedef int
+ moz_static_assert78
+# 961 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+        [(sizeof(JSObject) == sizeof(js::shadow::Object)) ? 1 : -1]
+                                                                         ;
+        typedef int
+ moz_static_assert79
+# 963 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+        [(sizeof(JSObject) == sizeof(js::ObjectImpl)) ? 1 : -1]
+                                                                     ;
+        typedef int
+ moz_static_assert80
+# 965 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+        [(sizeof(JSObject) % sizeof(js::Value) == 0) ? 1 : -1]
+                                                                        ;
+    }
+
+    JSObject() ;
+    JSObject(const JSObject &other) ;
+    void operator=(const JSObject &other) ;
+};
+
+
+
+
+
+
+static __attribute__((always_inline)) inline bool
+operator==(const JSObject &lhs, const JSObject &rhs)
+{
+    return &lhs == &rhs;
+}
+
+static __attribute__((always_inline)) inline bool
+operator!=(const JSObject &lhs, const JSObject &rhs)
+{
+    return &lhs != &rhs;
+}
+
+struct JSObject_Slots2 : JSObject { js::Value fslots[2]; };
+struct JSObject_Slots4 : JSObject { js::Value fslots[4]; };
+struct JSObject_Slots8 : JSObject { js::Value fslots[8]; };
+struct JSObject_Slots12 : JSObject { js::Value fslots[12]; };
+struct JSObject_Slots16 : JSObject { js::Value fslots[16]; };
+
+#define JSSLOT_FREE(clasp) JSCLASS_RESERVED_SLOTS(clasp)
+
+class JSValueArray {
+  public:
+    jsval *array;
+    size_t length;
+
+    JSValueArray(jsval *v, size_t c) : array(v), length(c) {}
+};
+
+class ValueArray {
+  public:
+    js::Value *array;
+    size_t length;
+
+    ValueArray(js::Value *v, size_t c) : array(v), length(c) {}
+};
+
+
+extern bool
+js_EnterSharpObject(JSContext *cx, js::HandleObject obj, JSIdArray **idap, bool *alreadySeen, bool *isSharp);
+
+extern void
+js_LeaveSharpObject(JSContext *cx, JSIdArray **idap);
+
+
+
+
+
+extern void
+js_TraceSharpMap(JSTracer *trc, JSSharpObjectMap *map);
+
+extern JSBool
+js_HasOwnPropertyHelper(JSContext *cx, js::LookupGenericOp lookup, unsigned argc,
+                        js::Value *vp);
+
+extern JSBool
+js_HasOwnProperty(JSContext *cx, js::LookupGenericOp lookup, js::HandleObject obj, js::HandleId id,
+                  JSObject **objp, JSProperty **propp);
+
+extern JSBool
+js_PropertyIsEnumerable(JSContext *cx, js::HandleObject obj, js::HandleId id, js::Value *vp);
+
+
+extern JSPropertySpec object_props[];
+
+
+
+
+extern JSFunctionSpec object_methods[];
+extern JSFunctionSpec object_static_methods[];
+
+namespace js {
+
+bool
+IsStandardClassResolved(JSObject *obj, js::Class *clasp);
+
+void
+MarkStandardClassInitializedNoProto(JSObject *obj, js::Class *clasp);
+
+}
+
+
+
+
+extern const char js_watch_str[];
+extern const char js_unwatch_str[];
+extern const char js_hasOwnProperty_str[];
+extern const char js_isPrototypeOf_str[];
+extern const char js_propertyIsEnumerable_str[];
+
+
+extern const char js_defineGetter_str[];
+extern const char js_defineSetter_str[];
+extern const char js_lookupGetter_str[];
+extern const char js_lookupSetter_str[];
+
+
+extern JSBool
+js_PopulateObject(JSContext *cx, js::HandleObject newborn, JSObject *props);
+
+
+
+
+extern JSBool
+js_GetClassObject(JSContext *cx, JSObject *obj, JSProtoKey key,
+                  JSObject **objp);
+
+
+
+
+
+extern JSProtoKey
+js_IdentifyClassPrototype(JSObject *obj);
+
+
+
+
+
+extern JSBool
+js_FindClassObject(JSContext *cx, JSObject *start, JSProtoKey key,
+                   js::Value *vp, js::Class *clasp = __null);
+
+
+
+extern JSObject *
+js_CreateThisForFunctionWithProto(JSContext *cx, js::HandleObject callee, JSObject *proto);
+
+
+extern JSObject *
+js_CreateThisForFunction(JSContext *cx, js::HandleObject callee, bool newType);
+
+
+extern JSObject *
+js_CreateThis(JSContext *cx, js::Class *clasp, JSObject *callee);
+
+
+
+
+
+extern js::Shape *
+js_AddNativeProperty(JSContext *cx, js::HandleObject obj, jsid id,
+                     JSPropertyOp getter, JSStrictPropertyOp setter, uint32_t slot,
+                     unsigned attrs, unsigned flags, int shortid);
+
+extern JSBool
+js_DefineOwnProperty(JSContext *cx, js::HandleObject obj, js::HandleId id,
+                     const js::Value &descriptor, JSBool *bp);
+
+namespace js {
+
+
+
+
+const unsigned DNP_CACHE_RESULT = 1;
+const unsigned DNP_DONT_PURGE = 2;
+const unsigned DNP_UNQUALIFIED = 4;
+
+
+const unsigned DNP_SKIP_TYPE = 8;
+
+
+
+
+extern const Shape *
+DefineNativeProperty(JSContext *cx, HandleObject obj, HandleId id, const Value &value,
+                     PropertyOp getter, StrictPropertyOp setter, unsigned attrs,
+                     unsigned flags, int shortid, unsigned defineHow = 0);
+
+inline const Shape *
+DefineNativeProperty(JSContext *cx, HandleObject obj, PropertyName *name, const Value &value,
+                     PropertyOp getter, StrictPropertyOp setter, unsigned attrs,
+                     unsigned flags, int shortid, unsigned defineHow = 0)
+{
+    return DefineNativeProperty(cx, obj, RootedId(cx, NameToId(name)),
+                                value, getter, setter, attrs, flags,
+                                shortid, defineHow);
+}
+
+
+
+
+extern bool
+LookupPropertyWithFlags(JSContext *cx, HandleObject obj, HandleId id, unsigned flags,
+                        JSObject **objp, JSProperty **propp);
+
+inline bool
+LookupPropertyWithFlags(JSContext *cx, HandleObject obj, PropertyName *name, unsigned flags,
+                        JSObject **objp, JSProperty **propp)
+{
+    return LookupPropertyWithFlags(cx, obj, RootedId(cx, NameToId(name)), flags, objp, propp);
+}
+# 1178 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+extern bool
+DefineProperty(JSContext *cx, js::HandleObject obj,
+               js::HandleId id, const PropDesc &desc, bool throwError,
+               bool *rval);
+
+
+
+
+
+extern bool
+ReadPropertyDescriptors(JSContext *cx, JSObject *props, bool checkAccessors,
+                        AutoIdVector *ids, AutoPropDescArrayRooter *descs);
+
+
+
+
+
+static const unsigned RESOLVE_INFER = 0xffff;
+
+
+
+
+extern bool
+FindPropertyHelper(JSContext *cx, HandlePropertyName name,
+                   bool cacheResult, HandleObject scopeChain,
+                   JSObject **objp, JSObject **pobjp, JSProperty **propp);
+
+
+
+
+
+extern bool
+FindProperty(JSContext *cx, HandlePropertyName name, HandleObject scopeChain,
+             JSObject **objp, JSObject **pobjp, JSProperty **propp);
+
+extern JSObject *
+FindIdentifierBase(JSContext *cx, HandleObject scopeChain, HandlePropertyName name);
+
+}
+
+extern JSObject *
+js_FindVariableScope(JSContext *cx, JSFunction **funp);
+
+
+const unsigned JSGET_CACHE_RESULT = 1;
+
+
+
+
+
+
+
+extern JSBool
+js_NativeGet(JSContext *cx, JSObject *obj, JSObject *pobj, const js::Shape *shape, unsigned getHow,
+             js::Value *vp);
+
+extern JSBool
+js_NativeSet(JSContext *cx, JSObject *obj, const js::Shape *shape, bool added,
+             bool strict, js::Value *vp);
+
+namespace js {
+
+bool
+GetPropertyHelper(JSContext *cx, HandleObject obj, jsid id, uint32_t getHow, Value *vp);
+
+inline bool
+GetPropertyHelper(JSContext *cx, HandleObject obj, PropertyName *name, uint32_t getHow, Value *vp)
+{
+    return GetPropertyHelper(cx, obj, NameToId(name), getHow, vp);
+}
+
+bool
+GetOwnPropertyDescriptor(JSContext *cx, HandleObject obj, HandleId id, PropertyDescriptor *desc);
+
+bool
+GetOwnPropertyDescriptor(JSContext *cx, HandleObject obj, HandleId id, Value *vp);
+
+bool
+NewPropertyDescriptorObject(JSContext *cx, const PropertyDescriptor *desc, Value *vp);
+
+extern JSBool
+GetMethod(JSContext *cx, HandleObject obj, HandleId id, unsigned getHow, Value *vp);
+
+inline bool
+GetMethod(JSContext *cx, HandleObject obj, PropertyName *name, unsigned getHow, Value *vp)
+{
+    return GetMethod(cx, obj, RootedId(cx, NameToId(name)), getHow, vp);
+}
+
+
+
+
+
+extern bool
+HasDataProperty(JSContext *cx, HandleObject obj, jsid id, Value *vp);
+
+inline bool
+HasDataProperty(JSContext *cx, HandleObject obj, PropertyName *name, Value *vp)
+{
+    return HasDataProperty(cx, obj, NameToId(name), vp);
+}
+
+extern JSBool
+CheckAccess(JSContext *cx, JSObject *obj, HandleId id, JSAccessMode mode,
+            js::Value *vp, unsigned *attrsp);
+
+}
+
+extern bool
+js_IsDelegate(JSContext *cx, JSObject *obj, const js::Value &v);
+
+
+
+
+
+extern JSBool
+js_PrimitiveToObject(JSContext *cx, js::Value *vp);
+
+extern JSBool
+js_ValueToObjectOrNull(JSContext *cx, const js::Value &v, JSObject **objp);
+
+
+extern JSObject *
+js_ValueToNonNullObject(JSContext *cx, const js::Value &v);
+
+namespace js {
+
+
+
+
+
+extern JSObject *
+ToObjectSlow(JSContext *cx, Value *vp);
+
+__attribute__((always_inline)) inline JSObject *
+ToObject(JSContext *cx, Value *vp)
+{
+    if (vp->isObject())
+        return &vp->toObject();
+    return ToObjectSlow(cx, vp);
+}
+
+
+inline JSObject *
+ValueToObject(JSContext *cx, const Value &v)
+{
+    if (v.isObject())
+        return &v.toObject();
+    return js_ValueToNonNullObject(cx, v);
+}
+
+}
+
+extern void
+js_GetObjectSlotName(JSTracer *trc, char *buf, size_t bufsize);
+
+extern bool
+js_ClearNative(JSContext *cx, JSObject *obj);
+
+extern JSBool
+js_ReportGetterOnlyAssignment(JSContext *cx);
+
+extern unsigned
+js_InferFlags(JSContext *cx, unsigned defaultFlags);
+
+
+JSBool
+js_Object(JSContext *cx, unsigned argc, js::Value *vp);
+# 1354 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+extern __attribute__((visibility("default"))) JSBool
+js_GetClassPrototype(JSContext *cx, JSObject *scope, JSProtoKey protoKey,
+                     JSObject **protop, js::Class *clasp = __null);
+
+namespace js {
+
+extern bool
+SetProto(JSContext *cx, HandleObject obj, HandleObject proto, bool checkForCycles);
+
+extern JSString *
+obj_toStringHelper(JSContext *cx, JSObject *obj);
+
+extern JSBool
+eval(JSContext *cx, unsigned argc, Value *vp);
+
+
+
+
+
+
+extern bool
+DirectEval(JSContext *cx, const CallArgs &args);
+
+
+
+
+
+extern bool
+IsBuiltinEvalForScope(JSObject *scopeChain, const js::Value &v);
+
+
+extern bool
+IsAnyBuiltinEval(JSFunction *fun);
+
+
+extern JSPrincipals *
+PrincipalsForCompiledCode(const CallReceiver &call, JSContext *cx);
+
+extern JSObject *
+NonNullObject(JSContext *cx, const Value &v);
+
+extern const char *
+InformalValueTypeName(const Value &v);
+
+inline void
+DestroyIdArray(FreeOp *fop, JSIdArray *ida);
+
+extern bool
+GetFirstArgumentAsObject(JSContext *cx, unsigned argc, Value *vp, const char *method, JSObject **objp);
+
+
+extern bool
+Throw(JSContext *cx, jsid id, unsigned errorNumber);
+
+extern bool
+Throw(JSContext *cx, JSObject *obj, unsigned errorNumber);
+# 1424 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h"
+extern bool
+CheckDefineProperty(JSContext *cx, HandleObject obj, HandleId id, HandleValue value,
+                    PropertyOp getter, StrictPropertyOp setter, unsigned attrs);
+
+}
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscope.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspropertytree.h" 1
+
+
+
+
+
+
+
+#define jspropertytree_h___ 
+
+
+
+
+
+namespace js {
+
+struct ShapeHasher {
+    typedef js::Shape *Key;
+    typedef js::StackShape Lookup;
+
+    static inline HashNumber hash(const Lookup &l);
+    static inline bool match(Key k, const Lookup &l);
+};
+
+typedef HashSet<js::Shape *, ShapeHasher, SystemAllocPolicy> KidsHash;
+
+class KidsPointer {
+  private:
+    enum {
+        SHAPE = 0,
+        HASH = 1,
+        TAG = 1
+    };
+
+    uintptr_t w;
+
+  public:
+    bool isNull() const { return !w; }
+    void setNull() { w = 0; }
+
+    bool isShape() const { return (w & TAG) == SHAPE && !isNull(); }
+    js::Shape *toShape() const {
+        do { } while(0);
+        return reinterpret_cast<js::Shape *>(w & ~uintptr_t(TAG));
+    }
+    void setShape(js::Shape *shape) {
+        do { } while(0);
+        do { } while(0);
+        w = reinterpret_cast<uintptr_t>(shape) | SHAPE;
+    }
+
+    bool isHash() const { return (w & TAG) == HASH; }
+    KidsHash *toHash() const {
+        do { } while(0);
+        return reinterpret_cast<KidsHash *>(w & ~uintptr_t(TAG));
+    }
+    void setHash(KidsHash *hash) {
+        do { } while(0);
+        do { } while(0);
+        w = reinterpret_cast<uintptr_t>(hash) | HASH;
+    }
+
+
+
+
+};
+
+class PropertyTree
+{
+    friend struct ::JSFunction;
+
+    JSCompartment *compartment;
+
+    bool insertChild(JSContext *cx, js::Shape *parent, js::Shape *child);
+
+    PropertyTree();
+
+  public:
+    enum { MAX_HEIGHT = 128 };
+
+    PropertyTree(JSCompartment *comp)
+        : compartment(comp)
+    {
+    }
+
+    js::Shape *newShape(JSContext *cx);
+    js::Shape *getChild(JSContext *cx, Shape *parent, uint32_t nfixed, const StackShape &child);
+
+
+
+
+
+};
+
+}
+# 20 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscope.h" 2
+# 98 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscope.h"
+namespace js {
+
+
+static const uint32_t SHAPE_INVALID_SLOT = ((uint32_t)1 << (24)) - 1;
+static const uint32_t SHAPE_MAXIMUM_SLOT = ((uint32_t)1 << (24)) - 2;
+
+
+
+
+
+struct ShapeTable {
+    static const uint32_t HASH_BITS = tl::BitSize<HashNumber>::result;
+    static const uint32_t MIN_ENTRIES = 7;
+    static const uint32_t MIN_SIZE_LOG2 = 4;
+    static const uint32_t MIN_SIZE = ((uint32_t)1 << (MIN_SIZE_LOG2));
+
+    int hashShift;
+
+    uint32_t entryCount;
+    uint32_t removedCount;
+    uint32_t freelist;
+
+
+    js::Shape **entries;
+
+    ShapeTable(uint32_t nentries)
+      : hashShift(HASH_BITS - MIN_SIZE_LOG2),
+        entryCount(nentries),
+        removedCount(0),
+        freelist(SHAPE_INVALID_SLOT)
+    {
+
+    }
+
+    ~ShapeTable() {
+        js::UnwantedForeground::free_(entries);
+    }
+
+
+    uint32_t capacity() const { return ((uint32_t)1 << (HASH_BITS - hashShift)); }
+
+
+    static size_t sizeOfEntries(size_t cap) { return cap * sizeof(Shape *); }
+
+
+
+
+
+    size_t sizeOfIncludingThis(JSMallocSizeOfFun mallocSizeOf) const {
+        return mallocSizeOf(this) + mallocSizeOf(entries);
+    }
+
+
+    bool needsToGrow() const {
+        uint32_t size = capacity();
+        return entryCount + removedCount >= size - (size >> 2);
+    }
+
+
+
+
+
+
+    bool grow(JSContext *cx);
+
+
+
+
+
+
+    bool init(JSRuntime *rt, js::Shape *lastProp);
+    bool change(int log2Delta, JSContext *cx);
+    js::Shape **search(jsid id, bool adding);
+};
+
+}
+
+struct JSObject;
+
+namespace js {
+
+class PropertyTree;
+
+
+
+
+#define JSPROP_SHADOWABLE JSPROP_INDEX
+# 234 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscope.h"
+class UnownedBaseShape;
+
+class BaseShape : public js::gc::Cell
+{
+  public:
+    friend struct Shape;
+    friend struct StackBaseShape;
+    friend struct StackShape;
+
+    enum Flag {
+
+        OWNED_SHAPE = 0x1,
+
+
+        HAS_GETTER_OBJECT = 0x2,
+        HAS_SETTER_OBJECT = 0x4,
+
+
+
+
+
+
+
+        EXTENSIBLE_PARENTS = 0x8,
+        DELEGATE = 0x10,
+        SYSTEM = 0x20,
+        NOT_EXTENSIBLE = 0x40,
+        INDEXED = 0x80,
+        BOUND_FUNCTION = 0x100,
+        VAROBJ = 0x200,
+        WATCHED = 0x400,
+        ITERATED_SINGLETON = 0x800,
+        NEW_TYPE_UNKNOWN = 0x1000,
+        UNCACHEABLE_PROTO = 0x2000,
+
+        OBJECT_FLAG_MASK = 0x3ff8
+    };
+
+  private:
+    Class *clasp;
+    HeapPtrObject parent;
+    uint32_t flags;
+    uint32_t slotSpan_;
+
+
+    union {
+        js::PropertyOp rawGetter;
+        JSObject *getterObj;
+
+    };
+
+    union {
+        js::StrictPropertyOp rawSetter;
+        JSObject *setterObj;
+
+    };
+
+
+    HeapPtr<UnownedBaseShape> unowned_;
+
+
+    ShapeTable *table_;
+
+    BaseShape(const BaseShape &base) ;
+
+  public:
+    void finalize(FreeOp *fop);
+
+    inline BaseShape(Class *clasp, JSObject *parent, uint32_t objectFlags);
+    inline BaseShape(Class *clasp, JSObject *parent, uint32_t objectFlags,
+                     uint8_t attrs, PropertyOp rawGetter, StrictPropertyOp rawSetter);
+    inline BaseShape(const StackBaseShape &base);
+
+
+    ~BaseShape();
+
+    inline BaseShape &operator=(const BaseShape &other);
+
+    bool isOwned() const { return !!(flags & OWNED_SHAPE); }
+
+    inline bool matchesGetterSetter(PropertyOp rawGetter,
+                                    StrictPropertyOp rawSetter) const;
+
+    inline void adoptUnowned(UnownedBaseShape *other);
+    inline void setOwned(UnownedBaseShape *unowned);
+
+    JSObject *getObjectParent() const { return parent; }
+    uint32_t getObjectFlags() const { return flags & OBJECT_FLAG_MASK; }
+
+    bool hasGetterObject() const { return !!(flags & HAS_GETTER_OBJECT); }
+    JSObject *getterObject() const { do { } while(0); return getterObj; }
+
+    bool hasSetterObject() const { return !!(flags & HAS_SETTER_OBJECT); }
+    JSObject *setterObject() const { do { } while(0); return setterObj; }
+
+    bool hasTable() const { do { } while (0); return table_ != __null; }
+    ShapeTable &table() const { do { } while(0); return *table_; }
+    void setTable(ShapeTable *table) { do { } while(0); table_ = table; }
+
+    uint32_t slotSpan() const { do { } while(0); return slotSpan_; }
+    void setSlotSpan(uint32_t slotSpan) { do { } while(0); slotSpan_ = slotSpan; }
+
+
+    static UnownedBaseShape *getUnowned(JSContext *cx, const StackBaseShape &base);
+
+
+    inline UnownedBaseShape *unowned();
+
+
+    inline UnownedBaseShape *baseUnowned();
+
+
+    inline UnownedBaseShape *toUnowned();
+
+
+    inline void assertConsistency();
+
+
+    static inline size_t offsetOfClass() { return __builtin_offsetof (BaseShape, clasp); }
+    static inline size_t offsetOfParent() { return __builtin_offsetof (BaseShape, parent); }
+    static inline size_t offsetOfFlags() { return __builtin_offsetof (BaseShape, flags); }
+
+    static inline void writeBarrierPre(BaseShape *shape);
+    static inline void writeBarrierPost(BaseShape *shape, void *addr);
+    static inline void readBarrier(BaseShape *shape);
+
+    static inline ThingRootKind rootKind() { return THING_ROOT_BASE_SHAPE; }
+
+    inline void markChildren(JSTracer *trc);
+
+  private:
+    static void staticAsserts() {
+        typedef int moz_static_assert81[(__builtin_offsetof (BaseShape, clasp) == __builtin_offsetof (js::shadow::BaseShape, clasp)) ? 1 : -1];
+    }
+};
+
+class UnownedBaseShape : public BaseShape {};
+
+UnownedBaseShape *
+BaseShape::unowned()
+{
+    return isOwned() ? baseUnowned() : toUnowned();
+}
+
+UnownedBaseShape *
+BaseShape::toUnowned()
+{
+    do { } while(0); return static_cast<UnownedBaseShape *>(this);
+}
+
+UnownedBaseShape *
+BaseShape::baseUnowned()
+{
+    do { } while(0); return unowned_;
+}
+
+
+struct StackBaseShape
+{
+    typedef const StackBaseShape *Lookup;
+
+    uint32_t flags;
+    Class *clasp;
+    JSObject *parent;
+    PropertyOp rawGetter;
+    StrictPropertyOp rawSetter;
+
+    StackBaseShape(BaseShape *base)
+      : flags(base->flags & BaseShape::OBJECT_FLAG_MASK),
+        clasp(base->clasp),
+        parent(base->parent),
+        rawGetter(__null),
+        rawSetter(__null)
+    {}
+
+    StackBaseShape(Class *clasp, JSObject *parent, uint32_t objectFlags)
+      : flags(objectFlags),
+        clasp(clasp),
+        parent(parent),
+        rawGetter(__null),
+        rawSetter(__null)
+    {}
+
+    inline StackBaseShape(Shape *shape);
+
+    inline void updateGetterSetter(uint8_t attrs,
+                                   PropertyOp rawGetter,
+                                   StrictPropertyOp rawSetter);
+
+    static inline HashNumber hash(const StackBaseShape *lookup);
+    static inline bool match(UnownedBaseShape *key, const StackBaseShape *lookup);
+
+    class AutoRooter : private AutoGCRooter
+    {
+      public:
+        explicit AutoRooter(JSContext *cx, const StackBaseShape *base_
+                            )
+          : AutoGCRooter(cx, STACKBASESHAPE), base(base_), skip(cx, base_)
+        {
+            do { } while (0);
+        }
+
+        friend void AutoGCRooter::trace(JSTracer *trc);
+
+      private:
+        const StackBaseShape *base;
+        SkipRoot skip;
+       
+    };
+};
+
+typedef HashSet<ReadBarriered<UnownedBaseShape>,
+                StackBaseShape,
+                SystemAllocPolicy> BaseShapeSet;
+
+struct Shape : public js::gc::Cell
+{
+    friend struct ::JSObject;
+    friend struct ::JSFunction;
+    friend class js::Bindings;
+    friend class js::ObjectImpl;
+    friend class js::PropertyTree;
+    friend class js::StaticBlockObject;
+    friend struct js::StackShape;
+    friend struct js::StackBaseShape;
+
+  protected:
+    HeapPtrBaseShape base_;
+    HeapId propid_;
+
+    enum SlotInfo
+    {
+
+        FIXED_SLOTS_MAX = 0x1f,
+        FIXED_SLOTS_SHIFT = 27,
+        FIXED_SLOTS_MASK = uint32_t(FIXED_SLOTS_MAX << FIXED_SLOTS_SHIFT),
+
+
+
+
+
+
+
+        LINEAR_SEARCHES_MAX = 0x7,
+        LINEAR_SEARCHES_SHIFT = 24,
+        LINEAR_SEARCHES_MASK = LINEAR_SEARCHES_MAX << LINEAR_SEARCHES_SHIFT,
+
+
+
+
+
+
+
+        SLOT_MASK = ((uint32_t)1 << (24)) - 1
+    } __attribute__((packed));
+
+    uint32_t slotInfo;
+    uint8_t attrs;
+    uint8_t flags;
+    int16_t shortid_;
+
+    HeapPtrShape parent;
+
+    union {
+        KidsPointer kids;
+
+        HeapPtrShape *listp;
+
+
+
+    };
+
+    static inline Shape *search(JSContext *cx, Shape *start, jsid id,
+                                Shape ***pspp, bool adding = false);
+
+
+
+
+
+    inline void removeFromDictionary(JSObject *obj);
+    inline void insertIntoDictionary(HeapPtrShape *dictp);
+
+    inline void initDictionaryShape(const StackShape &child, uint32_t nfixed,
+                                    HeapPtrShape *dictp);
+
+    Shape *getChildBinding(JSContext *cx, const StackShape &child);
+
+
+    static Shape *replaceLastProperty(JSContext *cx, const StackBaseShape &base,
+                                      JSObject *proto, Shape *shape);
+
+    bool hashify(JSContext *cx);
+    void handoffTableTo(Shape *newShape);
+
+    inline void setParent(js::Shape *p);
+
+    bool ensureOwnBaseShape(JSContext *cx) {
+        if (base()->isOwned())
+            return true;
+        return makeOwnBaseShape(cx);
+    }
+
+    bool makeOwnBaseShape(JSContext *cx);
+
+  public:
+    bool hasTable() const { return base()->hasTable(); }
+    js::ShapeTable &table() const { return base()->table(); }
+
+    void sizeOfExcludingThis(JSMallocSizeOfFun mallocSizeOf,
+                             size_t *propTableSize, size_t *kidsSize) const {
+        *propTableSize = hasTable() ? table().sizeOfIncludingThis(mallocSizeOf) : 0;
+        *kidsSize = !inDictionary() && kids.isHash()
+                  ? kids.toHash()->sizeOfIncludingThis(mallocSizeOf)
+                  : 0;
+    }
+
+    bool isNative() const {
+        do { } while(0);
+        return !(flags & NON_NATIVE);
+    }
+
+    const HeapPtrShape &previous() const {
+        return parent;
+    }
+
+    class Range {
+      protected:
+        friend struct Shape;
+        const Shape *cursor;
+
+      public:
+        Range(const Shape *shape) : cursor(shape) { }
+
+        bool empty() const {
+            return cursor->isEmptyShape();
+        }
+
+        const Shape &front() const {
+            do { } while(0);
+            return *cursor;
+        }
+
+        void popFront() {
+            do { } while(0);
+            cursor = cursor->parent;
+        }
+
+        class AutoRooter : private AutoGCRooter
+        {
+          public:
+            explicit AutoRooter(JSContext *cx, Range *r_
+                                )
+              : AutoGCRooter(cx, SHAPERANGE), r(r_), skip(cx, r_)
+            {
+                do { } while (0);
+            }
+
+            friend void AutoGCRooter::trace(JSTracer *trc);
+            void trace(JSTracer *trc);
+
+          private:
+            Range *r;
+            SkipRoot skip;
+           
+        };
+    };
+
+    Range all() const {
+        return Range(this);
+    }
+
+    Class *getObjectClass() const { return base()->clasp; }
+    JSObject *getObjectParent() const { return base()->parent; }
+
+    static Shape *setObjectParent(JSContext *cx, JSObject *obj, JSObject *proto, Shape *last);
+    static Shape *setObjectFlag(JSContext *cx, BaseShape::Flag flag, JSObject *proto, Shape *last);
+
+    uint32_t getObjectFlags() const { return base()->getObjectFlags(); }
+    bool hasObjectFlag(BaseShape::Flag flag) const {
+        do { } while(0);
+        return !!(base()->flags & flag);
+    }
+
+  protected:
+
+
+
+
+
+    enum {
+
+        NON_NATIVE = 0x01,
+
+
+        IN_DICTIONARY = 0x02,
+
+        UNUSED_BITS = 0x3C
+    };
+
+
+    Shape(const StackShape &other, uint32_t nfixed);
+
+
+    Shape(UnownedBaseShape *base, uint32_t nfixed);
+
+
+    Shape(const Shape &other) ;
+
+
+
+
+
+
+
+    bool hasMissingSlot() const { return maybeSlot() == SHAPE_INVALID_SLOT; }
+
+  public:
+
+    enum {
+        HAS_SHORTID = 0x40,
+        PUBLIC_FLAGS = HAS_SHORTID
+    };
+
+    bool inDictionary() const { return (flags & IN_DICTIONARY) != 0; }
+    unsigned getFlags() const { return flags & PUBLIC_FLAGS; }
+    bool hasShortID() const { return (flags & HAS_SHORTID) != 0; }
+
+    PropertyOp getter() const { return base()->rawGetter; }
+    bool hasDefaultGetter() const { return !base()->rawGetter; }
+    PropertyOp getterOp() const { do { } while(0); return base()->rawGetter; }
+    JSObject *getterObject() const { do { } while(0); return base()->getterObj; }
+
+
+    Value getterValue() const {
+        do { } while(0);
+        return base()->getterObj ? js::ObjectValue(*base()->getterObj) : js::UndefinedValue();
+    }
+
+    Value getterOrUndefined() const {
+        return (hasGetterValue() && base()->getterObj)
+               ? ObjectValue(*base()->getterObj)
+               : UndefinedValue();
+    }
+
+    StrictPropertyOp setter() const { return base()->rawSetter; }
+    bool hasDefaultSetter() const { return !base()->rawSetter; }
+    StrictPropertyOp setterOp() const { do { } while(0); return base()->rawSetter; }
+    JSObject *setterObject() const { do { } while(0); return base()->setterObj; }
+
+
+    Value setterValue() const {
+        do { } while(0);
+        return base()->setterObj ? js::ObjectValue(*base()->setterObj) : js::UndefinedValue();
+    }
+
+    Value setterOrUndefined() const {
+        return (hasSetterValue() && base()->setterObj)
+               ? ObjectValue(*base()->setterObj)
+               : UndefinedValue();
+    }
+
+    void update(js::PropertyOp getter, js::StrictPropertyOp setter, uint8_t attrs);
+
+    inline bool matches(const Shape *other) const;
+    inline bool matches(const StackShape &other) const;
+    inline bool matchesParamsAfterId(BaseShape *base,
+                                     uint32_t aslot, unsigned aattrs, unsigned aflags,
+                                     int ashortid) const;
+
+    bool get(JSContext* cx, HandleObject receiver, JSObject *obj, JSObject *pobj, js::Value* vp) const;
+    bool set(JSContext* cx, HandleObject obj, bool strict, js::Value* vp) const;
+
+    BaseShape *base() const { return base_; }
+
+    bool hasSlot() const { return (attrs & 0x40) == 0; }
+    uint32_t slot() const { do { } while(0); return maybeSlot(); }
+    uint32_t maybeSlot() const { return slotInfo & SLOT_MASK; }
+
+    bool isEmptyShape() const {
+        do { } while (0);
+        return JSID_IS_EMPTY(propid_);
+    }
+
+    uint32_t slotSpan() const {
+        do { } while(0);
+        uint32_t free = (((getObjectClass())->flags >> 8) & (((uint32_t)1 << (8)) - 1));
+        return hasMissingSlot() ? free : Max(free, maybeSlot() + 1);
+    }
+
+    void setSlot(uint32_t slot) {
+        do { } while(0);
+        slotInfo = slotInfo & ~Shape::SLOT_MASK;
+        slotInfo = slotInfo | slot;
+    }
+
+    uint32_t numFixedSlots() const {
+        return (slotInfo >> FIXED_SLOTS_SHIFT);
+    }
+
+    void setNumFixedSlots(uint32_t nfixed) {
+        do { } while(0);
+        slotInfo = slotInfo & ~FIXED_SLOTS_MASK;
+        slotInfo = slotInfo | (nfixed << FIXED_SLOTS_SHIFT);
+    }
+
+    uint32_t numLinearSearches() const {
+        return (slotInfo & LINEAR_SEARCHES_MASK) >> LINEAR_SEARCHES_SHIFT;
+    }
+
+    void incrementNumLinearSearches() {
+        uint32_t count = numLinearSearches();
+        do { } while(0);
+        slotInfo = slotInfo & ~LINEAR_SEARCHES_MASK;
+        slotInfo = slotInfo | ((count + 1) << LINEAR_SEARCHES_SHIFT);
+    }
+
+    const HeapId &propid() const {
+        do { } while(0);
+        do { } while(0);
+        return propid_;
+    }
+    HeapId &propidRef() { do { } while(0); return propid_; }
+
+    int16_t shortid() const { do { } while(0); return maybeShortid(); }
+    int16_t maybeShortid() const { return shortid_; }
+
+
+
+
+
+    inline bool getUserId(JSContext *cx, jsid *idp) const;
+
+    uint8_t attributes() const { return attrs; }
+    bool configurable() const { return (attrs & 0x04) == 0; }
+    bool enumerable() const { return (attrs & 0x01) != 0; }
+    bool writable() const {
+
+        return (attrs & 0x02) == 0;
+    }
+    bool hasGetterValue() const { return attrs & 0x10; }
+    bool hasSetterValue() const { return attrs & 0x20; }
+
+    bool isDataDescriptor() const {
+        return (attrs & (0x20 | 0x10)) == 0;
+    }
+    bool isAccessorDescriptor() const {
+        return (attrs & (0x20 | 0x10)) != 0;
+    }
+
+
+
+
+
+
+
+    bool shadowable() const {
+        do { } while (0);
+        return hasSlot() || (attrs & 0x80);
+    }
+# 837 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscope.h"
+    static Shape *setExtensibleParents(JSContext *cx, Shape *shape);
+    bool extensibleParents() const { return !!(base()->flags & BaseShape::EXTENSIBLE_PARENTS); }
+
+    uint32_t entryCount() const {
+        if (hasTable())
+            return table().entryCount;
+
+        const js::Shape *shape = this;
+        uint32_t count = 0;
+        for (js::Shape::Range r = shape->all(); !r.empty(); r.popFront())
+            ++count;
+        return count;
+    }
+
+    bool isBigEnoughForAShapeTable() const {
+        do { } while(0);
+        const js::Shape *shape = this;
+        uint32_t count = 0;
+        for (js::Shape::Range r = shape->all(); !r.empty(); r.popFront()) {
+            ++count;
+            if (count >= ShapeTable::MIN_ENTRIES)
+                return true;
+        }
+        return false;
+    }
+
+
+
+
+
+
+    void finalize(FreeOp *fop);
+    void removeChild(js::Shape *child);
+
+    static inline void writeBarrierPre(const Shape *shape);
+    static inline void writeBarrierPost(const Shape *shape, void *addr);
+
+
+
+
+
+
+    static inline void readBarrier(const Shape *shape);
+
+    static inline ThingRootKind rootKind() { return THING_ROOT_SHAPE; }
+
+    inline void markChildren(JSTracer *trc);
+
+
+    static inline size_t offsetOfBase() { return __builtin_offsetof (Shape, base_); }
+
+  private:
+    static void staticAsserts() {
+        typedef int moz_static_assert82[(__builtin_offsetof (Shape, base_) == __builtin_offsetof (js::shadow::Shape, base)) ? 1 : -1];
+        typedef int moz_static_assert83[(__builtin_offsetof (Shape, slotInfo) == __builtin_offsetof (js::shadow::Shape, slotInfo)) ? 1 : -1];
+        typedef int moz_static_assert84[(FIXED_SLOTS_SHIFT == js::shadow::Shape::FIXED_SLOTS_SHIFT) ? 1 : -1];
+    }
+};
+
+class AutoRooterGetterSetter
+{
+    class Inner : private AutoGCRooter
+    {
+      public:
+        Inner(JSContext *cx, uint8_t attrs,
+              PropertyOp *pgetter_, StrictPropertyOp *psetter_)
+            : AutoGCRooter(cx, GETTERSETTER), attrs(attrs),
+              pgetter(pgetter_), psetter(psetter_),
+              getterRoot(cx, pgetter_), setterRoot(cx, psetter_)
+        {}
+
+        friend void AutoGCRooter::trace(JSTracer *trc);
+
+      private:
+        uint8_t attrs;
+        PropertyOp *pgetter;
+        StrictPropertyOp *psetter;
+        SkipRoot getterRoot, setterRoot;
+    };
+
+  public:
+    explicit AutoRooterGetterSetter(JSContext *cx, uint8_t attrs,
+                                    PropertyOp *pgetter, StrictPropertyOp *psetter
+                                    )
+    {
+        if (attrs & (0x10 | 0x20))
+            inner.construct(cx, attrs, pgetter, psetter);
+        do { } while (0);
+    }
+
+    friend void AutoGCRooter::trace(JSTracer *trc);
+
+  private:
+    Maybe<Inner> inner;
+   
+};
+
+struct EmptyShape : public js::Shape
+{
+    EmptyShape(UnownedBaseShape *base, uint32_t nfixed);
+
+
+
+
+
+    static Shape *getInitialShape(JSContext *cx, Class *clasp, JSObject *proto,
+                                  JSObject *parent, gc::AllocKind kind, uint32_t objectFlags = 0);
+
+
+
+
+
+
+    static void insertInitialShape(JSContext *cx, Shape *shape, JSObject *proto);
+};
+
+
+
+
+
+struct InitialShapeEntry
+{
+
+
+
+
+
+    ReadBarriered<Shape> shape;
+
+
+
+
+
+    JSObject *proto;
+
+
+    struct Lookup {
+        Class *clasp;
+        JSObject *proto;
+        JSObject *parent;
+        uint32_t nfixed;
+        uint32_t baseFlags;
+        Lookup(Class *clasp, JSObject *proto, JSObject *parent, uint32_t nfixed,
+               uint32_t baseFlags)
+            : clasp(clasp), proto(proto), parent(parent),
+              nfixed(nfixed), baseFlags(baseFlags)
+        {}
+    };
+
+    inline InitialShapeEntry();
+    inline InitialShapeEntry(const ReadBarriered<Shape> &shape, JSObject *proto);
+
+    inline Lookup getLookup();
+
+    static inline HashNumber hash(const Lookup &lookup);
+    static inline bool match(const InitialShapeEntry &key, const Lookup &lookup);
+};
+
+typedef HashSet<InitialShapeEntry, InitialShapeEntry, SystemAllocPolicy> InitialShapeSet;
+
+struct StackShape
+{
+    UnownedBaseShape *base;
+    jsid propid;
+    uint32_t slot_;
+    uint8_t attrs;
+    uint8_t flags;
+    int16_t shortid;
+
+    StackShape(UnownedBaseShape *base, jsid propid, uint32_t slot,
+               uint32_t nfixed, unsigned attrs, unsigned flags, int shortid)
+      : base(base),
+        propid(propid),
+        slot_(slot),
+        attrs(uint8_t(attrs)),
+        flags(uint8_t(flags)),
+        shortid(int16_t(shortid))
+    {
+        do { } while(0);
+        do { } while(0);
+        do { } while(0);
+    }
+
+    StackShape(const Shape *shape)
+      : base(shape->base()->unowned()),
+        propid(const_cast<Shape *>(shape)->propidRef()),
+        slot_(shape->slotInfo & Shape::SLOT_MASK),
+        attrs(shape->attrs),
+        flags(shape->flags),
+        shortid(shape->shortid_)
+    {}
+
+    bool hasSlot() const { return (attrs & 0x40) == 0; }
+    bool hasMissingSlot() const { return maybeSlot() == SHAPE_INVALID_SLOT; }
+
+    uint32_t slot() const { do { } while(0); return slot_; }
+    uint32_t maybeSlot() const { return slot_; }
+
+    uint32_t slotSpan() const {
+        uint32_t free = (((base->clasp)->flags >> 8) & (((uint32_t)1 << (8)) - 1));
+        return hasMissingSlot() ? free : (maybeSlot() + 1);
+    }
+
+    void setSlot(uint32_t slot) {
+        do { } while(0);
+        slot_ = slot;
+    }
+
+    inline HashNumber hash() const;
+
+    class AutoRooter : private AutoGCRooter
+    {
+      public:
+        explicit AutoRooter(JSContext *cx, const StackShape *shape_
+                            )
+          : AutoGCRooter(cx, STACKSHAPE), shape(shape_), skip(cx, shape_)
+        {
+            do { } while (0);
+        }
+
+        friend void AutoGCRooter::trace(JSTracer *trc);
+
+      private:
+        const StackShape *shape;
+        SkipRoot skip;
+       
+    };
+ };
+
+}
+
+
+#define SHAPE_COLLISION (uintptr_t(1))
+#define SHAPE_REMOVED ((js::Shape *) SHAPE_COLLISION)
+
+
+#define SHAPE_IS_FREE(shape) ((shape) == NULL)
+#define SHAPE_IS_REMOVED(shape) ((shape) == SHAPE_REMOVED)
+#define SHAPE_IS_LIVE(shape) ((shape) > SHAPE_REMOVED)
+#define SHAPE_FLAG_COLLISION(spp,shape) (*(spp) = (js::Shape *) (uintptr_t(shape) | SHAPE_COLLISION))
+
+#define SHAPE_HAD_COLLISION(shape) (uintptr_t(shape) & SHAPE_COLLISION)
+#define SHAPE_FETCH(spp) SHAPE_CLEAR_COLLISION(*(spp))
+
+#define SHAPE_CLEAR_COLLISION(shape) ((js::Shape *) (uintptr_t(shape) & ~SHAPE_COLLISION))
+
+
+#define SHAPE_STORE_PRESERVING_COLLISION(spp,shape) (*(spp) = (js::Shape *) (uintptr_t(shape) | SHAPE_HAD_COLLISION(*(spp))))
+
+
+namespace js {
+
+inline Shape *
+Shape::search(JSContext *cx, Shape *start, jsid id, Shape ***pspp, bool adding)
+{
+    if (start->inDictionary()) {
+        *pspp = start->table().search(id, adding);
+        return ((js::Shape *) (uintptr_t(*(*pspp)) & ~(uintptr_t(1))));
+    }
+
+    *pspp = __null;
+
+    if (start->hasTable()) {
+        Shape **spp = start->table().search(id, adding);
+        return ((js::Shape *) (uintptr_t(*(spp)) & ~(uintptr_t(1))));
+    }
+
+    if (start->numLinearSearches() == LINEAR_SEARCHES_MAX) {
+        if (start->isBigEnoughForAShapeTable()) {
+            RootedShape startRoot(cx, start);
+            RootedId idRoot(cx, id);
+            if (start->hashify(cx)) {
+                Shape **spp = start->table().search(id, adding);
+                return ((js::Shape *) (uintptr_t(*(spp)) & ~(uintptr_t(1))));
+            }
+            start = startRoot;
+            id = idRoot;
+        }
+
+
+
+
+        do { } while(0);
+    } else {
+        start->incrementNumLinearSearches();
+    }
+
+    for (Shape *shape = start; shape; shape = shape->parent) {
+        if (shape->propidRef() == id)
+            return shape;
+    }
+
+    return __null;
+}
+# 1150 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscope.h"
+}
+
+
+
+
+
+
+namespace JS {
+    template<> class AnchorPermitted<js::Shape *> { };
+    template<> class AnchorPermitted<const js::Shape *> { };
+}
+# 12 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.cpp" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h"
+#define jsobjinlines_h___ 
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsarray.h" 1
+
+
+
+
+
+
+
+#define jsarray_h___ 
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h" 1
+# 11 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+#define jscntxt_h___ 
+# 21 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsclist.h" 1
+
+
+
+
+
+
+#define jsclist_h___ 
+
+
+
+
+
+
+typedef struct JSCListStr {
+    struct JSCListStr *next;
+    struct JSCListStr *prev;
+} JSCList;
+
+
+
+
+#define JS_INSERT_BEFORE(_e,_l) JS_BEGIN_MACRO (_e)->next = (_l); (_e)->prev = (_l)->prev; (_l)->prev->next = (_e); (_l)->prev = (_e); JS_END_MACRO
+# 33 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsclist.h"
+#define JS_INSERT_AFTER(_e,_l) JS_BEGIN_MACRO (_e)->next = (_l)->next; (_e)->prev = (_l); (_l)->next->prev = (_e); (_l)->next = (_e); JS_END_MACRO
+# 44 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsclist.h"
+#define JS_NEXT_LINK(_e) ((_e)->next)
+
+
+
+
+#define JS_PREV_LINK(_e) ((_e)->prev)
+
+
+
+
+
+#define JS_APPEND_LINK(_e,_l) JS_INSERT_BEFORE(_e,_l)
+
+
+
+
+#define JS_INSERT_LINK(_e,_l) JS_INSERT_AFTER(_e,_l)
+
+
+#define JS_LIST_HEAD(_l) (_l)->next
+#define JS_LIST_TAIL(_l) (_l)->prev
+
+
+
+
+#define JS_REMOVE_LINK(_e) JS_BEGIN_MACRO (_e)->prev->next = (_e)->next; (_e)->next->prev = (_e)->prev; JS_END_MACRO
+# 79 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsclist.h"
+#define JS_REMOVE_AND_INIT_LINK(_e) JS_BEGIN_MACRO (_e)->prev->next = (_e)->next; (_e)->next->prev = (_e)->prev; (_e)->next = (_e); (_e)->prev = (_e); JS_END_MACRO
+# 91 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsclist.h"
+#define JS_CLIST_IS_EMPTY(_l) ((_l)->next == (_l))
+
+
+
+
+
+#define JS_INIT_CLIST(_l) JS_BEGIN_MACRO (_l)->next = (_l); (_l)->prev = (_l); JS_END_MACRO
+
+
+
+
+
+#define JS_INIT_STATIC_CLIST(_l) {(_l), (_l)}
+# 22 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h" 1
+
+
+
+
+
+
+
+#define jsgc_h___ 
+
+
+
+
+# 1 "/usr/include/setjmp.h" 1 3 4
+# 24 "/usr/include/setjmp.h" 3 4
+#define _SETJMP_H 1
+
+
+
+extern "C" {
+
+# 1 "/usr/include/bits/setjmp.h" 1 3 4
+# 22 "/usr/include/bits/setjmp.h" 3 4
+#define _BITS_SETJMP_H 1
+# 35 "/usr/include/bits/setjmp.h" 3 4
+typedef int __jmp_buf[64] __attribute__((__aligned__ (8)));
+# 31 "/usr/include/setjmp.h" 2 3 4
+# 1 "/usr/include/bits/sigset.h" 1 3 4
+# 32 "/usr/include/setjmp.h" 2 3 4
+
+
+
+struct __jmp_buf_tag
+  {
+
+
+
+
+    __jmp_buf __jmpbuf;
+    int __mask_was_saved;
+    __sigset_t __saved_mask;
+  };
+
+
+
+
+typedef struct __jmp_buf_tag jmp_buf[1];
+
+
+
+extern int setjmp (jmp_buf __env) throw ();
+
+
+
+
+
+
+extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) throw ();
+
+
+
+
+extern int _setjmp (struct __jmp_buf_tag __env[1]) throw ();
+
+
+
+#define setjmp(env) _setjmp (env)
+# 78 "/usr/include/setjmp.h" 3 4
+
+
+
+
+extern void longjmp (struct __jmp_buf_tag __env[1], int __val)
+     throw () __attribute__ ((__noreturn__));
+
+
+
+
+
+
+
+extern void _longjmp (struct __jmp_buf_tag __env[1], int __val)
+     throw () __attribute__ ((__noreturn__));
+
+
+
+
+
+
+
+typedef struct __jmp_buf_tag sigjmp_buf[1];
+
+
+
+#define sigsetjmp(env,savemask) __sigsetjmp (env, savemask)
+
+
+
+
+
+extern void siglongjmp (sigjmp_buf __env, int __val)
+     throw () __attribute__ ((__noreturn__));
+
+
+
+
+
+# 1 "/usr/include/bits/setjmp2.h" 1 3 4
+# 26 "/usr/include/bits/setjmp2.h" 3 4
+extern void longjmp (struct __jmp_buf_tag __env[1], int __val) throw () __asm__ ("" "__longjmp_chk")
+
+                        __attribute__ ((__noreturn__));
+extern void _longjmp (struct __jmp_buf_tag __env[1], int __val) throw () __asm__ ("" "__longjmp_chk")
+
+                        __attribute__ ((__noreturn__));
+extern void siglongjmp (struct __jmp_buf_tag __env[1], int __val) throw () __asm__ ("" "__longjmp_chk")
+
+                        __attribute__ ((__noreturn__));
+# 118 "/usr/include/setjmp.h" 2 3 4
+
+
+}
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h" 2
+# 23 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h"
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h" 1
+# 42 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_VERSION_ECMA_3 148
+#define JS_VERSION_ECMA_3_TEST 149
+# 124 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_HAS_STR_HTML_HELPERS 1
+#define JS_HAS_OBJ_PROTO_PROP 1
+#define JS_HAS_OBJ_WATCHPOINT 1
+#define JS_HAS_TOSOURCE 1
+#define JS_HAS_CATCH_GUARD 1
+#define JS_HAS_UNEVAL 1
+#define JS_HAS_CONST 1
+#define JS_HAS_FUN_EXPR_STMT 1
+#define JS_HAS_NO_SUCH_METHOD 1
+#define JS_HAS_GENERATORS 1
+#define JS_HAS_BLOCK_SCOPE 1
+#define JS_HAS_DESTRUCTURING 2
+#define JS_HAS_GENERATOR_EXPRS 1
+#define JS_HAS_EXPR_CLOSURES 1
+# 146 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_HAS_NEW_GLOBAL_OBJECT 1
+
+
+#define JS_HAS_MAKE_SYSTEM_OBJECT 1
+
+
+#define JS_HAS_DESTRUCTURING_SHORTHAND (JS_HAS_DESTRUCTURING == 2)
+
+
+
+
+
+#define OLD_GETTER_SETTER_METHODS 1
+
+
+#define USE_NEW_OBJECT_REPRESENTATION 0
+
+
+
+
+#define NEW_OBJECT_REPRESENTATION_ONLY() MOZ_NOT_REACHED("don't call this!  to be used in the new object representation")
+# 24 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/ds/BitArray.h" 1
+# 26 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Statistics.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Statistics.h"
+#define jsgc_statistics_h___ 
+
+
+
+
+
+
+
+struct JSCompartment;
+
+namespace js {
+namespace gcstats {
+
+enum Phase {
+    PHASE_GC_BEGIN,
+    PHASE_WAIT_BACKGROUND_THREAD,
+    PHASE_PURGE,
+    PHASE_MARK,
+    PHASE_MARK_DISCARD_CODE,
+    PHASE_MARK_ROOTS,
+    PHASE_MARK_TYPES,
+    PHASE_MARK_DELAYED,
+    PHASE_MARK_WEAK,
+    PHASE_MARK_GRAY,
+    PHASE_MARK_GRAY_WEAK,
+    PHASE_FINALIZE_START,
+    PHASE_SWEEP,
+    PHASE_SWEEP_ATOMS,
+    PHASE_SWEEP_COMPARTMENTS,
+    PHASE_SWEEP_TABLES,
+    PHASE_SWEEP_OBJECT,
+    PHASE_SWEEP_STRING,
+    PHASE_SWEEP_SCRIPT,
+    PHASE_SWEEP_SHAPE,
+    PHASE_SWEEP_DISCARD_CODE,
+    PHASE_DISCARD_ANALYSIS,
+    PHASE_DISCARD_TI,
+    PHASE_FREE_TI_ARENA,
+    PHASE_SWEEP_TYPES,
+    PHASE_CLEAR_SCRIPT_ANALYSIS,
+    PHASE_FINALIZE_END,
+    PHASE_DESTROY,
+    PHASE_GC_END,
+
+    PHASE_LIMIT
+};
+
+enum Stat {
+    STAT_NEW_CHUNK,
+    STAT_DESTROY_CHUNK,
+
+    STAT_LIMIT
+};
+
+class StatisticsSerializer;
+
+struct Statistics {
+    Statistics(JSRuntime *rt);
+    ~Statistics();
+
+    void beginPhase(Phase phase);
+    void endPhase(Phase phase);
+
+    void beginSlice(int collectedCount, int compartmentCount, gcreason::Reason reason);
+    void endSlice();
+
+    void reset(const char *reason) { slices.back().resetReason = reason; }
+    void nonincremental(const char *reason) { nonincrementalReason = reason; }
+
+    void count(Stat s) {
+        do { } while(0);
+        counts[s]++;
+    }
+
+    jschar *formatMessage();
+    jschar *formatJSON(uint64_t timestamp);
+
+  private:
+    JSRuntime *runtime;
+
+    int64_t startupTime;
+
+    FILE *fp;
+    bool fullFormat;
+
+
+
+
+
+    int gcDepth;
+
+    int collectedCount;
+    int compartmentCount;
+    const char *nonincrementalReason;
+
+    struct SliceData {
+        SliceData(gcreason::Reason reason, int64_t start, size_t startFaults)
+          : reason(reason), resetReason(__null), start(start), startFaults(startFaults)
+        {
+            PodArrayZero(phaseTimes);
+        }
+
+        gcreason::Reason reason;
+        const char *resetReason;
+        int64_t start, end;
+        size_t startFaults, endFaults;
+        int64_t phaseTimes[PHASE_LIMIT];
+
+        int64_t duration() const { return end - start; }
+    };
+
+    Vector<SliceData, 8, SystemAllocPolicy> slices;
+
+
+    int64_t phaseStartTimes[PHASE_LIMIT];
+
+
+    int64_t phaseTimes[PHASE_LIMIT];
+
+
+    int64_t phaseTotals[PHASE_LIMIT];
+
+
+    unsigned int counts[STAT_LIMIT];
+
+
+    size_t preBytes;
+
+    void beginGC();
+    void endGC();
+
+    int64_t gcDuration();
+    void printStats();
+    bool formatData(StatisticsSerializer &ss, uint64_t timestamp);
+
+    double computeMMU(int64_t resolution);
+};
+
+struct AutoGCSlice {
+    AutoGCSlice(Statistics &stats, int collectedCount, int compartmentCount, gcreason::Reason reason
+                )
+      : stats(stats)
+    {
+        do { } while (0);
+        stats.beginSlice(collectedCount, compartmentCount, reason);
+    }
+    ~AutoGCSlice() { stats.endSlice(); }
+
+    Statistics &stats;
+   
+};
+
+struct AutoPhase {
+    AutoPhase(Statistics &stats, Phase phase )
+      : stats(stats), phase(phase) { do { } while (0); stats.beginPhase(phase); }
+    ~AutoPhase() { stats.endPhase(phase); }
+
+    Statistics &stats;
+    Phase phase;
+   
+};
+
+}
+}
+# 28 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h" 2
+
+
+
+
+struct JSCompartment;
+
+
+
+
+#define JS_CHECK_STACK_SIZE(limit,lval) ((uintptr_t)(lval) > limit)
+
+
+namespace js {
+
+class GCHelperThread;
+struct Shape;
+
+namespace gc {
+
+enum State {
+    NO_INCREMENTAL,
+    MARK_ROOTS,
+    MARK,
+    INVALID
+};
+
+class ChunkPool {
+    Chunk *emptyChunkListHead;
+    size_t emptyCount;
+
+  public:
+    ChunkPool()
+      : emptyChunkListHead(__null),
+        emptyCount(0) { }
+
+    size_t getEmptyCount() const {
+        return emptyCount;
+    }
+
+    inline bool wantBackgroundAllocation(JSRuntime *rt) const;
+
+
+    inline Chunk *get(JSRuntime *rt);
+
+
+    inline void put(Chunk *chunk);
+
+
+
+
+
+    Chunk *expire(JSRuntime *rt, bool releaseAll);
+
+
+    void expireAndFree(JSRuntime *rt, bool releaseAll);
+
+
+    __attribute__((visibility("default"))) int64_t countCleanDecommittedArenas(JSRuntime *rt);
+};
+
+static inline JSGCTraceKind
+MapAllocToTraceKind(AllocKind thingKind)
+{
+    static const JSGCTraceKind map[FINALIZE_LIMIT] = {
+        JSTRACE_OBJECT,
+        JSTRACE_OBJECT,
+        JSTRACE_OBJECT,
+        JSTRACE_OBJECT,
+        JSTRACE_OBJECT,
+        JSTRACE_OBJECT,
+        JSTRACE_OBJECT,
+        JSTRACE_OBJECT,
+        JSTRACE_OBJECT,
+        JSTRACE_OBJECT,
+        JSTRACE_OBJECT,
+        JSTRACE_OBJECT,
+        JSTRACE_SCRIPT,
+        JSTRACE_SHAPE,
+        JSTRACE_BASE_SHAPE,
+        JSTRACE_TYPE_OBJECT,
+
+        JSTRACE_XML,
+
+        JSTRACE_STRING,
+        JSTRACE_STRING,
+        JSTRACE_STRING,
+    };
+    return map[thingKind];
+}
+
+inline JSGCTraceKind
+GetGCThingTraceKind(const void *thing);
+
+struct ArenaLists {
+# 134 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h"
+    struct ArenaList {
+        ArenaHeader *head;
+        ArenaHeader **cursor;
+
+        ArenaList() {
+            clear();
+        }
+
+        void clear() {
+            head = __null;
+            cursor = &head;
+        }
+    };
+
+  private:
+# 158 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h"
+    FreeSpan freeLists[FINALIZE_LIMIT];
+
+    ArenaList arenaLists[FINALIZE_LIMIT];
+# 179 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h"
+    enum BackgroundFinalizeState {
+        BFS_DONE,
+        BFS_RUN,
+        BFS_JUST_FINISHED
+    };
+
+    volatile uintptr_t backgroundFinalizeState[FINALIZE_LIMIT];
+
+
+  public:
+    ArenaLists() {
+        for (size_t i = 0; i != FINALIZE_LIMIT; ++i)
+            freeLists[i].initAsEmpty();
+
+        for (size_t i = 0; i != FINALIZE_LIMIT; ++i)
+            backgroundFinalizeState[i] = BFS_DONE;
+
+    }
+
+    ~ArenaLists() {
+        for (size_t i = 0; i != FINALIZE_LIMIT; ++i) {
+
+
+
+
+
+            do { } while(0);
+
+            ArenaHeader **headp = &arenaLists[i].head;
+            while (ArenaHeader *aheader = *headp) {
+                *headp = aheader->next;
+                aheader->chunk()->releaseArena(aheader);
+            }
+        }
+    }
+
+    const FreeSpan *getFreeList(AllocKind thingKind) const {
+        return &freeLists[thingKind];
+    }
+
+    ArenaHeader *getFirstArena(AllocKind thingKind) const {
+        return arenaLists[thingKind].head;
+    }
+
+    bool arenaListsAreEmpty() const {
+        for (size_t i = 0; i != FINALIZE_LIMIT; ++i) {
+
+
+
+
+
+            if (backgroundFinalizeState[i] != BFS_DONE)
+                return false;
+
+            if (arenaLists[i].head)
+                return false;
+        }
+        return true;
+    }
+# 257 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h"
+    bool doneBackgroundFinalize(AllocKind kind) const {
+        return backgroundFinalizeState[kind] == BFS_DONE;
+    }
+
+
+
+
+
+
+    void purge() {
+        for (size_t i = 0; i != FINALIZE_LIMIT; ++i) {
+            FreeSpan *headSpan = &freeLists[i];
+            if (!headSpan->isEmpty()) {
+                ArenaHeader *aheader = headSpan->arenaHeader();
+                aheader->setFirstFreeSpan(headSpan);
+                headSpan->initAsEmpty();
+            }
+        }
+    }
+
+    inline void prepareForIncrementalGC(JSRuntime *rt);
+
+
+
+
+
+
+    void copyFreeListsToArenas() {
+        for (size_t i = 0; i != FINALIZE_LIMIT; ++i)
+            copyFreeListToArena(AllocKind(i));
+    }
+
+    void copyFreeListToArena(AllocKind thingKind) {
+        FreeSpan *headSpan = &freeLists[thingKind];
+        if (!headSpan->isEmpty()) {
+            ArenaHeader *aheader = headSpan->arenaHeader();
+            do { } while(0);
+            aheader->setFirstFreeSpan(headSpan);
+        }
+    }
+
+
+
+
+
+    void clearFreeListsInArenas() {
+        for (size_t i = 0; i != FINALIZE_LIMIT; ++i)
+            clearFreeListInArena(AllocKind(i));
+    }
+
+
+    void clearFreeListInArena(AllocKind kind) {
+        FreeSpan *headSpan = &freeLists[kind];
+        if (!headSpan->isEmpty()) {
+            ArenaHeader *aheader = headSpan->arenaHeader();
+            do { } while(0);
+            aheader->setAsFullyUsed();
+        }
+    }
+
+
+
+
+
+    bool isSynchronizedFreeList(AllocKind kind) {
+        FreeSpan *headSpan = &freeLists[kind];
+        if (headSpan->isEmpty())
+            return true;
+        ArenaHeader *aheader = headSpan->arenaHeader();
+        if (aheader->hasFreeThings()) {
+
+
+
+
+            do { } while(0);
+            return true;
+        }
+        return false;
+    }
+
+    __attribute__((always_inline)) inline void *allocateFromFreeList(AllocKind thingKind, size_t thingSize) {
+        return freeLists[thingKind].allocate(thingSize);
+    }
+
+    static void *refillFreeList(JSContext *cx, AllocKind thingKind);
+
+    void checkEmptyFreeLists() {
+
+
+
+
+    }
+
+    void checkEmptyFreeList(AllocKind kind) {
+        do { } while(0);
+    }
+
+    void finalizeObjects(FreeOp *fop);
+    void finalizeStrings(FreeOp *fop);
+    void finalizeShapes(FreeOp *fop);
+    void finalizeScripts(FreeOp *fop);
+
+
+    static void backgroundFinalize(FreeOp *fop, ArenaHeader *listHead);
+
+
+  private:
+    inline void finalizeNow(FreeOp *fop, AllocKind thingKind);
+    inline void finalizeLater(FreeOp *fop, AllocKind thingKind);
+
+    inline void *allocateFromArena(JSCompartment *comp, AllocKind thingKind);
+};
+
+
+
+
+
+
+const size_t INITIAL_CHUNK_CAPACITY = 16 * 1024 * 1024 / ChunkSize;
+
+
+const size_t MAX_EMPTY_CHUNK_AGE = 4;
+
+inline Cell *
+AsCell(JSObject *obj)
+{
+    return reinterpret_cast<Cell *>(obj);
+}
+
+}
+
+struct GCPtrHasher
+{
+    typedef void *Lookup;
+
+    static HashNumber hash(void *key) {
+        return HashNumber(uintptr_t(key) >> JS_GCTHING_ZEROBITS);
+    }
+
+    static bool match(void *l, void *k) { return l == k; }
+};
+
+typedef HashMap<void *, uint32_t, GCPtrHasher, SystemAllocPolicy> GCLocks;
+
+struct RootInfo {
+    RootInfo() {}
+    RootInfo(const char *name, JSGCRootType type) : name(name), type(type) {}
+    const char *name;
+    JSGCRootType type;
+};
+
+typedef js::HashMap<void *,
+                    RootInfo,
+                    js::DefaultHasher<void *>,
+                    js::SystemAllocPolicy> RootedValueMap;
+
+}
+
+extern __attribute__((visibility("default"))) JSGCTraceKind
+js_GetGCThingTraceKind(void *thing);
+
+extern JSBool
+js_InitGC(JSRuntime *rt, uint32_t maxbytes);
+
+extern void
+js_FinishGC(JSRuntime *rt);
+
+extern JSBool
+js_AddRoot(JSContext *cx, js::Value *vp, const char *name);
+
+extern JSBool
+js_AddGCThingRoot(JSContext *cx, void **rp, const char *name);
+# 437 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h"
+extern uint32_t
+js_MapGCRoots(JSRuntime *rt, JSGCRootMapFun map, void *data);
+
+
+typedef struct JSPtrTable {
+    size_t count;
+    void **array;
+} JSPtrTable;
+
+extern JSBool
+js_LockGCThingRT(JSRuntime *rt, void *thing);
+
+extern void
+js_UnlockGCThingRT(JSRuntime *rt, void *thing);
+
+extern bool
+js_IsAddressableGCThing(JSRuntime *rt, uintptr_t w, js::gc::AllocKind *thingKind, void **thing);
+
+namespace js {
+
+extern void
+MarkCompartmentActive(js::StackFrame *fp);
+
+extern void
+TraceRuntime(JSTracer *trc);
+
+extern __attribute__((visibility("default"))) void
+MarkContext(JSTracer *trc, JSContext *acx);
+
+
+extern void
+TriggerGC(JSRuntime *rt, js::gcreason::Reason reason);
+
+
+extern void
+TriggerCompartmentGC(JSCompartment *comp, js::gcreason::Reason reason);
+
+extern void
+MaybeGC(JSContext *cx);
+
+extern void
+ShrinkGCBuffers(JSRuntime *rt);
+
+extern __attribute__((visibility("default"))) void
+PrepareForFullGC(JSRuntime *rt);
+
+
+
+
+typedef enum JSGCInvocationKind {
+
+    GC_NORMAL = 0,
+
+
+    GC_SHRINK = 1
+} JSGCInvocationKind;
+
+extern void
+GC(JSRuntime *rt, JSGCInvocationKind gckind, js::gcreason::Reason reason);
+
+extern void
+GCSlice(JSRuntime *rt, JSGCInvocationKind gckind, js::gcreason::Reason reason);
+
+extern void
+GCDebugSlice(JSRuntime *rt, bool limit, int64_t objCount);
+
+extern void
+PrepareForDebugGC(JSRuntime *rt);
+
+}
+
+namespace js {
+
+void
+InitTracer(JSTracer *trc, JSRuntime *rt, JSTraceCallback callback);
+
+
+
+class GCHelperThread {
+    enum State {
+        IDLE,
+        SWEEPING,
+        ALLOCATING,
+        CANCEL_ALLOCATION,
+        SHUTDOWN
+    };
+# 534 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h"
+    static const size_t FREE_ARRAY_SIZE = size_t(1) << 16;
+    static const size_t FREE_ARRAY_LENGTH = FREE_ARRAY_SIZE / sizeof(void *);
+
+    JSRuntime *const rt;
+    PRThread *thread;
+    PRCondVar *wakeup;
+    PRCondVar *done;
+    volatile State state;
+
+    bool sweepFlag;
+    bool shrinkFlag;
+
+    Vector<void **, 16, js::SystemAllocPolicy> freeVector;
+    void **freeCursor;
+    void **freeCursorEnd;
+
+    Vector<js::gc::ArenaHeader *, 64, js::SystemAllocPolicy> finalizeVector;
+
+    bool backgroundAllocation;
+
+    friend struct js::gc::ArenaLists;
+
+    __attribute__((visibility("default"))) void
+    replenishAndFreeLater(void *ptr);
+
+    static void freeElementsAndArray(void **array, void **end) {
+        do { } while(0);
+        for (void **p = array; p != end; ++p)
+            js::Foreground::free_(*p);
+        js::Foreground::free_(array);
+    }
+
+    static void threadMain(void* arg);
+    void threadLoop();
+
+
+    void doSweep();
+
+  public:
+    GCHelperThread(JSRuntime *rt)
+      : rt(rt),
+        thread(__null),
+        wakeup(__null),
+        done(__null),
+        state(IDLE),
+        sweepFlag(false),
+        shrinkFlag(false),
+        freeCursor(__null),
+        freeCursorEnd(__null),
+        backgroundAllocation(true)
+    { }
+
+    bool init();
+    void finish();
+
+
+    void startBackgroundSweep(bool shouldShrink);
+
+
+    void startBackgroundShrink();
+
+
+    void waitBackgroundSweepEnd();
+
+
+    void waitBackgroundSweepOrAllocEnd();
+
+
+    inline void startBackgroundAllocationIfIdle();
+
+    bool canBackgroundAllocate() const {
+        return backgroundAllocation;
+    }
+
+    void disableBackgroundAllocation() {
+        backgroundAllocation = false;
+    }
+
+    PRThread *getThread() const {
+        return thread;
+    }
+
+
+
+
+
+    bool sweeping() const {
+        return state == SWEEPING;
+    }
+
+    bool shouldShrink() const {
+        do { } while(0);
+        return shrinkFlag;
+    }
+
+    void freeLater(void *ptr) {
+        do { } while(0);
+        if (freeCursor != freeCursorEnd)
+            *freeCursor++ = ptr;
+        else
+            replenishAndFreeLater(ptr);
+    }
+
+
+    bool prepareForBackgroundSweep();
+};
+
+
+
+struct GCChunkHasher {
+    typedef gc::Chunk *Lookup;
+
+
+
+
+
+    static HashNumber hash(gc::Chunk *chunk) {
+        do { } while(0);
+        return HashNumber(uintptr_t(chunk) >> gc::ChunkShift);
+    }
+
+    static bool match(gc::Chunk *k, gc::Chunk *l) {
+        do { } while(0);
+        do { } while(0);
+        return k == l;
+    }
+};
+
+typedef HashSet<js::gc::Chunk *, GCChunkHasher, SystemAllocPolicy> GCChunkSet;
+
+template<class T>
+struct MarkStack {
+    T *stack;
+    T *tos;
+    T *limit;
+
+    T *ballast;
+    T *ballastLimit;
+
+    size_t sizeLimit;
+
+    MarkStack(size_t sizeLimit)
+      : stack(__null),
+        tos(__null),
+        limit(__null),
+        ballast(__null),
+        ballastLimit(__null),
+        sizeLimit(sizeLimit) { }
+
+    ~MarkStack() {
+        if (stack != ballast)
+            js_free(stack);
+        js_free(ballast);
+    }
+
+    bool init(size_t ballastcap) {
+        do { } while(0);
+
+        if (ballastcap == 0)
+            return true;
+
+        ballast = (T *)js_malloc(sizeof(T) * ballastcap);
+        if (!ballast)
+            return false;
+        ballastLimit = ballast + ballastcap;
+        initFromBallast();
+        return true;
+    }
+
+    void initFromBallast() {
+        stack = ballast;
+        limit = ballastLimit;
+        if (size_t(limit - stack) > sizeLimit)
+            limit = stack + sizeLimit;
+        tos = stack;
+    }
+
+    void setSizeLimit(size_t size) {
+        do { } while(0);
+
+        sizeLimit = size;
+        reset();
+    }
+
+    bool push(T item) {
+        if (tos == limit) {
+            if (!enlarge())
+                return false;
+        }
+        do { } while(0);
+        *tos++ = item;
+        return true;
+    }
+
+    bool push(T item1, T item2, T item3) {
+        T *nextTos = tos + 3;
+        if (nextTos > limit) {
+            if (!enlarge())
+                return false;
+            nextTos = tos + 3;
+        }
+        do { } while(0);
+        tos[0] = item1;
+        tos[1] = item2;
+        tos[2] = item3;
+        tos = nextTos;
+        return true;
+    }
+
+    bool isEmpty() const {
+        return tos == stack;
+    }
+
+    T pop() {
+        do { } while(0);
+        return *--tos;
+    }
+
+    ptrdiff_t position() const {
+        return tos - stack;
+    }
+
+    void reset() {
+        if (stack != ballast)
+            js_free(stack);
+        initFromBallast();
+        do { } while(0);
+    }
+
+    bool enlarge() {
+        size_t tosIndex = tos - stack;
+        size_t cap = limit - stack;
+        if (cap == sizeLimit)
+            return false;
+        size_t newcap = cap * 2;
+        if (newcap == 0)
+            newcap = 32;
+        if (newcap > sizeLimit)
+            newcap = sizeLimit;
+
+        T *newStack;
+        if (stack == ballast) {
+            newStack = (T *)js_malloc(sizeof(T) * newcap);
+            if (!newStack)
+                return false;
+            for (T *src = stack, *dst = newStack; src < tos; )
+                *dst++ = *src++;
+        } else {
+            newStack = (T *)js_realloc(stack, sizeof(T) * newcap);
+            if (!newStack)
+                return false;
+        }
+        stack = newStack;
+        tos = stack + tosIndex;
+        limit = newStack + newcap;
+        return true;
+    }
+
+    size_t sizeOfExcludingThis(JSMallocSizeOfFun mallocSizeOf) const {
+        size_t n = 0;
+        if (stack != ballast)
+            n += mallocSizeOf(stack);
+        n += mallocSizeOf(ballast);
+        return n;
+    }
+};
+
+
+
+
+
+
+
+struct SliceBudget {
+    int64_t deadline;
+    intptr_t counter;
+
+    static const intptr_t CounterReset = 1000;
+
+    static const int64_t Unlimited = 0;
+    static int64_t TimeBudget(int64_t millis);
+    static int64_t WorkBudget(int64_t work);
+
+
+    SliceBudget();
+
+
+    SliceBudget(int64_t budget);
+
+    void reset() {
+        deadline = (9223372036854775807LL);
+        counter = (2147483647);
+    }
+
+    void step(intptr_t amt = 1) {
+        counter -= amt;
+    }
+
+    bool checkOverBudget();
+
+    bool isOverBudget() {
+        if (counter >= 0)
+            return false;
+        return checkOverBudget();
+    }
+};
+
+static const size_t MARK_STACK_LENGTH = 32768;
+
+struct GCMarker : public JSTracer {
+  private:
+
+
+
+
+
+    enum StackTag {
+        ValueArrayTag,
+        ObjectTag,
+        TypeTag,
+        XmlTag,
+        ArenaTag,
+        SavedValueArrayTag,
+        LastTag = SavedValueArrayTag
+    };
+
+    static const uintptr_t StackTagMask = 7;
+
+    static void staticAsserts() {
+        typedef int moz_static_assert85[(StackTagMask >= uintptr_t(LastTag)) ? 1 : -1];
+        typedef int moz_static_assert86[(StackTagMask <= gc::Cell::CellMask) ? 1 : -1];
+    }
+
+  public:
+    explicit GCMarker();
+    bool init();
+
+    void setSizeLimit(size_t size) { stack.setSizeLimit(size); }
+    size_t sizeLimit() const { return stack.sizeLimit; }
+
+    void start(JSRuntime *rt);
+    void stop();
+    void reset();
+
+    void pushObject(JSObject *obj) {
+        pushTaggedPtr(ObjectTag, obj);
+    }
+
+    void pushArenaList(gc::ArenaHeader *firstArena) {
+        pushTaggedPtr(ArenaTag, firstArena);
+    }
+
+    void pushType(types::TypeObject *type) {
+        pushTaggedPtr(TypeTag, type);
+    }
+
+
+    void pushXML(JSXML *xml) {
+        pushTaggedPtr(XmlTag, xml);
+    }
+
+
+    uint32_t getMarkColor() const {
+        return color;
+    }
+# 908 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h"
+    void setMarkColorGray() {
+        do { } while(0);
+        do { } while(0);
+        color = gc::GRAY;
+    }
+
+    inline void delayMarkingArena(gc::ArenaHeader *aheader);
+    void delayMarkingChildren(const void *thing);
+    void markDelayedChildren(gc::ArenaHeader *aheader);
+    bool markDelayedChildren(SliceBudget &budget);
+    bool hasDelayedChildren() const {
+        return !!unmarkedArenaStackTop;
+    }
+
+    bool isDrained() {
+        return isMarkStackEmpty() && !unmarkedArenaStackTop;
+    }
+
+    bool drainMarkStack(SliceBudget &budget);
+# 936 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h"
+    bool hasBufferedGrayRoots() const;
+    void startBufferingGrayRoots();
+    void endBufferingGrayRoots();
+    void markBufferedGrayRoots();
+
+    static void GrayCallback(JSTracer *trc, void **thing, JSGCTraceKind kind);
+
+    size_t sizeOfExcludingThis(JSMallocSizeOfFun mallocSizeOf) const;
+
+    MarkStack<uintptr_t> stack;
+
+  private:
+
+
+
+    void checkCompartment(void *p) {}
+
+
+    void pushTaggedPtr(StackTag tag, void *ptr) {
+        checkCompartment(ptr);
+        uintptr_t addr = reinterpret_cast<uintptr_t>(ptr);
+        do { } while(0);
+        if (!stack.push(addr | uintptr_t(tag)))
+            delayMarkingChildren(ptr);
+    }
+
+    void pushValueArray(JSObject *obj, void *start, void *end) {
+        checkCompartment(obj);
+
+        do { } while(0);
+        uintptr_t tagged = reinterpret_cast<uintptr_t>(obj) | GCMarker::ValueArrayTag;
+        uintptr_t startAddr = reinterpret_cast<uintptr_t>(start);
+        uintptr_t endAddr = reinterpret_cast<uintptr_t>(end);
+
+
+
+
+
+        if (!stack.push(endAddr, startAddr, tagged))
+            delayMarkingChildren(obj);
+    }
+
+    bool isMarkStackEmpty() {
+        return stack.isEmpty();
+    }
+
+    bool restoreValueArray(JSObject *obj, void **vpp, void **endp);
+    void saveValueRanges();
+    inline void processMarkStackTop(SliceBudget &budget);
+    void processMarkStackOther(SliceBudget &budget, uintptr_t tag, uintptr_t addr);
+
+    void appendGrayRoot(void *thing, JSGCTraceKind kind);
+
+
+    uint32_t color;
+
+    DebugOnly<bool> started;
+
+
+    js::gc::ArenaHeader *unmarkedArenaStackTop;
+
+    DebugOnly<size_t> markLaterArenas;
+
+    struct GrayRoot {
+        void *thing;
+        JSGCTraceKind kind;
+
+
+
+
+
+
+        GrayRoot(void *thing, JSGCTraceKind kind)
+          : thing(thing), kind(kind) {}
+    };
+
+    bool grayFailed;
+    Vector<GrayRoot, 0, SystemAllocPolicy> grayRoots;
+};
+
+void
+SetMarkStackLimit(JSRuntime *rt, size_t limit);
+
+void
+MarkStackRangeConservatively(JSTracer *trc, Value *begin, Value *end);
+
+typedef void (*IterateChunkCallback)(JSRuntime *rt, void *data, gc::Chunk *chunk);
+typedef void (*IterateArenaCallback)(JSRuntime *rt, void *data, gc::Arena *arena,
+                                     JSGCTraceKind traceKind, size_t thingSize);
+typedef void (*IterateCellCallback)(JSRuntime *rt, void *data, void *thing,
+                                    JSGCTraceKind traceKind, size_t thingSize);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+IterateCompartmentsArenasCells(JSRuntime *rt, void *data,
+                               JSIterateCompartmentCallback compartmentCallback,
+                               IterateArenaCallback arenaCallback,
+                               IterateCellCallback cellCallback);
+
+
+
+
+extern __attribute__((visibility("default"))) void
+IterateChunks(JSRuntime *rt, void *data, IterateChunkCallback chunkCallback);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+IterateCells(JSRuntime *rt, JSCompartment *compartment, gc::AllocKind thingKind,
+             void *data, IterateCellCallback cellCallback);
+
+}
+
+extern void
+js_FinalizeStringRT(JSRuntime *rt, JSString *str);
+
+
+
+
+#define IS_GC_MARKING_TRACER(trc) ((trc)->callback == NULL || (trc)->callback == GCMarker::GrayCallback)
+
+
+namespace js {
+namespace gc {
+
+JSCompartment *
+NewCompartment(JSContext *cx, JSPrincipals *principals);
+
+
+void
+RunDebugGC(JSContext *cx);
+
+void
+SetDeterministicGC(JSContext *cx, bool enabled);
+
+const int ZealPokeValue = 1;
+const int ZealAllocValue = 2;
+const int ZealFrameGCValue = 3;
+const int ZealVerifierValue = 4;
+const int ZealFrameVerifierValue = 5;
+# 1094 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h"
+static inline void
+VerifyBarriers(JSRuntime *rt)
+{
+}
+
+static inline void
+MaybeVerifyBarriers(JSContext *cx, bool always = false)
+{
+}
+
+
+
+}
+
+static inline JSCompartment *
+GetObjectCompartment(JSObject *obj) { return reinterpret_cast<js::gc::Cell *>(obj)->compartment(); }
+
+}
+# 23 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspropertycache.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspropertycache.h"
+#define jspropertycache_h___ 
+
+
+
+
+
+
+
+namespace js {
+
+
+
+
+
+
+class PropertyCache;
+
+struct PropertyCacheEntry
+{
+    jsbytecode *kpc;
+    const Shape *kshape;
+    const Shape *pshape;
+    const Shape *prop;
+
+    friend class PropertyCache;
+
+  private:
+
+    uint8_t scopeIndex;
+
+    uint8_t protoIndex;
+
+  public:
+    static const size_t MaxScopeIndex = 15;
+    static const size_t MaxProtoIndex = 15;
+# 53 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspropertycache.h"
+    bool isOwnPropertyHit() const { return scopeIndex == 0 && protoIndex == 0; }
+# 63 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspropertycache.h"
+    bool isPrototypePropertyHit() const { return scopeIndex == 0 && protoIndex == 1; }
+
+    void assign(jsbytecode *kpc, const Shape *kshape, const Shape *pshape,
+                const Shape *prop, unsigned scopeIndex, unsigned protoIndex) {
+        do { } while(0);
+        do { } while(0);
+
+        this->kpc = kpc;
+        this->kshape = kshape;
+        this->pshape = pshape;
+        this->prop = prop;
+        this->scopeIndex = uint8_t(scopeIndex);
+        this->protoIndex = uint8_t(protoIndex);
+    }
+};
+
+
+
+
+
+#define JS_NO_PROP_CACHE_FILL ((js::PropertyCacheEntry *) NULL + 1)
+
+
+
+
+
+class PropertyCache
+{
+  private:
+    enum {
+        SIZE_LOG2 = 12,
+        SIZE = ((uint32_t)1 << (SIZE_LOG2)),
+        MASK = (((uint32_t)1 << (SIZE_LOG2)) - 1)
+    };
+
+    PropertyCacheEntry table[SIZE];
+    JSBool empty;
+
+  public:
+# 136 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspropertycache.h"
+#define PCMETER(x) ((void)0)
+
+
+    PropertyCache() {
+        PodZero(this);
+    }
+
+  private:
+    static inline uintptr_t
+    hash(jsbytecode *pc, const Shape *kshape)
+    {
+        return (((uintptr_t(pc) >> SIZE_LOG2) ^ uintptr_t(pc) ^ ((uintptr_t)kshape >> 3)) & MASK);
+    }
+
+    static inline bool matchShape(JSContext *cx, JSObject *obj, uint32_t shape);
+
+    PropertyName *
+    fullTest(JSContext *cx, jsbytecode *pc, JSObject **objp,
+             JSObject **pobjp, PropertyCacheEntry *entry);
+
+
+
+
+    inline void assertEmpty() {}
+
+
+  public:
+    __attribute__((always_inline)) inline void test(JSContext *cx, jsbytecode *pc,
+                               JSObject *&obj, JSObject *&pobj,
+                               PropertyCacheEntry *&entry, PropertyName *&name);
+# 174 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspropertycache.h"
+    __attribute__((always_inline)) inline bool testForSet(JSContext *cx, jsbytecode *pc, JSObject *obj,
+                                     PropertyCacheEntry **entryp, JSObject **obj2p,
+                                     PropertyName **namep);
+# 186 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jspropertycache.h"
+    PropertyCacheEntry *fill(JSContext *cx, JSObject *obj, unsigned scopeIndex,
+                             JSObject *pobj, const js::Shape *shape);
+
+    void purge(JSRuntime *rt);
+
+
+    void restore(PropertyCacheEntry *entry);
+};
+
+}
+# 24 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/prmjtime.h" 1
+
+
+
+
+
+
+
+#define prmjtime_h___ 
+
+# 1 "/usr/include/time.h" 1 3 4
+# 27 "/usr/include/time.h" 3 4
+#define _TIME_H 1
+
+
+extern "C" {
+
+
+
+
+
+#define __need_size_t 
+#define __need_NULL 
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 160 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 233 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 342 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 395 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 406 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 39 "/usr/include/time.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/time.h" 1 3 4
+# 41 "/usr/include/bits/time.h" 3 4
+#define _BITS_TIME_H 1
+
+
+
+
+
+
+
+#define CLOCKS_PER_SEC 1000000l
+# 61 "/usr/include/bits/time.h" 3 4
+#define CLOCK_REALTIME 0
+
+#define CLOCK_MONOTONIC 1
+
+#define CLOCK_PROCESS_CPUTIME_ID 2
+
+#define CLOCK_THREAD_CPUTIME_ID 3
+
+#define CLOCK_MONOTONIC_RAW 4
+
+#define CLOCK_REALTIME_COARSE 5
+
+#define CLOCK_MONOTONIC_COARSE 6
+
+#define CLOCK_BOOTTIME 7
+
+#define CLOCK_REALTIME_ALARM 8
+
+#define CLOCK_BOOTTIME_ALARM 9
+
+
+#define TIMER_ABSTIME 1
+
+
+
+# 1 "/usr/include/bits/timex.h" 1 3 4
+# 20 "/usr/include/bits/timex.h" 3 4
+#define _BITS_TIMEX_H 1
+
+
+
+struct timex
+{
+  unsigned int modes;
+  long int offset;
+  long int freq;
+  long int maxerror;
+  long int esterror;
+  int status;
+  long int constant;
+  long int precision;
+  long int tolerance;
+  struct timeval time;
+  long int tick;
+
+  long int ppsfreq;
+  long int jitter;
+  int shift;
+  long int stabil;
+  long int jitcnt;
+  long int calcnt;
+  long int errcnt;
+  long int stbcnt;
+
+  int tai;
+
+
+  int :32; int :32; int :32; int :32;
+  int :32; int :32; int :32; int :32;
+  int :32; int :32; int :32;
+};
+
+
+#define ADJ_OFFSET 0x0001
+#define ADJ_FREQUENCY 0x0002
+#define ADJ_MAXERROR 0x0004
+#define ADJ_ESTERROR 0x0008
+#define ADJ_STATUS 0x0010
+#define ADJ_TIMECONST 0x0020
+#define ADJ_TAI 0x0080
+#define ADJ_MICRO 0x1000
+#define ADJ_NANO 0x2000
+#define ADJ_TICK 0x4000
+#define ADJ_OFFSET_SINGLESHOT 0x8001
+#define ADJ_OFFSET_SS_READ 0xa001
+
+
+#define MOD_OFFSET ADJ_OFFSET
+#define MOD_FREQUENCY ADJ_FREQUENCY
+#define MOD_MAXERROR ADJ_MAXERROR
+#define MOD_ESTERROR ADJ_ESTERROR
+#define MOD_STATUS ADJ_STATUS
+#define MOD_TIMECONST ADJ_TIMECONST
+#define MOD_CLKB ADJ_TICK
+#define MOD_CLKA ADJ_OFFSET_SINGLESHOT
+#define MOD_TAI ADJ_TAI
+#define MOD_MICRO ADJ_MICRO
+#define MOD_NANO ADJ_NANO
+
+
+
+#define STA_PLL 0x0001
+#define STA_PPSFREQ 0x0002
+#define STA_PPSTIME 0x0004
+#define STA_FLL 0x0008
+
+#define STA_INS 0x0010
+#define STA_DEL 0x0020
+#define STA_UNSYNC 0x0040
+#define STA_FREQHOLD 0x0080
+
+#define STA_PPSSIGNAL 0x0100
+#define STA_PPSJITTER 0x0200
+#define STA_PPSWANDER 0x0400
+#define STA_PPSERROR 0x0800
+
+#define STA_CLOCKERR 0x1000
+#define STA_NANO 0x2000
+#define STA_MODE 0x4000
+#define STA_CLK 0x8000
+
+
+#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
+# 87 "/usr/include/bits/time.h" 2 3 4
+
+extern "C" {
+
+
+extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) throw ();
+
+}
+
+
+
+
+
+#undef __need_timeval
+# 43 "/usr/include/time.h" 2 3 4
+# 67 "/usr/include/time.h" 3 4
+#undef __need_clock_t
+# 83 "/usr/include/time.h" 3 4
+#undef __need_time_t
+# 95 "/usr/include/time.h" 3 4
+#undef __clockid_time_t
+# 107 "/usr/include/time.h" 3 4
+#undef __need_timer_t
+# 127 "/usr/include/time.h" 3 4
+#undef __need_timespec
+
+
+
+
+
+struct tm
+{
+  int tm_sec;
+  int tm_min;
+  int tm_hour;
+  int tm_mday;
+  int tm_mon;
+  int tm_year;
+  int tm_wday;
+  int tm_yday;
+  int tm_isdst;
+
+
+  long int tm_gmtoff;
+  __const char *tm_zone;
+
+
+
+
+};
+
+
+
+
+
+
+
+
+struct itimerspec
+  {
+    struct timespec it_interval;
+    struct timespec it_value;
+  };
+
+
+struct sigevent;
+# 180 "/usr/include/time.h" 3 4
+
+
+
+extern clock_t clock (void) throw ();
+
+
+extern time_t time (time_t *__timer) throw ();
+
+
+extern double difftime (time_t __time1, time_t __time0)
+     throw () __attribute__ ((__const__));
+
+
+extern time_t mktime (struct tm *__tp) throw ();
+
+
+
+
+
+extern size_t strftime (char *__restrict __s, size_t __maxsize,
+   __const char *__restrict __format,
+   __const struct tm *__restrict __tp) throw ();
+
+
+
+
+
+extern char *strptime (__const char *__restrict __s,
+         __const char *__restrict __fmt, struct tm *__tp)
+     throw ();
+
+
+
+
+
+
+
+extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
+     __const char *__restrict __format,
+     __const struct tm *__restrict __tp,
+     __locale_t __loc) throw ();
+
+
+
+extern char *strptime_l (__const char *__restrict __s,
+    __const char *__restrict __fmt, struct tm *__tp,
+    __locale_t __loc) throw ();
+
+
+
+
+
+
+extern struct tm *gmtime (__const time_t *__timer) throw ();
+
+
+
+extern struct tm *localtime (__const time_t *__timer) throw ();
+
+
+
+
+
+extern struct tm *gmtime_r (__const time_t *__restrict __timer,
+       struct tm *__restrict __tp) throw ();
+
+
+
+extern struct tm *localtime_r (__const time_t *__restrict __timer,
+          struct tm *__restrict __tp) throw ();
+
+
+
+
+
+extern char *asctime (__const struct tm *__tp) throw ();
+
+
+extern char *ctime (__const time_t *__timer) throw ();
+
+
+
+
+
+
+
+extern char *asctime_r (__const struct tm *__restrict __tp,
+   char *__restrict __buf) throw ();
+
+
+extern char *ctime_r (__const time_t *__restrict __timer,
+        char *__restrict __buf) throw ();
+
+
+
+
+extern char *__tzname[2];
+extern int __daylight;
+extern long int __timezone;
+
+
+
+
+extern char *tzname[2];
+
+
+
+extern void tzset (void) throw ();
+
+
+
+extern int daylight;
+extern long int timezone;
+
+
+
+
+
+extern int stime (__const time_t *__when) throw ();
+
+
+
+
+
+#define __isleap(year) ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
+# 313 "/usr/include/time.h" 3 4
+extern time_t timegm (struct tm *__tp) throw ();
+
+
+extern time_t timelocal (struct tm *__tp) throw ();
+
+
+extern int dysize (int __year) throw () __attribute__ ((__const__));
+# 328 "/usr/include/time.h" 3 4
+extern int nanosleep (__const struct timespec *__requested_time,
+        struct timespec *__remaining);
+
+
+
+extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw ();
+
+
+extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw ();
+
+
+extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
+     throw ();
+
+
+
+
+
+
+extern int clock_nanosleep (clockid_t __clock_id, int __flags,
+       __const struct timespec *__req,
+       struct timespec *__rem);
+
+
+extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) throw ();
+
+
+
+
+extern int timer_create (clockid_t __clock_id,
+    struct sigevent *__restrict __evp,
+    timer_t *__restrict __timerid) throw ();
+
+
+extern int timer_delete (timer_t __timerid) throw ();
+
+
+extern int timer_settime (timer_t __timerid, int __flags,
+     __const struct itimerspec *__restrict __value,
+     struct itimerspec *__restrict __ovalue) throw ();
+
+
+extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
+     throw ();
+
+
+extern int timer_getoverrun (timer_t __timerid) throw ();
+# 390 "/usr/include/time.h" 3 4
+extern int getdate_err;
+# 399 "/usr/include/time.h" 3 4
+extern struct tm *getdate (__const char *__string);
+# 413 "/usr/include/time.h" 3 4
+extern int getdate_r (__const char *__restrict __string,
+        struct tm *__restrict __resbufp);
+
+
+}
+# 11 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/prmjtime.h" 2
+
+struct JSContext;
+# 58 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/prmjtime.h"
+class DSTOffsetCache {
+  public:
+    inline DSTOffsetCache();
+    int64_t getDSTOffsetMilliseconds(int64_t localTimeMilliseconds, JSContext *cx);
+
+    inline void purge();
+
+  private:
+    int64_t computeDSTOffsetMilliseconds(int64_t localTimeSeconds);
+
+    int64_t offsetMilliseconds;
+    int64_t rangeStartSeconds, rangeEndSeconds;
+
+    int64_t oldOffsetMilliseconds;
+    int64_t oldRangeStartSeconds, oldRangeEndSeconds;
+
+    static const int64_t MAX_UNIX_TIMET = 2145859200;
+    static const int64_t MILLISECONDS_PER_SECOND = 1000;
+    static const int64_t SECONDS_PER_MINUTE = 60;
+    static const int64_t SECONDS_PER_HOUR = 60 * SECONDS_PER_MINUTE;
+    static const int64_t SECONDS_PER_DAY = 24 * SECONDS_PER_HOUR;
+
+    static const int64_t RANGE_EXPANSION_AMOUNT = 30 * SECONDS_PER_DAY;
+
+  private:
+    void sanityCheck();
+};
+
+extern "C" {
+
+typedef struct PRMJTime PRMJTime;
+
+
+
+
+struct PRMJTime {
+    int32_t tm_usec;
+    int8_t tm_sec;
+    int8_t tm_min;
+    int8_t tm_hour;
+    int8_t tm_mday;
+    int8_t tm_mon;
+    int8_t tm_wday;
+    int32_t tm_year;
+    int16_t tm_yday;
+    int8_t tm_isdst;
+};
+
+
+#define PRMJ_USEC_PER_SEC 1000000L
+#define PRMJ_USEC_PER_MSEC 1000L
+
+
+extern int64_t
+PRMJ_Now(void);
+
+
+
+
+
+
+#define PRMJ_NowShutdown() 
+
+
+
+extern int32_t
+PRMJ_LocalGMTDifference(void);
+
+
+extern size_t
+PRMJ_FormatTime(char *buf, int buflen, const char *fmt, PRMJTime *tm);
+
+}
+# 27 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h" 2
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+#define Stack_h__ 
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfun.h" 1
+
+
+
+
+
+
+
+#define jsfun_h___ 
+
+
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+#define jsscript_h___ 
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsdbgapi.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsdbgapi.h"
+#define jsdbgapi_h___ 
+
+
+
+
+
+
+extern "C" {
+
+extern __attribute__((visibility("default"))) JSCrossCompartmentCall *
+JS_EnterCrossCompartmentCallScript(JSContext *cx, JSScript *target);
+
+extern __attribute__((visibility("default"))) JSCrossCompartmentCall *
+JS_EnterCrossCompartmentCallStackFrame(JSContext *cx, JSStackFrame *target);
+
+
+}
+
+namespace JS {
+
+class __attribute__((visibility("default"))) AutoEnterScriptCompartment
+{
+  protected:
+    JSCrossCompartmentCall *call;
+
+  public:
+    AutoEnterScriptCompartment() : call(__null) {}
+
+    bool enter(JSContext *cx, JSScript *target);
+
+    bool entered() const { return call != __null; }
+
+    ~AutoEnterScriptCompartment() {
+        if (call && call != reinterpret_cast<JSCrossCompartmentCall*>(1))
+            JS_LeaveCrossCompartmentCall(call);
+    }
+};
+
+class __attribute__((visibility("default"))) AutoEnterFrameCompartment : public AutoEnterScriptCompartment
+{
+  public:
+    bool enter(JSContext *cx, JSStackFrame *target);
+};
+
+}
+
+
+
+
+
+
+__attribute__((visibility("default"))) void js_DumpBacktrace(JSContext *cx);
+
+extern "C" {
+
+
+extern __attribute__((visibility("default"))) JSString *
+JS_DecompileScript(JSContext *cx, JSScript *script, const char *name, unsigned indent);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_SetRuntimeDebugMode(JSRuntime *rt, JSBool debug);
+# 86 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsdbgapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_GetDebugMode(JSContext *cx);
+
+
+
+
+
+__attribute__((visibility("default"))) JSBool
+JS_SetDebugModeForAllCompartments(JSContext *cx, JSBool debug);
+
+
+
+
+
+
+__attribute__((visibility("default"))) JSBool
+JS_SetDebugModeForCompartment(JSContext *cx, JSCompartment *comp, JSBool debug);
+
+
+
+
+__attribute__((visibility("default"))) JSBool
+JS_SetDebugMode(JSContext *cx, JSBool debug);
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetSingleStepMode(JSContext *cx, JSScript *script, JSBool singleStep);
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetTrap(JSContext *cx, JSScript *script, jsbytecode *pc,
+           JSTrapHandler handler, jsval closure);
+
+extern __attribute__((visibility("default"))) void
+JS_ClearTrap(JSContext *cx, JSScript *script, jsbytecode *pc,
+             JSTrapHandler *handlerp, jsval *closurep);
+
+extern __attribute__((visibility("default"))) void
+JS_ClearScriptTraps(JSContext *cx, JSScript *script);
+
+extern __attribute__((visibility("default"))) void
+JS_ClearAllTrapsForCompartment(JSContext *cx);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetInterrupt(JSRuntime *rt, JSInterruptHook handler, void *closure);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ClearInterrupt(JSRuntime *rt, JSInterruptHook *handlerp, void **closurep);
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetWatchPoint(JSContext *cx, JSObject *obj, jsid id,
+                 JSWatchPointHandler handler, JSObject *closure);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ClearWatchPoint(JSContext *cx, JSObject *obj, jsid id,
+                   JSWatchPointHandler *handlerp, JSObject **closurep);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ClearWatchPointsForObject(JSContext *cx, JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ClearAllWatchPoints(JSContext *cx);
+
+
+
+extern __attribute__((visibility("default"))) unsigned
+JS_PCToLineNumber(JSContext *cx, JSScript *script, jsbytecode *pc);
+
+extern __attribute__((visibility("default"))) jsbytecode *
+JS_LineNumberToPC(JSContext *cx, JSScript *script, unsigned lineno);
+
+extern __attribute__((visibility("default"))) jsbytecode *
+JS_EndPC(JSContext *cx, JSScript *script);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetLinePCs(JSContext *cx, JSScript *script,
+              unsigned startLine, unsigned maxLines,
+              unsigned* count, unsigned** lines, jsbytecode*** pcs);
+
+extern __attribute__((visibility("default"))) unsigned
+JS_GetFunctionArgumentCount(JSContext *cx, JSFunction *fun);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_FunctionHasLocalNames(JSContext *cx, JSFunction *fun);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) uintptr_t *
+JS_GetFunctionLocalNameArray(JSContext *cx, JSFunction *fun, void **markp);
+
+extern __attribute__((visibility("default"))) JSAtom *
+JS_LocalNameToAtom(uintptr_t w);
+
+extern __attribute__((visibility("default"))) JSString *
+JS_AtomKey(JSAtom *atom);
+
+extern __attribute__((visibility("default"))) void
+JS_ReleaseFunctionLocalNameArray(JSContext *cx, void *mark);
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_GetFunctionScript(JSContext *cx, JSFunction *fun);
+
+extern __attribute__((visibility("default"))) JSNative
+JS_GetFunctionNative(JSContext *cx, JSFunction *fun);
+
+extern __attribute__((visibility("default"))) JSPrincipals *
+JS_GetScriptPrincipals(JSScript *script);
+
+extern __attribute__((visibility("default"))) JSPrincipals *
+JS_GetScriptOriginPrincipals(JSScript *script);
+# 209 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsdbgapi.h"
+extern __attribute__((visibility("default"))) JSStackFrame *
+JS_FrameIterator(JSContext *cx, JSStackFrame **iteratorp);
+
+extern __attribute__((visibility("default"))) JSScript *
+JS_GetFrameScript(JSContext *cx, JSStackFrame *fp);
+
+extern __attribute__((visibility("default"))) jsbytecode *
+JS_GetFramePC(JSContext *cx, JSStackFrame *fp);
+
+extern __attribute__((visibility("default"))) void *
+JS_GetFrameAnnotation(JSContext *cx, JSStackFrame *fp);
+
+extern __attribute__((visibility("default"))) void
+JS_SetFrameAnnotation(JSContext *cx, JSStackFrame *fp, void *annotation);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsScriptFrame(JSContext *cx, JSStackFrame *fp);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetFrameScopeChain(JSContext *cx, JSStackFrame *fp);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetFrameCallObject(JSContext *cx, JSStackFrame *fp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetFrameThis(JSContext *cx, JSStackFrame *fp, jsval *thisv);
+
+extern __attribute__((visibility("default"))) JSFunction *
+JS_GetFrameFunction(JSContext *cx, JSStackFrame *fp);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetFrameFunctionObject(JSContext *cx, JSStackFrame *fp);
+
+__attribute__((visibility("default"))) JSFunction *
+JS_GetScriptFunction(JSContext *cx, JSScript *script);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetParentOrScopeChain(JSContext *cx, JSObject *obj);
+
+
+#define JS_IsContructorFrame JS_IsConstructorFrame
+extern __attribute__((visibility("default"))) JSBool
+JS_IsConstructorFrame(JSContext *cx, JSStackFrame *fp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsDebuggerFrame(JSContext *cx, JSStackFrame *fp);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsGlobalFrame(JSContext *cx, JSStackFrame *fp);
+
+extern __attribute__((visibility("default"))) jsval
+JS_GetFrameReturnValue(JSContext *cx, JSStackFrame *fp);
+
+extern __attribute__((visibility("default"))) void
+JS_SetFrameReturnValue(JSContext *cx, JSStackFrame *fp, jsval rval);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_GetFrameCalleeObject(JSContext *cx, JSStackFrame *fp);
+# 281 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsdbgapi.h"
+extern __attribute__((visibility("default"))) const char *
+JS_GetDebugClassName(JSObject *obj);
+
+
+
+extern __attribute__((visibility("default"))) const char *
+JS_GetScriptFilename(JSContext *cx, JSScript *script);
+
+extern __attribute__((visibility("default"))) const jschar *
+JS_GetScriptSourceMap(JSContext *cx, JSScript *script);
+
+extern __attribute__((visibility("default"))) unsigned
+JS_GetScriptBaseLineNumber(JSContext *cx, JSScript *script);
+
+extern __attribute__((visibility("default"))) unsigned
+JS_GetScriptLineExtent(JSContext *cx, JSScript *script);
+
+extern __attribute__((visibility("default"))) JSVersion
+JS_GetScriptVersion(JSContext *cx, JSScript *script);
+# 308 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsdbgapi.h"
+#define JS_SetNewScriptHook JS_SetNewScriptHookProc
+#define JS_SetDestroyScriptHook JS_SetDestroyScriptHookProc
+
+extern __attribute__((visibility("default"))) void
+JS_SetNewScriptHookProc(JSRuntime *rt, JSNewScriptHook hook, void *callerdata);
+
+extern __attribute__((visibility("default"))) void
+JS_SetDestroyScriptHookProc(JSRuntime *rt, JSDestroyScriptHook hook,
+                        void *callerdata);
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_EvaluateUCInStackFrame(JSContext *cx, JSStackFrame *fp,
+                          const jschar *chars, unsigned length,
+                          const char *filename, unsigned lineno,
+                          jsval *rval);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_EvaluateInStackFrame(JSContext *cx, JSStackFrame *fp,
+                        const char *bytes, unsigned length,
+                        const char *filename, unsigned lineno,
+                        jsval *rval);
+
+
+
+typedef struct JSPropertyDesc {
+    jsval id;
+    jsval value;
+    uint8_t flags;
+    uint8_t spare;
+    uint16_t slot;
+    jsval alias;
+} JSPropertyDesc;
+
+#define JSPD_ENUMERATE 0x01
+#define JSPD_READONLY 0x02
+#define JSPD_PERMANENT 0x04
+#define JSPD_ALIAS 0x08
+#define JSPD_ARGUMENT 0x10
+#define JSPD_VARIABLE 0x20
+#define JSPD_EXCEPTION 0x40
+
+#define JSPD_ERROR 0x80
+
+
+typedef struct JSPropertyDescArray {
+    uint32_t length;
+    JSPropertyDesc *array;
+} JSPropertyDescArray;
+
+typedef struct JSScopeProperty JSScopeProperty;
+
+extern __attribute__((visibility("default"))) JSBool
+JS_GetPropertyDescArray(JSContext *cx, JSObject *obj, JSPropertyDescArray *pda);
+
+extern __attribute__((visibility("default"))) void
+JS_PutPropertyDescArray(JSContext *cx, JSPropertyDescArray *pda);
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetDebuggerHandler(JSRuntime *rt, JSDebuggerHandler hook, void *closure);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetSourceHandler(JSRuntime *rt, JSSourceHandler handler, void *closure);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetExecuteHook(JSRuntime *rt, JSInterpreterHook hook, void *closure);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetCallHook(JSRuntime *rt, JSInterpreterHook hook, void *closure);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetThrowHook(JSRuntime *rt, JSThrowHook hook, void *closure);
+
+extern __attribute__((visibility("default"))) JSBool
+JS_SetDebugErrorHook(JSRuntime *rt, JSDebugErrorHook hook, void *closure);
+
+
+
+extern __attribute__((visibility("default"))) size_t
+JS_GetObjectTotalSize(JSContext *cx, JSObject *obj);
+
+extern __attribute__((visibility("default"))) size_t
+JS_GetFunctionTotalSize(JSContext *cx, JSFunction *fun);
+
+extern __attribute__((visibility("default"))) size_t
+JS_GetScriptTotalSize(JSContext *cx, JSScript *script);
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_IsSystemObject(JSContext *cx, JSObject *obj);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_MakeSystemObject(JSContext *cx, JSObject *obj);
+
+
+
+extern __attribute__((visibility("default"))) void
+js_RevertVersion(JSContext *cx);
+
+extern __attribute__((visibility("default"))) const JSDebugHooks *
+JS_GetGlobalDebugHooks(JSRuntime *rt);
+# 434 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsdbgapi.h"
+extern __attribute__((visibility("default"))) JSBool
+JS_StartProfiling(const char *profileName);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_StopProfiling(const char *profileName);
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DumpProfile(const char *outfile, const char *profileName);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_PauseProfilers(const char *profileName);
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_ResumeProfilers(const char *profileName);
+
+
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DefineProfilingFunctions(JSContext *cx, JSObject *obj);
+
+
+extern __attribute__((visibility("default"))) JSBool
+JS_DefineDebuggerObject(JSContext *cx, JSObject *obj);
+
+
+
+
+
+
+__attribute__((visibility("default"))) const char *
+JS_UnsafeGetLastProfilingError();
+# 514 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsdbgapi.h"
+extern __attribute__((visibility("default"))) JSBool
+js_StartPerf();
+
+extern __attribute__((visibility("default"))) JSBool
+js_StopPerf();
+
+
+
+extern __attribute__((visibility("default"))) void
+JS_DumpBytecode(JSContext *cx, JSScript *script);
+
+extern __attribute__((visibility("default"))) void
+JS_DumpCompartmentBytecode(JSContext *cx);
+
+extern __attribute__((visibility("default"))) void
+JS_DumpPCCounts(JSContext *cx, JSScript *script);
+
+extern __attribute__((visibility("default"))) void
+JS_DumpCompartmentPCCounts(JSContext *cx);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_UnwrapObject(JSObject *obj);
+
+extern __attribute__((visibility("default"))) JSObject *
+JS_UnwrapObjectAndInnerize(JSObject *obj);
+
+
+extern __attribute__((visibility("default"))) JSBool
+js_CallContextDebugHandler(JSContext *cx);
+
+}
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsopcode.h" 1
+
+
+
+
+
+
+
+#define jsopcode_h___ 
+
+
+
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsopcode.h" 2
+
+
+
+
+extern "C" {
+
+
+
+
+typedef enum JSOp {
+#define OPDEF(op,val,name,token,length,nuses,ndefs,prec,format) op = val,
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsopcode.tbl" 1
+# 80 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsopcode.tbl"
+JSOP_NOP = 0,
+
+
+JSOP_UNDEFINED = 1,
+JSOP_POPV = 2,
+JSOP_ENTERWITH = 3,
+JSOP_LEAVEWITH = 4,
+JSOP_RETURN = 5,
+JSOP_GOTO = 6,
+JSOP_IFEQ = 7,
+JSOP_IFNE = 8,
+
+
+JSOP_ARGUMENTS = 9,
+
+JSOP_SWAP = 10,
+JSOP_POPN = 11,
+
+
+JSOP_DUP = 12,
+JSOP_DUP2 = 13,
+JSOP_SETCONST = 14,
+JSOP_BITOR = 15,
+JSOP_BITXOR = 16,
+JSOP_BITAND = 17,
+JSOP_EQ = 18,
+JSOP_NE = 19,
+JSOP_LT = 20,
+JSOP_LE = 21,
+JSOP_GT = 22,
+JSOP_GE = 23,
+JSOP_LSH = 24,
+JSOP_RSH = 25,
+JSOP_URSH = 26,
+JSOP_ADD = 27,
+JSOP_SUB = 28,
+JSOP_MUL = 29,
+JSOP_DIV = 30,
+JSOP_MOD = 31,
+JSOP_NOT = 32,
+JSOP_BITNOT = 33,
+JSOP_NEG = 34,
+JSOP_POS = 35,
+JSOP_DELNAME = 36,
+JSOP_DELPROP = 37,
+JSOP_DELELEM = 38,
+JSOP_TYPEOF = 39,
+JSOP_VOID = 40,
+
+JSOP_INCNAME = 41,
+JSOP_INCPROP = 42,
+JSOP_INCELEM = 43,
+JSOP_DECNAME = 44,
+JSOP_DECPROP = 45,
+JSOP_DECELEM = 46,
+JSOP_NAMEINC = 47,
+JSOP_PROPINC = 48,
+JSOP_ELEMINC = 49,
+JSOP_NAMEDEC = 50,
+JSOP_PROPDEC = 51,
+JSOP_ELEMDEC = 52,
+
+JSOP_GETPROP = 53,
+JSOP_SETPROP = 54,
+JSOP_GETELEM = 55,
+JSOP_SETELEM = 56,
+JSOP_CALLNAME = 57,
+JSOP_CALL = 58,
+JSOP_NAME = 59,
+JSOP_DOUBLE = 60,
+JSOP_STRING = 61,
+JSOP_ZERO = 62,
+JSOP_ONE = 63,
+JSOP_NULL = 64,
+JSOP_THIS = 65,
+JSOP_FALSE = 66,
+JSOP_TRUE = 67,
+JSOP_OR = 68,
+JSOP_AND = 69,
+
+
+JSOP_TABLESWITCH = 70,
+JSOP_LOOKUPSWITCH = 71,
+
+
+JSOP_STRICTEQ = 72,
+JSOP_STRICTNE = 73,
+
+
+
+
+
+JSOP_SETCALL = 74,
+# 186 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsopcode.tbl"
+JSOP_ITER = 75,
+JSOP_MOREITER = 76,
+JSOP_ITERNEXT = 77,
+JSOP_ENDITER = 78,
+
+JSOP_FUNAPPLY = 79,
+
+
+JSOP_OBJECT = 80,
+
+
+JSOP_POP = 81,
+
+
+JSOP_NEW = 82,
+
+JSOP_UNUSED0 = 83,
+
+
+JSOP_GETARG = 84,
+JSOP_SETARG = 85,
+JSOP_GETLOCAL = 86,
+JSOP_SETLOCAL = 87,
+
+
+JSOP_UINT16 = 88,
+# 221 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsopcode.tbl"
+JSOP_NEWINIT = 89,
+JSOP_NEWARRAY = 90,
+JSOP_NEWOBJECT = 91,
+JSOP_ENDINIT = 92,
+JSOP_INITPROP = 93,
+JSOP_INITELEM = 94,
+JSOP_UNUSED14 = 95,
+JSOP_UNUSED15 = 96,
+
+
+JSOP_INCARG = 97,
+JSOP_DECARG = 98,
+JSOP_ARGINC = 99,
+JSOP_ARGDEC = 100,
+
+JSOP_INCLOCAL = 101,
+JSOP_DECLOCAL = 102,
+JSOP_LOCALINC = 103,
+JSOP_LOCALDEC = 104,
+
+
+JSOP_LEAVEFORLETIN = 105,
+
+
+JSOP_LABEL = 106,
+JSOP_UNUSED3 = 107,
+
+
+JSOP_FUNCALL = 108,
+
+
+JSOP_LOOPHEAD = 109,
+
+
+JSOP_BINDNAME = 110,
+JSOP_SETNAME = 111,
+
+
+JSOP_THROW = 112,
+
+
+JSOP_IN = 113,
+JSOP_INSTANCEOF = 114,
+
+
+JSOP_DEBUGGER = 115,
+
+
+JSOP_GOSUB = 116,
+JSOP_RETSUB = 117,
+
+
+JSOP_EXCEPTION = 118,
+
+
+JSOP_LINENO = 119,
+
+
+
+
+
+
+JSOP_CONDSWITCH = 120,
+JSOP_CASE = 121,
+JSOP_DEFAULT = 122,
+
+
+
+
+JSOP_EVAL = 123,
+
+
+
+
+JSOP_ENUMELEM = 124,
+
+
+
+
+
+
+JSOP_GETTER = 125,
+JSOP_SETTER = 126,
+
+
+
+
+JSOP_DEFFUN = 127,
+JSOP_DEFCONST = 128,
+JSOP_DEFVAR = 129,
+
+
+JSOP_LAMBDA = 130,
+
+
+JSOP_CALLEE = 131,
+
+JSOP_UNUSED31 = 132,
+
+
+JSOP_PICK = 133,
+
+
+
+
+
+JSOP_TRY = 134,
+JSOP_FINALLY = 135,
+# 337 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsopcode.tbl"
+JSOP_GETALIASEDVAR = 136,
+JSOP_CALLALIASEDVAR = 137,
+JSOP_SETALIASEDVAR = 138,
+JSOP_INCALIASEDVAR = 139,
+JSOP_DECALIASEDVAR = 140,
+JSOP_ALIASEDVARINC = 141,
+JSOP_ALIASEDVARDEC = 142,
+
+
+JSOP_UNUSED8 = 143,
+JSOP_UNUSED9 = 144,
+JSOP_UNUSED10 = 145,
+JSOP_UNUSED11 = 146,
+JSOP_UNUSED12 = 147,
+JSOP_UNUSED13 = 148,
+
+
+JSOP_BACKPATCH = 149,
+JSOP_BACKPATCH_POP = 150,
+
+
+JSOP_THROWING = 151,
+
+
+JSOP_SETRVAL = 152,
+JSOP_RETRVAL = 153,
+
+
+JSOP_GETGNAME = 154,
+JSOP_SETGNAME = 155,
+JSOP_INCGNAME = 156,
+JSOP_DECGNAME = 157,
+JSOP_GNAMEINC = 158,
+JSOP_GNAMEDEC = 159,
+
+
+JSOP_REGEXP = 160,
+
+
+JSOP_DEFXMLNS = 161,
+JSOP_ANYNAME = 162,
+JSOP_QNAMEPART = 163,
+JSOP_QNAMECONST = 164,
+JSOP_QNAME = 165,
+JSOP_TOATTRNAME = 166,
+JSOP_TOATTRVAL = 167,
+JSOP_ADDATTRNAME = 168,
+JSOP_ADDATTRVAL = 169,
+JSOP_BINDXMLNAME = 170,
+JSOP_SETXMLNAME = 171,
+JSOP_XMLNAME = 172,
+JSOP_DESCENDANTS = 173,
+JSOP_FILTER = 174,
+JSOP_ENDFILTER = 175,
+JSOP_TOXML = 176,
+JSOP_TOXMLLIST = 177,
+JSOP_XMLTAGEXPR = 178,
+JSOP_XMLELTEXPR = 179,
+JSOP_XMLCDATA = 180,
+JSOP_XMLCOMMENT = 181,
+JSOP_XMLPI = 182,
+JSOP_DELDESC = 183,
+
+JSOP_CALLPROP = 184,
+
+
+JSOP_ENTERLET0 = 185,
+
+
+JSOP_ENTERLET1 = 186,
+
+
+
+
+JSOP_UINT24 = 187,
+
+JSOP_UNUSED18 = 188,
+JSOP_UNUSED19 = 189,
+JSOP_UNUSED20 = 190,
+
+
+
+
+JSOP_STARTXML = 191,
+JSOP_STARTXMLEXPR = 192,
+
+JSOP_CALLELEM = 193,
+
+
+
+
+
+JSOP_STOP = 194,
+
+
+
+
+
+JSOP_GETXPROP = 195,
+
+JSOP_CALLXMLNAME = 196,
+
+
+
+
+JSOP_TYPEOFEXPR = 197,
+
+
+
+
+JSOP_ENTERBLOCK = 198,
+JSOP_LEAVEBLOCK = 199,
+
+
+JSOP_UNUSED1 = 200,
+JSOP_UNUSED2 = 201,
+
+
+
+
+JSOP_GENERATOR = 202,
+JSOP_YIELD = 203,
+JSOP_ARRAYPUSH = 204,
+
+
+
+
+JSOP_GETFUNNS = 205,
+
+
+
+
+JSOP_ENUMCONSTELEM = 206,
+
+
+
+
+
+JSOP_LEAVEBLOCKEXPR = 207,
+
+JSOP_UNUSED21 = 208,
+JSOP_UNUSED22 = 209,
+JSOP_UNUSED23 = 210,
+
+JSOP_CALLGNAME = 211,
+JSOP_CALLLOCAL = 212,
+JSOP_CALLARG = 213,
+JSOP_BINDGNAME = 214,
+
+
+
+
+JSOP_INT8 = 215,
+JSOP_INT32 = 216,
+
+
+
+
+JSOP_LENGTH = 217,
+
+
+
+
+
+
+JSOP_HOLE = 218,
+
+JSOP_UNUSED17 = 219,
+JSOP_UNUSED24 = 220,
+JSOP_UNUSED25 = 221,
+JSOP_UNUSED29 = 222,
+JSOP_UNUSED30 = 223,
+
+JSOP_REST = 224,
+
+
+JSOP_TOID = 225,
+
+
+JSOP_IMPLICITTHIS = 226,
+
+
+JSOP_LOOPENTRY = 227,
+
+JSOP_ACTUALSFILLED = 228,
+# 27 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsopcode.h" 2
+#undef OPDEF
+    JSOP_LIMIT,
+
+
+
+
+
+
+    JSOP_GETPROP2 = JSOP_LIMIT,
+    JSOP_GETELEM2 = JSOP_LIMIT + 1,
+    JSOP_FORLOCAL = JSOP_LIMIT + 2,
+    JSOP_FAKE_LIMIT = JSOP_FORLOCAL
+} JSOp;
+
+
+
+
+#define JOF_BYTE 0
+#define JOF_JUMP 1
+#define JOF_ATOM 2
+#define JOF_UINT16 3
+#define JOF_TABLESWITCH 4
+#define JOF_LOOKUPSWITCH 5
+#define JOF_QARG 6
+#define JOF_LOCAL 7
+#define JOF_DOUBLE 8
+#define JOF_UINT24 12
+#define JOF_UINT8 13
+
+#define JOF_INT32 14
+#define JOF_OBJECT 15
+#define JOF_SLOTOBJECT 16
+#define JOF_REGEXP 17
+#define JOF_INT8 18
+#define JOF_ATOMOBJECT 19
+#define JOF_UINT16PAIR 20
+#define JOF_SCOPECOORD 21
+#define JOF_TYPEMASK 0x001f
+
+#define JOF_NAME (1U<<5)
+#define JOF_PROP (2U<<5)
+#define JOF_ELEM (3U<<5)
+#define JOF_XMLNAME (4U<<5)
+#define JOF_MODEMASK (7U<<5)
+#define JOF_SET (1U<<8)
+#define JOF_DEL (1U<<9)
+#define JOF_DEC (1U<<10)
+#define JOF_INC (2U<<10)
+#define JOF_INCDEC (3U<<10)
+#define JOF_POST (1U<<12)
+#define JOF_ASSIGNING JOF_SET
+
+#define JOF_DETECTING (1U<<14)
+#define JOF_BACKPATCH (1U<<15)
+#define JOF_LEFTASSOC (1U<<16)
+#define JOF_DECLARING (1U<<17)
+
+#define JOF_PARENHEAD (1U<<20)
+
+#define JOF_INVOKE (1U<<21)
+#define JOF_TMPSLOT (1U<<22)
+
+
+#define JOF_TMPSLOT2 (2U<<22)
+
+#define JOF_TMPSLOT3 (3U<<22)
+
+#define JOF_TMPSLOT_SHIFT 22
+#define JOF_TMPSLOT_MASK (JS_BITMASK(2) << JOF_TMPSLOT_SHIFT)
+
+
+#define JOF_GNAME (1U<<25)
+#define JOF_TYPESET (1U<<26)
+#define JOF_DECOMPOSE (1U<<27)
+
+#define JOF_ARITH (1U<<28)
+
+
+#define JOF_TYPE(fmt) ((fmt) & JOF_TYPEMASK)
+#define JOF_OPTYPE(op) JOF_TYPE(js_CodeSpec[op].format)
+
+
+#define JOF_MODE(fmt) ((fmt) & JOF_MODEMASK)
+#define JOF_OPMODE(op) JOF_MODE(js_CodeSpec[op].format)
+
+#define JOF_TYPE_IS_EXTENDED_JUMP(t) ((unsigned)((t) - JOF_JUMP) <= (unsigned)(JOF_LOOKUPSWITCH - JOF_JUMP))
+
+
+
+
+
+
+static __attribute__((always_inline)) inline uint8_t
+GET_UINT8(jsbytecode *pc)
+{
+    return (uint8_t) pc[1];
+}
+
+static __attribute__((always_inline)) inline void
+SET_UINT8(jsbytecode *pc, uint8_t u)
+{
+    pc[1] = (jsbytecode) u;
+}
+
+
+#define UINT16_LEN 2
+#define UINT16_HI(i) ((jsbytecode)((i) >> 8))
+#define UINT16_LO(i) ((jsbytecode)(i))
+#define GET_UINT16(pc) ((unsigned)(((pc)[1] << 8) | (pc)[2]))
+#define SET_UINT16(pc,i) ((pc)[1] = UINT16_HI(i), (pc)[2] = UINT16_LO(i))
+#define UINT16_LIMIT ((unsigned)1 << 16)
+
+
+#define JUMP_OFFSET_LEN 4
+#define JUMP_OFFSET_MIN INT32_MIN
+#define JUMP_OFFSET_MAX INT32_MAX
+
+static __attribute__((always_inline)) inline int32_t
+GET_JUMP_OFFSET(jsbytecode *pc)
+{
+    return (pc[1] << 24) | (pc[2] << 16) | (pc[3] << 8) | pc[4];
+}
+
+static __attribute__((always_inline)) inline void
+SET_JUMP_OFFSET(jsbytecode *pc, int32_t off)
+{
+    pc[1] = (jsbytecode)(off >> 24);
+    pc[2] = (jsbytecode)(off >> 16);
+    pc[3] = (jsbytecode)(off >> 8);
+    pc[4] = (jsbytecode)off;
+}
+
+#define UINT32_INDEX_LEN 4
+
+static __attribute__((always_inline)) inline uint32_t
+GET_UINT32_INDEX(const jsbytecode *pc)
+{
+    return (pc[1] << 24) | (pc[2] << 16) | (pc[3] << 8) | pc[4];
+}
+
+static __attribute__((always_inline)) inline void
+SET_UINT32_INDEX(jsbytecode *pc, uint32_t index)
+{
+    pc[1] = (jsbytecode)(index >> 24);
+    pc[2] = (jsbytecode)(index >> 16);
+    pc[3] = (jsbytecode)(index >> 8);
+    pc[4] = (jsbytecode)index;
+}
+
+#define UINT24_HI(i) ((jsbytecode)((i) >> 16))
+#define UINT24_MID(i) ((jsbytecode)((i) >> 8))
+#define UINT24_LO(i) ((jsbytecode)(i))
+#define GET_UINT24(pc) ((jsatomid)(((pc)[1] << 16) | ((pc)[2] << 8) | (pc)[3]))
+
+
+#define SET_UINT24(pc,i) ((pc)[1] = UINT24_HI(i), (pc)[2] = UINT24_MID(i), (pc)[3] = UINT24_LO(i))
+
+
+
+#define GET_INT8(pc) (int8_t((pc)[1]))
+
+#define GET_INT32(pc) (((uint32_t((pc)[1]) << 24) | (uint32_t((pc)[2]) << 16) | (uint32_t((pc)[3]) << 8) | uint32_t((pc)[4])))
+
+
+
+#define SET_INT32(pc,i) ((pc)[1] = (jsbytecode)(uint32_t(i) >> 24), (pc)[2] = (jsbytecode)(uint32_t(i) >> 16), (pc)[3] = (jsbytecode)(uint32_t(i) >> 8), (pc)[4] = (jsbytecode)uint32_t(i))
+
+
+
+
+
+#define INDEX_LIMIT_LOG2 23
+#define INDEX_LIMIT (uint32_t(1) << INDEX_LIMIT_LOG2)
+
+
+#define ARGC_HI(argc) UINT16_HI(argc)
+#define ARGC_LO(argc) UINT16_LO(argc)
+#define GET_ARGC(pc) GET_UINT16(pc)
+#define ARGC_LIMIT UINT16_LIMIT
+
+
+#define GET_ARGNO(pc) GET_UINT16(pc)
+#define SET_ARGNO(pc,argno) SET_UINT16(pc,argno)
+#define ARGNO_LEN 2
+#define ARGNO_LIMIT UINT16_LIMIT
+
+#define GET_SLOTNO(pc) GET_UINT16(pc)
+#define SET_SLOTNO(pc,varno) SET_UINT16(pc,varno)
+#define SLOTNO_LEN 2
+#define SLOTNO_LIMIT UINT16_LIMIT
+
+struct JSCodeSpec {
+    int8_t length;
+    int8_t nuses;
+    int8_t ndefs;
+    uint8_t prec;
+    uint32_t format;
+
+    uint32_t type() const { return ((format) & 0x001f); }
+};
+
+extern const JSCodeSpec js_CodeSpec[];
+extern unsigned js_NumCodeSpecs;
+extern const char *js_CodeName[];
+extern const char js_EscapeMap[];
+# 244 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsopcode.h"
+extern JSString *
+js_QuoteString(JSContext *cx, JSString *str, jschar quote);
+# 258 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsopcode.h"
+extern JSPrinter *
+js_NewPrinter(JSContext *cx, const char *name, JSFunction *fun,
+              unsigned indent, JSBool pretty, JSBool grouped, JSBool strict);
+
+extern void
+js_DestroyPrinter(JSPrinter *jp);
+
+extern JSString *
+js_GetPrinterOutput(JSPrinter *jp);
+
+extern int
+js_printf(JSPrinter *jp, const char *format, ...);
+
+extern JSBool
+js_puts(JSPrinter *jp, const char *s);
+
+#define GET_ATOM_FROM_BYTECODE(script,pc,pcoff,atom) JS_BEGIN_MACRO JS_ASSERT(js_CodeSpec[*(pc)].format & JOF_ATOM); (atom) = (script)->getAtom(GET_UINT32_INDEX((pc) + (pcoff))); JS_END_MACRO
+
+
+
+
+
+#define GET_NAME_FROM_BYTECODE(script,pc,pcoff,name) JS_BEGIN_MACRO JSAtom *atom_; GET_ATOM_FROM_BYTECODE(script, pc, pcoff, atom_); JS_ASSERT(js_CodeSpec[*(pc)].format & (JOF_NAME | JOF_PROP)); (name) = atom_->asPropertyName(); JS_END_MACRO
+
+
+
+
+
+
+
+namespace js {
+
+extern unsigned
+StackUses(JSScript *script, jsbytecode *pc);
+
+extern unsigned
+StackDefs(JSScript *script, jsbytecode *pc);
+
+}
+
+
+
+
+extern JSBool
+js_DecompileScript(JSPrinter *jp, JSScript *script);
+
+extern JSBool
+js_DecompileFunctionBody(JSPrinter *jp);
+
+extern JSBool
+js_DecompileFunction(JSPrinter *jp);
+# 317 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsopcode.h"
+typedef JSBool (* JSDecompilerPtr)(JSPrinter *);
+
+extern JSString *
+js_DecompileToString(JSContext *cx, const char *name, JSFunction *fun,
+                     unsigned indent, JSBool pretty, JSBool grouped, JSBool strict,
+                     JSDecompilerPtr decompiler);
+# 336 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsopcode.h"
+extern char *
+js_DecompileValueGenerator(JSContext *cx, int spindex, jsval v,
+                           JSString *fallback);
+
+
+
+
+
+extern unsigned
+js_ReconstructStackDepth(JSContext *cx, JSScript *script, jsbytecode *pc);
+
+
+
+
+
+}
+
+#define JSDVG_IGNORE_STACK 0
+#define JSDVG_SEARCH_STACK 1
+
+
+
+
+extern size_t
+js_GetVariableBytecodeLength(jsbytecode *pc);
+
+namespace js {
+
+static inline char *
+DecompileValueGenerator(JSContext *cx, int spindex, const Value &v,
+                        JSString *fallback)
+{
+    return js_DecompileValueGenerator(cx, spindex, v, fallback);
+}
+
+
+
+
+class Sprinter
+{
+  public:
+    struct InvariantChecker
+    {
+        const Sprinter *parent;
+
+        explicit InvariantChecker(const Sprinter *p) : parent(p) {
+            parent->checkInvariants();
+        }
+
+        ~InvariantChecker() {
+            parent->checkInvariants();
+        }
+    };
+
+    JSContext *context;
+
+  private:
+    static const size_t DefaultSize;
+
+
+
+    char *base;
+    size_t size;
+    ptrdiff_t offset;
+
+    bool realloc_(size_t newSize);
+
+  public:
+    explicit Sprinter(JSContext *cx);
+    ~Sprinter();
+
+
+    bool init();
+
+    void checkInvariants() const;
+
+    const char *string() const;
+    const char *stringEnd() const;
+
+    char *stringAt(ptrdiff_t off) const;
+
+    char &operator[](size_t off);
+
+    bool empty() const;
+
+
+
+
+
+
+    char *reserve(size_t len);
+
+    char *reserveAndClear(size_t len);
+
+
+
+
+
+    ptrdiff_t put(const char *s, size_t len);
+    ptrdiff_t put(const char *s);
+    ptrdiff_t putString(JSString *str);
+
+
+    int printf(const char *fmt, ...);
+
+
+    void setOffset(const char *end);
+    void setOffset(ptrdiff_t off);
+
+
+    ptrdiff_t getOffset() const;
+    ptrdiff_t getOffsetOf(const char *string) const;
+};
+
+extern ptrdiff_t
+Sprint(Sprinter *sp, const char *format, ...);
+
+extern bool
+CallResultEscapes(jsbytecode *pc);
+
+static inline unsigned
+GetDecomposeLength(jsbytecode *pc, size_t len)
+{
+
+
+
+
+    do { } while(0);
+    return (unsigned) pc[len - 1];
+}
+
+static inline unsigned
+GetBytecodeLength(jsbytecode *pc)
+{
+    JSOp op = (JSOp)*pc;
+    do { } while(0);
+
+    if (js_CodeSpec[op].length != -1)
+        return js_CodeSpec[op].length;
+    return js_GetVariableBytecodeLength(pc);
+}
+
+extern bool
+IsValidBytecodeOffset(JSContext *cx, JSScript *script, size_t offset);
+
+inline bool
+FlowsIntoNext(JSOp op)
+{
+
+    return op != JSOP_STOP && op != JSOP_RETURN && op != JSOP_RETRVAL && op != JSOP_THROW &&
+           op != JSOP_GOTO && op != JSOP_RETSUB;
+}
+
+
+
+
+
+
+class PCCounts
+{
+    friend struct ::JSScript;
+    double *counts;
+
+
+
+
+ public:
+
+    enum BaseCounts {
+        BASE_INTERP = 0,
+        BASE_METHODJIT,
+
+        BASE_METHODJIT_STUBS,
+        BASE_METHODJIT_CODE,
+        BASE_METHODJIT_PICS,
+
+        BASE_LIMIT
+    };
+
+    enum AccessCounts {
+        ACCESS_MONOMORPHIC = BASE_LIMIT,
+        ACCESS_DIMORPHIC,
+        ACCESS_POLYMORPHIC,
+
+        ACCESS_BARRIER,
+        ACCESS_NOBARRIER,
+
+        ACCESS_UNDEFINED,
+        ACCESS_NULL,
+        ACCESS_BOOLEAN,
+        ACCESS_INT32,
+        ACCESS_DOUBLE,
+        ACCESS_STRING,
+        ACCESS_OBJECT,
+
+        ACCESS_LIMIT
+    };
+
+    static bool accessOp(JSOp op) {
+
+
+
+
+        if (op == JSOP_SETELEM || op == JSOP_SETPROP)
+            return true;
+        int format = js_CodeSpec[op].format;
+        return !!(format & ((1U<<5) | (1U<<25) | (3U<<5) | (2U<<5)))
+            && !(format & ((1U<<8) | (3U<<10)));
+    }
+
+    enum ElementCounts {
+        ELEM_ID_INT = ACCESS_LIMIT,
+        ELEM_ID_DOUBLE,
+        ELEM_ID_OTHER,
+        ELEM_ID_UNKNOWN,
+
+        ELEM_OBJECT_TYPED,
+        ELEM_OBJECT_PACKED,
+        ELEM_OBJECT_DENSE,
+        ELEM_OBJECT_OTHER,
+
+        ELEM_LIMIT
+    };
+
+    static bool elementOp(JSOp op) {
+        return accessOp(op) && (((js_CodeSpec[op].format) & (7U<<5)) == (3U<<5));
+    }
+
+    enum PropertyCounts {
+        PROP_STATIC = ACCESS_LIMIT,
+        PROP_DEFINITE,
+        PROP_OTHER,
+
+        PROP_LIMIT
+    };
+
+    static bool propertyOp(JSOp op) {
+        return accessOp(op) && (((js_CodeSpec[op].format) & (7U<<5)) == (2U<<5));
+    }
+
+    enum ArithCounts {
+        ARITH_INT = BASE_LIMIT,
+        ARITH_DOUBLE,
+        ARITH_OTHER,
+        ARITH_UNKNOWN,
+
+        ARITH_LIMIT
+    };
+
+    static bool arithOp(JSOp op) {
+        return !!(js_CodeSpec[op].format & ((3U<<10) | (1U<<28)));
+    }
+
+    static size_t numCounts(JSOp op)
+    {
+        if (accessOp(op)) {
+            if (elementOp(op))
+                return ELEM_LIMIT;
+            if (propertyOp(op))
+                return PROP_LIMIT;
+            return ACCESS_LIMIT;
+        }
+        if (arithOp(op))
+            return ARITH_LIMIT;
+        return BASE_LIMIT;
+    }
+
+    static const char *countName(JSOp op, size_t which);
+
+    double *rawCounts() { return counts; }
+
+    double& get(size_t which) {
+        do { } while(0);
+        return counts[which];
+    }
+
+
+    operator void*() const {
+        return counts;
+    }
+};
+
+}
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscope.h" 1
+# 20 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h" 2
+
+
+
+
+
+
+
+typedef enum JSTryNoteKind {
+    JSTRY_CATCH,
+    JSTRY_FINALLY,
+    JSTRY_ITER
+} JSTryNoteKind;
+
+
+
+
+struct JSTryNote {
+    uint8_t kind;
+    uint8_t padding;
+    uint16_t stackDepth;
+    uint32_t start;
+
+    uint32_t length;
+};
+
+namespace js {
+
+struct ConstArray {
+    js::HeapValue *vector;
+    uint32_t length;
+};
+
+struct ObjectArray {
+    js::HeapPtrObject *vector;
+    uint32_t length;
+};
+
+struct TryNoteArray {
+    JSTryNote *vector;
+    uint32_t length;
+};
+
+struct ClosedSlotArray {
+    uint32_t *vector;
+    uint32_t length;
+};
+
+struct Shape;
+
+enum BindingKind { NONE, ARGUMENT, VARIABLE, CONSTANT };
+
+struct BindingName {
+    JSAtom *maybeAtom;
+    BindingKind kind;
+};
+
+typedef Vector<BindingName, 32> BindingNames;
+
+
+
+
+
+
+
+class Bindings
+{
+    HeapPtr<Shape> lastBinding;
+    uint16_t nargs;
+    uint16_t nvars;
+    bool hasDup_:1;
+
+    inline Shape *initialShape(JSContext *cx) const;
+  public:
+    inline Bindings(JSContext *cx);
+
+
+
+
+
+
+    inline void transfer(JSContext *cx, Bindings *bindings);
+
+
+
+
+
+
+    inline void clone(JSContext *cx, Bindings *bindings);
+
+    uint16_t numArgs() const { return nargs; }
+    uint16_t numVars() const { return nvars; }
+    unsigned count() const { return nargs + nvars; }
+
+
+
+
+
+    bool bindingIsArg(uint16_t i) const { return i < nargs; }
+    bool bindingIsLocal(uint16_t i) const { return i >= nargs; }
+    uint16_t argToBinding(uint16_t i) { do { } while(0); return i; }
+    uint16_t localToBinding(uint16_t i) { return i + nargs; }
+    uint16_t bindingToArg(uint16_t i) { do { } while(0); return i; }
+    uint16_t bindingToLocal(uint16_t i) { do { } while(0); return i - nargs; }
+
+
+    inline bool ensureShape(JSContext *cx);
+
+
+    inline Shape *lastShape() const;
+
+
+
+
+
+    Shape *callObjectShape(JSContext *cx) const;
+
+
+    inline bool extensibleParents();
+    bool setExtensibleParents(JSContext *cx);
+
+    bool setParent(JSContext *cx, JSObject *obj);
+
+    enum {
+
+        BINDING_COUNT_LIMIT = 0xFFFF
+    };
+# 162 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+    bool add(JSContext *cx, HandleAtom name, BindingKind kind);
+
+
+    bool addVariable(JSContext *cx, HandleAtom name) {
+        return add(cx, name, VARIABLE);
+    }
+    bool addConstant(JSContext *cx, HandleAtom name) {
+        return add(cx, name, CONSTANT);
+    }
+    bool addArgument(JSContext *cx, HandleAtom name, uint16_t *slotp) {
+        do { } while(0);
+        *slotp = nargs;
+        return add(cx, name, ARGUMENT);
+    }
+    bool addDestructuring(JSContext *cx, uint16_t *slotp) {
+        *slotp = nargs;
+        return add(cx, RootedAtom(cx), ARGUMENT);
+    }
+
+    void noteDup() { hasDup_ = true; }
+    bool hasDup() const { return hasDup_; }
+
+
+
+
+
+
+
+    BindingKind lookup(JSContext *cx, JSAtom *name, unsigned *indexp) const;
+
+
+    bool hasBinding(JSContext *cx, JSAtom *name) const {
+        return lookup(cx, name, __null) != NONE;
+    }
+# 206 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+    bool getLocalNameArray(JSContext *cx, BindingNames *namesp);
+
+
+
+
+
+
+    void makeImmutable();
+# 224 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+    const js::Shape *lastArgument() const;
+    const js::Shape *lastVariable() const;
+
+    void trace(JSTracer *trc);
+
+    class AutoRooter : private AutoGCRooter
+    {
+      public:
+        explicit AutoRooter(JSContext *cx, Bindings *bindings_
+                            )
+          : AutoGCRooter(cx, BINDINGS), bindings(bindings_), skip(cx, bindings_)
+        {
+            do { } while (0);
+        }
+
+        friend void AutoGCRooter::trace(JSTracer *trc);
+        void trace(JSTracer *trc);
+
+      private:
+        Bindings *bindings;
+        SkipRoot skip;
+       
+    };
+};
+
+}
+
+#define JS_OBJECT_ARRAY_SIZE(length) (offsetof(ObjectArray, vector) + sizeof(JSObject *) * (length))
+
+
+
+namespace JSC {
+    class ExecutablePool;
+}
+
+namespace js {
+namespace mjit {
+    struct JITScript;
+    class CallCompiler;
+}
+}
+
+
+
+namespace js {
+
+namespace analyze { class ScriptAnalysis; }
+
+class ScriptCounts
+{
+    friend struct ::JSScript;
+    friend struct ScriptAndCounts;
+
+
+
+
+
+    PCCounts *pcCountsVector;
+
+ public:
+    ScriptCounts() : pcCountsVector(__null) { }
+
+    inline void destroy(FreeOp *fop);
+
+    void set(js::ScriptCounts counts) {
+        pcCountsVector = counts.pcCountsVector;
+    }
+};
+
+typedef HashMap<JSScript *,
+                ScriptCounts,
+                DefaultHasher<JSScript *>,
+                SystemAllocPolicy> ScriptCountsMap;
+
+typedef HashMap<JSScript *,
+                jschar *,
+                DefaultHasher<JSScript *>,
+                SystemAllocPolicy> SourceMapMap;
+
+class DebugScript
+{
+    friend struct ::JSScript;
+# 314 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+    uint32_t stepMode;
+
+
+    uint32_t numSites;
+
+
+
+
+
+    BreakpointSite *breakpoints[1];
+};
+
+typedef HashMap<JSScript *,
+                DebugScript *,
+                DefaultHasher<JSScript *>,
+                SystemAllocPolicy> DebugScriptMap;
+
+}
+
+struct JSScript : public js::gc::Cell
+{
+  private:
+    static const uint32_t stepFlagMask = 0x80000000U;
+    static const uint32_t stepCountMask = 0x7fffffffU;
+
+  public:
+
+
+
+
+
+    class JITScriptHandle
+    {
+
+
+        friend class js::mjit::CallCompiler;
+# 358 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+        static const js::mjit::JITScript *UNJITTABLE;
+        js::mjit::JITScript *value;
+
+      public:
+        JITScriptHandle() { value = __null; }
+
+        bool isEmpty() { return value == __null; }
+        bool isUnjittable() { return value == UNJITTABLE; }
+        bool isValid() { return value > UNJITTABLE; }
+
+        js::mjit::JITScript *getValid() {
+            do { } while(0);
+            return value;
+        }
+
+        void setEmpty() { value = __null; }
+        void setUnjittable() { value = const_cast<js::mjit::JITScript *>(UNJITTABLE); }
+        void setValid(js::mjit::JITScript *jit) {
+            value = jit;
+            do { } while(0);
+        }
+
+        static void staticAsserts();
+    };
+
+
+    struct JITScriptSet
+    {
+        JITScriptHandle jitHandleNormal;
+        JITScriptHandle jitHandleNormalBarriered;
+        JITScriptHandle jitHandleCtor;
+        JITScriptHandle jitHandleCtorBarriered;
+
+        static size_t jitHandleOffset(bool constructing, bool barriers) {
+            return constructing
+                ? (barriers
+                   ? __builtin_offsetof (JITScriptSet, jitHandleCtorBarriered)
+                   : __builtin_offsetof (JITScriptSet, jitHandleCtor))
+                : (barriers
+                   ? __builtin_offsetof (JITScriptSet, jitHandleNormalBarriered)
+                   : __builtin_offsetof (JITScriptSet, jitHandleNormal));
+        }
+    };
+# 411 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+  public:
+    js::Bindings bindings;
+
+
+
+
+  public:
+    jsbytecode *code;
+    uint8_t *data;
+
+
+    const char *filename;
+    js::HeapPtrAtom *atoms;
+
+    JSPrincipals *principals;
+    JSPrincipals *originPrincipals;
+# 439 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+    js::HeapPtr<js::GlobalObject, JSScript*> globalObject;
+
+
+    js::types::TypeScript *types;
+
+  private:
+
+    JITScriptSet *jitInfo;
+
+
+    js::HeapPtrFunction function_;
+
+
+
+  public:
+    uint32_t length;
+
+    uint32_t lineno;
+
+    uint32_t mainOffset;
+
+
+    uint32_t natoms;
+
+  private:
+    uint32_t useCount;
+
+
+
+
+    uint32_t pad32;
+# 482 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+  private:
+    uint16_t version;
+
+  public:
+    uint16_t nfixed;
+
+
+    uint16_t nTypeSets;
+
+
+    uint16_t nslots;
+    uint16_t staticLevel;
+
+  private:
+    uint16_t argsSlot_;
+
+
+
+  public:
+
+    enum ArrayKind {
+        CONSTS,
+        OBJECTS,
+        REGEXPS,
+        TRYNOTES,
+        CLOSED_ARGS,
+        CLOSED_VARS,
+        LIMIT
+    };
+
+    typedef uint8_t ArrayBitsT;
+
+  private:
+
+
+
+    ArrayBitsT hasArrayBits;
+
+
+
+  public:
+    bool noScriptRval:1;
+
+    bool savedCallerFun:1;
+    bool strictModeCode:1;
+    bool compileAndGo:1;
+    bool bindingsAccessedDynamically:1;
+    bool warnedAboutTwoArgumentEval:1;
+
+
+    bool warnedAboutUndefinedProp:1;
+
+
+    bool hasSingletons:1;
+    bool isOuterFunction:1;
+    bool isInnerFunction:1;
+
+    bool isActiveEval:1;
+    bool isCachedEval:1;
+    bool uninlineable:1;
+    bool reentrantOuterFunction:1;
+    bool typesPurged:1;
+
+    bool debugMode:1;
+    bool failedBoundsCheck:1;
+
+    bool callDestroyHook:1;
+    bool isGenerator:1;
+    bool hasScriptCounts:1;
+
+    bool hasSourceMap:1;
+
+    bool hasDebugScript:1;
+
+
+  private:
+
+    bool argsHasLocalBinding_:1;
+    bool needsArgsAnalysis_:1;
+    bool needsArgsObj_:1;
+# 578 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+  public:
+    static JSScript *NewScript(JSContext *cx, uint32_t length, uint32_t nsrcnotes, uint32_t natoms,
+                               uint32_t nobjects, uint32_t nregexps,
+                               uint32_t ntrynotes, uint32_t nconsts,
+                               uint16_t nClosedArgs, uint16_t nClosedVars, uint32_t nTypeSets,
+                               JSVersion version);
+    static JSScript *NewScriptFromEmitter(JSContext *cx, js::BytecodeEmitter *bce);
+
+    void setVersion(JSVersion v) { version = v; }
+
+
+    bool argumentsHasLocalBinding() const { return argsHasLocalBinding_; }
+    jsbytecode *argumentsBytecode() const { do { } while(0); return code; }
+    unsigned argumentsLocalSlot() const { do { } while(0); return argsSlot_; }
+    void setArgumentsHasLocalBinding(uint16_t slot);
+# 604 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+    bool analyzedArgsUsage() const { return !needsArgsAnalysis_; }
+    bool needsArgsObj() const { do { } while(0); return needsArgsObj_; }
+    void setNeedsArgsObj(bool needsArgsObj);
+    static bool applySpeculationFailed(JSContext *cx, JSScript *script);
+# 618 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+    bool argsObjAliasesFormals() const {
+        return needsArgsObj() && !strictModeCode;
+    }
+
+
+    JSScript *&evalHashLink() { return *globalObject.unsafeGetUnioned(); }
+
+
+
+
+
+    JSFunction *function() const { return function_; }
+    void setFunction(JSFunction *fun);
+
+
+
+
+    unsigned id() { return 0; }
+
+
+
+    inline bool ensureHasTypes(JSContext *cx);
+
+
+
+
+
+
+
+    inline bool ensureRanAnalysis(JSContext *cx, JSObject *scope);
+
+
+    inline bool ensureRanInference(JSContext *cx);
+
+    inline bool hasAnalysis();
+    inline void clearAnalysis();
+    inline js::analyze::ScriptAnalysis *analysis();
+
+
+
+
+
+    bool typeSetFunction(JSContext *cx, JSFunction *fun, bool singleton = false);
+
+    inline bool hasGlobal() const;
+    inline bool hasClearedGlobal() const;
+
+    inline js::GlobalObject *global() const;
+    inline js::types::TypeScriptNesting *nesting() const;
+
+    inline void clearNesting();
+
+
+    js::GlobalObject *getGlobalObjectOrNull() const {
+        return (isCachedEval || isActiveEval) ? __null : globalObject.get();
+    }
+
+  private:
+    bool makeTypes(JSContext *cx);
+    bool makeAnalysis(JSContext *cx);
+
+
+  private:
+
+
+    friend class js::mjit::CallCompiler;
+
+  public:
+    bool hasJITInfo() {
+        return jitInfo != __null;
+    }
+
+    static size_t offsetOfJITInfo() { return __builtin_offsetof (JSScript, jitInfo); }
+
+    inline bool ensureHasJITInfo(JSContext *cx);
+    inline void destroyJITInfo(js::FreeOp *fop);
+
+    JITScriptHandle *jitHandle(bool constructing, bool barriers) {
+        do { } while(0);
+        return constructing
+               ? (barriers ? &jitInfo->jitHandleCtorBarriered : &jitInfo->jitHandleCtor)
+               : (barriers ? &jitInfo->jitHandleNormalBarriered : &jitInfo->jitHandleNormal);
+    }
+
+    js::mjit::JITScript *getJIT(bool constructing, bool barriers) {
+        if (!jitInfo)
+            return __null;
+        JITScriptHandle *jith = jitHandle(constructing, barriers);
+        return jith->isValid() ? jith->getValid() : __null;
+    }
+
+    static void ReleaseCode(js::FreeOp *fop, JITScriptHandle *jith);
+
+
+    inline void **nativeMap(bool constructing);
+    inline void *nativeCodeForPC(bool constructing, jsbytecode *pc);
+
+    uint32_t getUseCount() const { return useCount; }
+    uint32_t incUseCount() { return ++useCount; }
+    uint32_t *addressOfUseCount() { return &useCount; }
+    void resetUseCount() { useCount = 0; }
+
+
+
+
+
+
+    size_t sizeOfJitScripts(JSMallocSizeOfFun mallocSizeOf);
+
+
+  public:
+    bool initScriptCounts(JSContext *cx);
+    js::PCCounts getPCCounts(jsbytecode *pc);
+    js::ScriptCounts releaseScriptCounts();
+    void destroyScriptCounts(js::FreeOp *fop);
+
+    bool setSourceMap(JSContext *cx, jschar *sourceMap);
+    jschar *getSourceMap();
+    jschar *releaseSourceMap();
+    void destroySourceMap(js::FreeOp *fop);
+
+    jsbytecode *main() {
+        return code + mainOffset;
+    }
+
+
+
+
+
+
+    size_t computedSizeOfData();
+    size_t sizeOfData(JSMallocSizeOfFun mallocSizeOf);
+
+    uint32_t numNotes();
+
+
+    jssrcnote *notes() { return (jssrcnote *)(code + length); }
+
+    bool hasArray(ArrayKind kind) { return (hasArrayBits & (1 << kind)); }
+    void setHasArray(ArrayKind kind) { hasArrayBits |= (1 << kind); }
+    void cloneHasArray(JSScript *script) { hasArrayBits = script->hasArrayBits; }
+
+    bool hasConsts() { return hasArray(CONSTS); }
+    bool hasObjects() { return hasArray(OBJECTS); }
+    bool hasRegexps() { return hasArray(REGEXPS); }
+    bool hasTrynotes() { return hasArray(TRYNOTES); }
+    bool hasClosedArgs() { return hasArray(CLOSED_ARGS); }
+    bool hasClosedVars() { return hasArray(CLOSED_VARS); }
+
+#define OFF(fooOff,hasFoo,t) (fooOff() + (hasFoo() ? sizeof(t) : 0))
+
+    size_t constsOffset() { return 0; }
+    size_t objectsOffset() { return (constsOffset() + (hasConsts() ? sizeof(js::ConstArray) : 0)); }
+    size_t regexpsOffset() { return (objectsOffset() + (hasObjects() ? sizeof(js::ObjectArray) : 0)); }
+    size_t trynotesOffset() { return (regexpsOffset() + (hasRegexps() ? sizeof(js::ObjectArray) : 0)); }
+    size_t closedArgsOffset() { return (trynotesOffset() + (hasTrynotes() ? sizeof(js::TryNoteArray) : 0)); }
+    size_t closedVarsOffset() { return (closedArgsOffset() + (hasClosedArgs() ? sizeof(js::ClosedSlotArray) : 0)); }
+
+    js::ConstArray *consts() {
+        do { } while(0);
+        return reinterpret_cast<js::ConstArray *>(data + constsOffset());
+    }
+
+    js::ObjectArray *objects() {
+        do { } while(0);
+        return reinterpret_cast<js::ObjectArray *>(data + objectsOffset());
+    }
+
+    js::ObjectArray *regexps() {
+        do { } while(0);
+        return reinterpret_cast<js::ObjectArray *>(data + regexpsOffset());
+    }
+
+    js::TryNoteArray *trynotes() {
+        do { } while(0);
+        return reinterpret_cast<js::TryNoteArray *>(data + trynotesOffset());
+    }
+
+    js::ClosedSlotArray *closedArgs() {
+        do { } while(0);
+        return reinterpret_cast<js::ClosedSlotArray *>(data + closedArgsOffset());
+    }
+
+    js::ClosedSlotArray *closedVars() {
+        do { } while(0);
+        return reinterpret_cast<js::ClosedSlotArray *>(data + closedVarsOffset());
+    }
+
+    uint32_t numClosedArgs() {
+        return hasClosedArgs() ? closedArgs()->length : 0;
+    }
+
+    uint32_t numClosedVars() {
+        return hasClosedVars() ? closedVars()->length : 0;
+    }
+
+    js::HeapPtrAtom &getAtom(size_t index) const {
+        do { } while(0);
+        return atoms[index];
+    }
+
+    js::PropertyName *getName(size_t index) {
+        return getAtom(index)->asPropertyName();
+    }
+
+    JSObject *getObject(size_t index) {
+        js::ObjectArray *arr = objects();
+        do { } while(0);
+        return arr->vector[index];
+    }
+
+    JSVersion getVersion() const {
+        return JSVersion(version);
+    }
+
+    inline JSFunction *getFunction(size_t index);
+    inline JSFunction *getCallerFunction();
+
+    inline JSObject *getRegExp(size_t index);
+
+    const js::Value &getConst(size_t index) {
+        js::ConstArray *arr = consts();
+        do { } while(0);
+        return arr->vector[index];
+    }
+
+
+
+
+
+
+    inline bool isEmpty() const;
+
+    uint32_t getClosedArg(uint32_t index) {
+        js::ClosedSlotArray *arr = closedArgs();
+        do { } while(0);
+        return arr->vector[index];
+    }
+
+    uint32_t getClosedVar(uint32_t index) {
+        js::ClosedSlotArray *arr = closedVars();
+        do { } while(0);
+        return arr->vector[index];
+    }
+# 870 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+  private:
+
+
+
+
+    void recompileForStepMode(js::FreeOp *fop);
+
+
+    bool tryNewStepMode(JSContext *cx, uint32_t newValue);
+
+    bool ensureHasDebugScript(JSContext *cx);
+    js::DebugScript *debugScript();
+    js::DebugScript *releaseDebugScript();
+    void destroyDebugScript(js::FreeOp *fop);
+
+  public:
+    bool hasBreakpointsAt(jsbytecode *pc) { return !!getBreakpointSite(pc); }
+    bool hasAnyBreakpointsOrStepMode() { return hasDebugScript; }
+
+    js::BreakpointSite *getBreakpointSite(jsbytecode *pc)
+    {
+        do { } while(0);
+        return hasDebugScript ? debugScript()->breakpoints[pc - code] : __null;
+    }
+
+    js::BreakpointSite *getOrCreateBreakpointSite(JSContext *cx, jsbytecode *pc,
+                                                  js::GlobalObject *scriptGlobal);
+
+    void destroyBreakpointSite(js::FreeOp *fop, jsbytecode *pc);
+
+    void clearBreakpointsIn(js::FreeOp *fop, js::Debugger *dbg, JSObject *handler);
+    void clearTraps(js::FreeOp *fop);
+
+    void markTrapClosures(JSTracer *trc);
+
+
+
+
+
+
+
+    bool setStepModeFlag(JSContext *cx, bool step);
+
+
+
+
+
+
+
+    bool changeStepModeCount(JSContext *cx, int delta);
+
+    bool stepModeEnabled() { return hasDebugScript && !!debugScript()->stepMode; }
+
+
+
+
+
+    void finalize(js::FreeOp *fop);
+
+    static inline void writeBarrierPre(JSScript *script);
+    static inline void writeBarrierPost(JSScript *script, void *addr);
+
+    static inline js::ThingRootKind rootKind() { return js::THING_ROOT_SCRIPT; }
+
+    static JSPrincipals *normalizeOriginPrincipals(JSPrincipals *principals,
+                                                   JSPrincipals *originPrincipals) {
+        return originPrincipals ? originPrincipals : principals;
+    }
+
+    void markChildren(JSTracer *trc);
+};
+
+typedef int moz_static_assert87[(sizeof(JSScript::ArrayBitsT) * 8 >= JSScript::LIMIT) ? 1 : -1];
+
+
+typedef int moz_static_assert88[(sizeof(JSScript) % js::gc::Cell::CellSize == 0) ? 1 : -1];
+
+static inline unsigned
+StackDepth(JSScript *script)
+{
+    return script->nslots - script->nfixed;
+}
+
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+js_CallNewScriptHook(JSContext *cx, JSScript *script, JSFunction *fun);
+
+namespace js {
+
+extern void
+CallDestroyScriptHook(FreeOp *fop, JSScript *script);
+
+extern const char *
+SaveScriptFilename(JSContext *cx, const char *filename);
+
+struct ScriptFilenameEntry
+{
+    bool marked;
+    char filename[1];
+
+    static ScriptFilenameEntry *fromFilename(const char *filename) {
+        return (ScriptFilenameEntry *)(filename - __builtin_offsetof (ScriptFilenameEntry, filename));
+    }
+};
+
+struct ScriptFilenameHasher
+{
+    typedef const char *Lookup;
+    static HashNumber hash(const char *l) { return JS_HashString(l); }
+    static bool match(const ScriptFilenameEntry *e, const char *l) {
+        return strcmp(e->filename, l) == 0;
+    }
+};
+
+typedef HashSet<ScriptFilenameEntry *,
+                ScriptFilenameHasher,
+                SystemAllocPolicy> ScriptFilenameTable;
+
+inline void
+MarkScriptFilename(JSRuntime *rt, const char *filename);
+
+extern void
+SweepScriptFilenames(JSRuntime *rt);
+
+extern void
+FreeScriptFilenames(JSRuntime *rt);
+
+struct ScriptAndCounts
+{
+    JSScript *script;
+    ScriptCounts scriptCounts;
+
+    PCCounts &getPCCounts(jsbytecode *pc) const {
+        do { } while(0);
+        return scriptCounts.pcCountsVector[pc - script->code];
+    }
+};
+
+}
+
+
+
+
+
+
+#define js_GetSrcNote(script,pc) js_GetSrcNoteCached(cx, script, pc)
+
+extern jssrcnote *
+js_GetSrcNoteCached(JSContext *cx, JSScript *script, jsbytecode *pc);
+
+extern jsbytecode *
+js_LineNumberToPC(JSScript *script, unsigned lineno);
+
+extern __attribute__((visibility("default"))) unsigned
+js_GetScriptLineExtent(JSScript *script);
+
+namespace js {
+
+extern unsigned
+PCToLineNumber(JSScript *script, jsbytecode *pc);
+
+extern unsigned
+PCToLineNumber(unsigned startLine, jssrcnote *notes, jsbytecode *code, jsbytecode *pc);
+
+extern unsigned
+CurrentLine(JSContext *cx);
+# 1051 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscript.h"
+enum LineOption {
+    CALLED_FROM_JSOP_EVAL,
+    NOT_CALLED_FROM_JSOP_EVAL
+};
+
+inline void
+CurrentScriptFileLineOrigin(JSContext *cx, unsigned *linenop, LineOption = NOT_CALLED_FROM_JSOP_EVAL);
+
+extern JSScript *
+CloneScript(JSContext *cx, JSScript *script);
+
+
+
+
+
+
+template<XDRMode mode>
+bool
+XDRScript(XDRState<mode> *xdr, JSScript **scriptp, JSScript *parentScript);
+
+}
+# 17 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfun.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsstr.h" 1
+# 18 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfun.h" 2
+# 37 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfun.h"
+#define JSFUN_PROTOTYPE 0x0800
+
+
+#define JSFUN_EXPR_CLOSURE 0x1000
+#define JSFUN_EXTENDED 0x2000
+#define JSFUN_INTERPRETED 0x4000
+#define JSFUN_NULL_CLOSURE 0x8000
+#define JSFUN_KINDMASK 0xc000
+
+
+namespace js { class FunctionExtended; }
+
+struct JSFunction : public JSObject
+{
+    uint16_t nargs;
+
+    uint16_t flags;
+    union U {
+        js::Native native;
+        struct Scripted {
+            JSScript *script_;
+
+            JSObject *env_;
+
+        } i;
+        void *nativeOrScript;
+    } u;
+    js::HeapPtrAtom atom;
+
+    bool hasDefaults() const { return flags & 0x0400; }
+    bool hasRest() const { return flags & 0x0100; }
+    bool isInterpreted() const { return kind() >= 0x4000; }
+    bool isNative() const { return !isInterpreted(); }
+    bool isNativeConstructor() const { return flags & 0x0200; }
+    bool isHeavyweight() const { return ((flags) & 0x80); }
+    bool isNullClosure() const { return kind() == 0x8000; }
+    bool isFunctionPrototype() const { return flags & 0x0800; }
+    bool isInterpretedConstructor() const { return isInterpreted() && !isFunctionPrototype(); }
+
+    uint16_t kind() const { return flags & 0xc000; }
+    void setKind(uint16_t k) {
+        do { } while(0);
+        flags = (flags & ~0xc000) | k;
+    }
+
+
+    inline bool inStrictMode() const;
+
+    void setArgCount(uint16_t nargs) {
+        do { } while(0);
+        this->nargs = nargs;
+    }
+
+    void setHasRest() {
+        do { } while(0);
+        this->flags |= 0x0100;
+    }
+
+    void setHasDefaults() {
+        do { } while(0);
+        this->flags |= 0x0400;
+    }
+
+
+    enum { MAX_ARGS_AND_VARS = 2 * ((1U << 16) - 1) };
+
+
+
+
+
+    inline JSObject *environment() const;
+    inline void setEnvironment(JSObject *obj);
+    inline void initEnvironment(JSObject *obj);
+
+    static inline size_t offsetOfEnvironment() { return __builtin_offsetof (JSFunction, u.i.env_); }
+
+    JSScript *script() const {
+        do { } while(0);
+        return *(js::HeapPtrScript *)&u.i.script_;
+    }
+
+    js::HeapPtrScript &mutableScript() {
+        do { } while(0);
+        return *(js::HeapPtrScript *)&u.i.script_;
+    }
+
+    inline void setScript(JSScript *script_);
+    inline void initScript(JSScript *script_);
+
+    JSScript *maybeScript() const {
+        return isInterpreted() ? script() : __null;
+    }
+
+    JSNative native() const {
+        do { } while(0);
+        return u.native;
+    }
+
+    JSNative maybeNative() const {
+        return isInterpreted() ? __null : native();
+    }
+
+    static unsigned offsetOfNativeOrScript() {
+        typedef int moz_static_assert89[(__builtin_offsetof (U, native) == __builtin_offsetof (U, i.script_)) ? 1 : -1];
+        typedef int moz_static_assert90[(__builtin_offsetof (U, native) == __builtin_offsetof (U, nativeOrScript)) ? 1 : -1];
+        return __builtin_offsetof (JSFunction, u.nativeOrScript);
+    }
+
+
+
+    static const js::gc::AllocKind FinalizeKind = js::gc::FINALIZE_OBJECT2_BACKGROUND;
+    static const js::gc::AllocKind ExtendedFinalizeKind = js::gc::FINALIZE_OBJECT4_BACKGROUND;
+# 163 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfun.h"
+    inline void trace(JSTracer *trc);
+
+
+
+    inline bool initBoundFunction(JSContext *cx, js::HandleValue thisArg,
+                                  const js::Value *args, unsigned argslen);
+
+    inline JSObject *getBoundFunctionTarget() const;
+    inline const js::Value &getBoundFunctionThis() const;
+    inline const js::Value &getBoundFunctionArgument(unsigned which) const;
+    inline size_t getBoundFunctionArgumentCount() const;
+
+  private:
+    inline js::FunctionExtended *toExtended();
+    inline const js::FunctionExtended *toExtended() const;
+
+    inline bool isExtended() const {
+        typedef int moz_static_assert91[(FinalizeKind != ExtendedFinalizeKind) ? 1 : -1];
+        do { } while(0);
+        return !!(flags & 0x2000);
+    }
+
+  public:
+
+    inline void initializeExtended();
+    inline void setExtendedSlot(size_t which, const js::Value &val);
+    inline const js::Value &getExtendedSlot(size_t which) const;
+
+  private:
+
+
+
+
+    inline JSFunction *toFunction() ;
+    inline const JSFunction *toFunction() const ;
+};
+
+inline JSFunction *
+JSObject::toFunction()
+{
+    do { } while(0);
+    return static_cast<JSFunction *>(this);
+}
+
+inline const JSFunction *
+JSObject::toFunction() const
+{
+    do { } while(0);
+    return static_cast<const JSFunction *>(this);
+}
+
+extern JSString *
+fun_toStringHelper(JSContext *cx, JSObject *obj, unsigned indent);
+
+extern JSFunction *
+js_NewFunction(JSContext *cx, JSObject *funobj, JSNative native, unsigned nargs,
+               unsigned flags, js::HandleObject parent, JSAtom *atom,
+               js::gc::AllocKind kind = JSFunction::FinalizeKind);
+
+extern JSFunction *
+js_CloneFunctionObject(JSContext *cx, js::HandleFunction fun,
+                       js::HandleObject parent, js::HandleObject proto,
+                       js::gc::AllocKind kind = JSFunction::FinalizeKind);
+
+extern JSFunction *
+js_DefineFunction(JSContext *cx, js::HandleObject obj, js::HandleId id, JSNative native,
+                  unsigned nargs, unsigned flags,
+                  js::gc::AllocKind kind = JSFunction::FinalizeKind);
+
+
+
+
+#define JSV2F_CONSTRUCT INITIAL_CONSTRUCT
+#define JSV2F_SEARCH_STACK 0x10000
+
+extern JSFunction *
+js_ValueToFunction(JSContext *cx, const js::Value *vp, unsigned flags);
+
+extern JSObject *
+js_ValueToCallableObject(JSContext *cx, js::Value *vp, unsigned flags);
+
+extern void
+js_ReportIsNotFunction(JSContext *cx, const js::Value *vp, unsigned flags);
+
+extern void
+js_PutCallObject(js::StackFrame *fp, js::CallObject &callobj);
+
+namespace js {
+
+
+
+
+
+
+class FunctionExtended : public JSFunction
+{
+    friend struct JSFunction;
+
+
+    HeapValue extendedSlots[2];
+};
+
+}
+
+inline js::FunctionExtended *
+JSFunction::toExtended()
+{
+    do { } while(0);
+    return static_cast<js::FunctionExtended *>(this);
+}
+
+inline const js::FunctionExtended *
+JSFunction::toExtended() const
+{
+    do { } while(0);
+    return static_cast<const js::FunctionExtended *>(this);
+}
+
+extern void
+js_PutArgsObject(js::StackFrame *fp);
+
+inline bool
+js_IsNamedLambda(JSFunction *fun) { return (fun->flags & 0x08) && fun->atom; }
+
+namespace js {
+
+template<XDRMode mode>
+bool
+XDRInterpretedFunction(XDRState<mode> *xdr, JSObject **objp, JSScript *parentScript);
+
+extern JSObject *
+CloneInterpretedFunction(JSContext *cx, JSFunction *fun);
+
+}
+
+extern JSBool
+js_fun_apply(JSContext *cx, unsigned argc, js::Value *vp);
+
+extern JSBool
+js_fun_call(JSContext *cx, unsigned argc, js::Value *vp);
+
+extern JSObject*
+js_fun_bind(JSContext *cx, js::HandleObject target, js::HandleValue thisArg,
+            js::Value *boundArgs, unsigned argslen);
+# 12 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h" 2
+# 1 "./jsautooplen.h" 1
+
+
+
+
+
+#define JSOP_NOP_LENGTH 1
+#define JSOP_UNDEFINED_LENGTH 1
+#define JSOP_POPV_LENGTH 1
+#define JSOP_ENTERWITH_LENGTH 1
+#define JSOP_LEAVEWITH_LENGTH 1
+#define JSOP_RETURN_LENGTH 1
+#define JSOP_GOTO_LENGTH 5
+#define JSOP_IFEQ_LENGTH 5
+#define JSOP_IFNE_LENGTH 5
+#define JSOP_ARGUMENTS_LENGTH 1
+#define JSOP_SWAP_LENGTH 1
+#define JSOP_POPN_LENGTH 3
+#define JSOP_DUP_LENGTH 1
+#define JSOP_DUP2_LENGTH 1
+#define JSOP_SETCONST_LENGTH 5
+#define JSOP_BITOR_LENGTH 1
+#define JSOP_BITXOR_LENGTH 1
+#define JSOP_BITAND_LENGTH 1
+#define JSOP_EQ_LENGTH 1
+#define JSOP_NE_LENGTH 1
+#define JSOP_LT_LENGTH 1
+#define JSOP_LE_LENGTH 1
+#define JSOP_GT_LENGTH 1
+#define JSOP_GE_LENGTH 1
+#define JSOP_LSH_LENGTH 1
+#define JSOP_RSH_LENGTH 1
+#define JSOP_URSH_LENGTH 1
+#define JSOP_ADD_LENGTH 1
+#define JSOP_SUB_LENGTH 1
+#define JSOP_MUL_LENGTH 1
+#define JSOP_DIV_LENGTH 1
+#define JSOP_MOD_LENGTH 1
+#define JSOP_NOT_LENGTH 1
+#define JSOP_BITNOT_LENGTH 1
+#define JSOP_NEG_LENGTH 1
+#define JSOP_POS_LENGTH 1
+#define JSOP_DELNAME_LENGTH 5
+#define JSOP_DELPROP_LENGTH 5
+#define JSOP_DELELEM_LENGTH 1
+#define JSOP_TYPEOF_LENGTH 1
+#define JSOP_VOID_LENGTH 1
+#define JSOP_INCNAME_LENGTH 6
+#define JSOP_INCPROP_LENGTH 6
+#define JSOP_INCELEM_LENGTH 2
+#define JSOP_DECNAME_LENGTH 6
+#define JSOP_DECPROP_LENGTH 6
+#define JSOP_DECELEM_LENGTH 2
+#define JSOP_NAMEINC_LENGTH 6
+#define JSOP_PROPINC_LENGTH 6
+#define JSOP_ELEMINC_LENGTH 2
+#define JSOP_NAMEDEC_LENGTH 6
+#define JSOP_PROPDEC_LENGTH 6
+#define JSOP_ELEMDEC_LENGTH 2
+#define JSOP_GETPROP_LENGTH 5
+#define JSOP_SETPROP_LENGTH 5
+#define JSOP_GETELEM_LENGTH 1
+#define JSOP_SETELEM_LENGTH 1
+#define JSOP_CALLNAME_LENGTH 5
+#define JSOP_CALL_LENGTH 3
+#define JSOP_NAME_LENGTH 5
+#define JSOP_DOUBLE_LENGTH 5
+#define JSOP_STRING_LENGTH 5
+#define JSOP_ZERO_LENGTH 1
+#define JSOP_ONE_LENGTH 1
+#define JSOP_NULL_LENGTH 1
+#define JSOP_THIS_LENGTH 1
+#define JSOP_FALSE_LENGTH 1
+#define JSOP_TRUE_LENGTH 1
+#define JSOP_OR_LENGTH 5
+#define JSOP_AND_LENGTH 5
+#define JSOP_TABLESWITCH_LENGTH -1
+#define JSOP_LOOKUPSWITCH_LENGTH -1
+#define JSOP_STRICTEQ_LENGTH 1
+#define JSOP_STRICTNE_LENGTH 1
+#define JSOP_SETCALL_LENGTH 1
+#define JSOP_ITER_LENGTH 2
+#define JSOP_MOREITER_LENGTH 1
+#define JSOP_ITERNEXT_LENGTH 2
+#define JSOP_ENDITER_LENGTH 1
+#define JSOP_FUNAPPLY_LENGTH 3
+#define JSOP_OBJECT_LENGTH 5
+#define JSOP_POP_LENGTH 1
+#define JSOP_NEW_LENGTH 3
+#define JSOP_UNUSED0_LENGTH 1
+#define JSOP_GETARG_LENGTH 3
+#define JSOP_SETARG_LENGTH 3
+#define JSOP_GETLOCAL_LENGTH 3
+#define JSOP_SETLOCAL_LENGTH 3
+#define JSOP_UINT16_LENGTH 3
+#define JSOP_NEWINIT_LENGTH 5
+#define JSOP_NEWARRAY_LENGTH 4
+#define JSOP_NEWOBJECT_LENGTH 5
+#define JSOP_ENDINIT_LENGTH 1
+#define JSOP_INITPROP_LENGTH 5
+#define JSOP_INITELEM_LENGTH 1
+#define JSOP_UNUSED14_LENGTH 1
+#define JSOP_UNUSED15_LENGTH 1
+#define JSOP_INCARG_LENGTH 3
+#define JSOP_DECARG_LENGTH 3
+#define JSOP_ARGINC_LENGTH 3
+#define JSOP_ARGDEC_LENGTH 3
+#define JSOP_INCLOCAL_LENGTH 3
+#define JSOP_DECLOCAL_LENGTH 3
+#define JSOP_LOCALINC_LENGTH 3
+#define JSOP_LOCALDEC_LENGTH 3
+#define JSOP_LEAVEFORLETIN_LENGTH 1
+#define JSOP_LABEL_LENGTH 5
+#define JSOP_UNUSED3_LENGTH 1
+#define JSOP_FUNCALL_LENGTH 3
+#define JSOP_LOOPHEAD_LENGTH 1
+#define JSOP_BINDNAME_LENGTH 5
+#define JSOP_SETNAME_LENGTH 5
+#define JSOP_THROW_LENGTH 1
+#define JSOP_IN_LENGTH 1
+#define JSOP_INSTANCEOF_LENGTH 1
+#define JSOP_DEBUGGER_LENGTH 1
+#define JSOP_GOSUB_LENGTH 5
+#define JSOP_RETSUB_LENGTH 1
+#define JSOP_EXCEPTION_LENGTH 1
+#define JSOP_LINENO_LENGTH 3
+#define JSOP_CONDSWITCH_LENGTH 1
+#define JSOP_CASE_LENGTH 5
+#define JSOP_DEFAULT_LENGTH 5
+#define JSOP_EVAL_LENGTH 3
+#define JSOP_ENUMELEM_LENGTH 1
+#define JSOP_GETTER_LENGTH 1
+#define JSOP_SETTER_LENGTH 1
+#define JSOP_DEFFUN_LENGTH 5
+#define JSOP_DEFCONST_LENGTH 5
+#define JSOP_DEFVAR_LENGTH 5
+#define JSOP_LAMBDA_LENGTH 5
+#define JSOP_CALLEE_LENGTH 1
+#define JSOP_UNUSED31_LENGTH 1
+#define JSOP_PICK_LENGTH 2
+#define JSOP_TRY_LENGTH 1
+#define JSOP_FINALLY_LENGTH 1
+#define JSOP_GETALIASEDVAR_LENGTH 9
+#define JSOP_CALLALIASEDVAR_LENGTH 9
+#define JSOP_SETALIASEDVAR_LENGTH 9
+#define JSOP_INCALIASEDVAR_LENGTH 10
+#define JSOP_DECALIASEDVAR_LENGTH 10
+#define JSOP_ALIASEDVARINC_LENGTH 10
+#define JSOP_ALIASEDVARDEC_LENGTH 10
+#define JSOP_UNUSED8_LENGTH 1
+#define JSOP_UNUSED9_LENGTH 1
+#define JSOP_UNUSED10_LENGTH 1
+#define JSOP_UNUSED11_LENGTH 1
+#define JSOP_UNUSED12_LENGTH 1
+#define JSOP_UNUSED13_LENGTH 1
+#define JSOP_BACKPATCH_LENGTH 5
+#define JSOP_BACKPATCH_POP_LENGTH 5
+#define JSOP_THROWING_LENGTH 1
+#define JSOP_SETRVAL_LENGTH 1
+#define JSOP_RETRVAL_LENGTH 1
+#define JSOP_GETGNAME_LENGTH 5
+#define JSOP_SETGNAME_LENGTH 5
+#define JSOP_INCGNAME_LENGTH 6
+#define JSOP_DECGNAME_LENGTH 6
+#define JSOP_GNAMEINC_LENGTH 6
+#define JSOP_GNAMEDEC_LENGTH 6
+#define JSOP_REGEXP_LENGTH 5
+#define JSOP_DEFXMLNS_LENGTH 1
+#define JSOP_ANYNAME_LENGTH 1
+#define JSOP_QNAMEPART_LENGTH 5
+#define JSOP_QNAMECONST_LENGTH 5
+#define JSOP_QNAME_LENGTH 1
+#define JSOP_TOATTRNAME_LENGTH 1
+#define JSOP_TOATTRVAL_LENGTH 1
+#define JSOP_ADDATTRNAME_LENGTH 1
+#define JSOP_ADDATTRVAL_LENGTH 1
+#define JSOP_BINDXMLNAME_LENGTH 1
+#define JSOP_SETXMLNAME_LENGTH 1
+#define JSOP_XMLNAME_LENGTH 1
+#define JSOP_DESCENDANTS_LENGTH 1
+#define JSOP_FILTER_LENGTH 5
+#define JSOP_ENDFILTER_LENGTH 5
+#define JSOP_TOXML_LENGTH 1
+#define JSOP_TOXMLLIST_LENGTH 1
+#define JSOP_XMLTAGEXPR_LENGTH 1
+#define JSOP_XMLELTEXPR_LENGTH 1
+#define JSOP_XMLCDATA_LENGTH 5
+#define JSOP_XMLCOMMENT_LENGTH 5
+#define JSOP_XMLPI_LENGTH 5
+#define JSOP_DELDESC_LENGTH 1
+#define JSOP_CALLPROP_LENGTH 5
+#define JSOP_ENTERLET0_LENGTH 5
+#define JSOP_ENTERLET1_LENGTH 5
+#define JSOP_UINT24_LENGTH 4
+#define JSOP_UNUSED18_LENGTH 1
+#define JSOP_UNUSED19_LENGTH 1
+#define JSOP_UNUSED20_LENGTH 1
+#define JSOP_STARTXML_LENGTH 1
+#define JSOP_STARTXMLEXPR_LENGTH 1
+#define JSOP_CALLELEM_LENGTH 1
+#define JSOP_STOP_LENGTH 1
+#define JSOP_GETXPROP_LENGTH 5
+#define JSOP_CALLXMLNAME_LENGTH 1
+#define JSOP_TYPEOFEXPR_LENGTH 1
+#define JSOP_ENTERBLOCK_LENGTH 5
+#define JSOP_LEAVEBLOCK_LENGTH 3
+#define JSOP_UNUSED1_LENGTH 1
+#define JSOP_UNUSED2_LENGTH 1
+#define JSOP_GENERATOR_LENGTH 1
+#define JSOP_YIELD_LENGTH 1
+#define JSOP_ARRAYPUSH_LENGTH 3
+#define JSOP_GETFUNNS_LENGTH 1
+#define JSOP_ENUMCONSTELEM_LENGTH 1
+#define JSOP_LEAVEBLOCKEXPR_LENGTH 3
+#define JSOP_UNUSED21_LENGTH 1
+#define JSOP_UNUSED22_LENGTH 1
+#define JSOP_UNUSED23_LENGTH 1
+#define JSOP_CALLGNAME_LENGTH 5
+#define JSOP_CALLLOCAL_LENGTH 3
+#define JSOP_CALLARG_LENGTH 3
+#define JSOP_BINDGNAME_LENGTH 5
+#define JSOP_INT8_LENGTH 2
+#define JSOP_INT32_LENGTH 5
+#define JSOP_LENGTH_LENGTH 5
+#define JSOP_HOLE_LENGTH 1
+#define JSOP_UNUSED17_LENGTH 1
+#define JSOP_UNUSED24_LENGTH 1
+#define JSOP_UNUSED25_LENGTH 1
+#define JSOP_UNUSED29_LENGTH 1
+#define JSOP_UNUSED30_LENGTH 1
+#define JSOP_REST_LENGTH 1
+#define JSOP_TOID_LENGTH 1
+#define JSOP_IMPLICITTHIS_LENGTH 5
+#define JSOP_LOOPENTRY_LENGTH 1
+#define JSOP_ACTUALSFILLED_LENGTH 3
+# 13 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h" 2
+
+struct JSContext;
+struct JSCompartment;
+
+
+namespace js { namespace mjit { struct CallSite; }}
+typedef js::mjit::CallSite JSInlinedSite;
+
+
+
+
+typedef size_t JSRejoinState;
+
+namespace js {
+
+class StackFrame;
+class FrameRegs;
+class StackSegment;
+class StackSpace;
+class ContextStack;
+
+class InvokeArgsGuard;
+class InvokeFrameGuard;
+class FrameGuard;
+class ExecuteFrameGuard;
+class DummyFrameGuard;
+class GeneratorFrameGuard;
+
+class CallIter;
+class ScriptFrameIter;
+class AllFramesIter;
+
+class ArgumentsObject;
+class StaticBlockObject;
+
+
+namespace mjit {
+    struct JITScript;
+    jsbytecode *NativeToPC(JITScript *jit, void *ncode, CallSite **pinline);
+}
+
+
+namespace detail {
+    struct OOMCheck;
+}
+# 161 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+class CallReceiver
+{
+  protected:
+
+
+
+
+
+    void setUsedRval() const {}
+    void clearUsedRval() const {}
+
+    Value *argv_;
+  public:
+    friend CallReceiver CallReceiverFromVp(Value *);
+    friend CallReceiver CallReceiverFromArgv(Value *);
+    Value *base() const { return argv_ - 2; }
+    JSObject &callee() const { do { } while(0); return argv_[-2].toObject(); }
+    Value &calleev() const { do { } while(0); return argv_[-2]; }
+    Value &thisv() const { return argv_[-1]; }
+
+    Value &rval() const {
+        setUsedRval();
+        return argv_[-2];
+    }
+
+    Value *spAfterCall() const {
+        setUsedRval();
+        return argv_ - 1;
+    }
+
+    void setCallee(Value calleev) {
+        clearUsedRval();
+        this->calleev() = calleev;
+    }
+};
+
+__attribute__((always_inline)) inline CallReceiver
+CallReceiverFromArgv(Value *argv)
+{
+    CallReceiver receiver;
+    receiver.clearUsedRval();
+    receiver.argv_ = argv;
+    return receiver;
+}
+
+__attribute__((always_inline)) inline CallReceiver
+CallReceiverFromVp(Value *vp)
+{
+    return CallReceiverFromArgv(vp + 2);
+}
+
+
+
+class CallArgs : public CallReceiver
+{
+  protected:
+    unsigned argc_;
+  public:
+    friend CallArgs CallArgsFromVp(unsigned, Value *);
+    friend CallArgs CallArgsFromArgv(unsigned, Value *);
+    friend CallArgs CallArgsFromSp(unsigned, Value *);
+    Value &operator[](unsigned i) const { do { } while(0); return argv_[i]; }
+    Value *array() const { return argv_; }
+    unsigned length() const { return argc_; }
+    Value *end() const { return argv_ + argc_; }
+    bool hasDefined(unsigned i) const { return i < argc_ && !argv_[i].isUndefined(); }
+};
+
+__attribute__((always_inline)) inline CallArgs
+CallArgsFromArgv(unsigned argc, Value *argv)
+{
+    CallArgs args;
+    args.clearUsedRval();
+    args.argv_ = argv;
+    args.argc_ = argc;
+    return args;
+}
+
+__attribute__((always_inline)) inline CallArgs
+CallArgsFromVp(unsigned argc, Value *vp)
+{
+    return CallArgsFromArgv(argc, vp + 2);
+}
+
+__attribute__((always_inline)) inline CallArgs
+CallArgsFromSp(unsigned argc, Value *sp)
+{
+    return CallArgsFromArgv(argc, sp - argc);
+}
+# 260 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+class CallArgsList : public CallArgs
+{
+    friend class StackSegment;
+    CallArgsList *prev_;
+    bool active_;
+  public:
+    friend CallArgsList CallArgsListFromVp(unsigned, Value *, CallArgsList *);
+    friend CallArgsList CallArgsListFromArgv(unsigned, Value *, CallArgsList *);
+    CallArgsList *prev() const { return prev_; }
+    bool active() const { return active_; }
+    void setActive() { active_ = true; }
+    void setInactive() { active_ = false; }
+};
+
+__attribute__((always_inline)) inline CallArgsList
+CallArgsListFromArgv(unsigned argc, Value *argv, CallArgsList *prev)
+{
+    CallArgsList args;
+
+
+
+    args.argv_ = argv;
+    args.argc_ = argc;
+    args.prev_ = prev;
+    args.active_ = false;
+    return args;
+}
+
+__attribute__((always_inline)) inline CallArgsList
+CallArgsListFromVp(unsigned argc, Value *vp, CallArgsList *prev)
+{
+    return CallArgsListFromArgv(argc, vp + 2, prev);
+}
+
+
+
+
+enum InitialFrameFlags {
+    INITIAL_NONE = 0,
+    INITIAL_CONSTRUCT = 0x80,
+    INITIAL_LOWERED = 0x200000
+};
+
+enum ExecuteType {
+    EXECUTE_GLOBAL = 0x1,
+    EXECUTE_DIRECT_EVAL = 0x8,
+    EXECUTE_INDIRECT_EVAL = 0x9,
+    EXECUTE_DEBUG = 0x18
+};
+
+
+
+class StackFrame
+{
+  public:
+    enum Flags {
+
+        GLOBAL = 0x1,
+        FUNCTION = 0x2,
+        DUMMY = 0x4,
+
+
+        EVAL = 0x8,
+        DEBUGGER = 0x10,
+        GENERATOR = 0x20,
+        FLOATING_GENERATOR = 0x40,
+        CONSTRUCTING = 0x80,
+
+
+        YIELDING = 0x100,
+        FINISHED_IN_INTERP = 0x200,
+
+
+        OVERFLOW_ARGS = 0x400,
+        UNDERFLOW_ARGS = 0x800,
+
+
+        HAS_CALL_OBJ = 0x1000,
+        HAS_ARGS_OBJ = 0x2000,
+        HAS_HOOK_DATA = 0x4000,
+        HAS_ANNOTATION = 0x8000,
+        HAS_RVAL = 0x10000,
+        HAS_SCOPECHAIN = 0x20000,
+        HAS_PREVPC = 0x40000,
+        HAS_BLOCKCHAIN = 0x80000,
+
+
+        DOWN_FRAMES_EXPANDED = 0x100000,
+        LOWERED_CALL_APPLY = 0x200000
+    };
+
+  private:
+    mutable uint32_t flags_;
+    union {
+        JSScript *script;
+        JSFunction *fun;
+    } exec;
+    union {
+        unsigned nactual;
+        JSScript *evalScript;
+    } u;
+    mutable JSObject *scopeChain_;
+    StackFrame *prev_;
+    void *ncode_;
+
+
+    Value rval_;
+    StaticBlockObject *blockChain_;
+    ArgumentsObject *argsObj_;
+    jsbytecode *prevpc_;
+    JSInlinedSite *prevInline_;
+    void *hookData_;
+    void *annotation_;
+    JSRejoinState rejoin_;
+
+
+    static void staticAsserts() {
+        typedef int moz_static_assert92[(__builtin_offsetof (StackFrame, rval_) % sizeof(Value) == 0) ? 1 : -1];
+        typedef int moz_static_assert93[(sizeof(StackFrame) % sizeof(Value) == 0) ? 1 : -1];
+    }
+
+    inline void initPrev(JSContext *cx);
+    jsbytecode *prevpcSlow(JSInlinedSite **pinlined);
+
+  public:
+# 394 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    void initCallFrame(JSContext *cx, JSFunction &callee,
+                       JSScript *script, uint32_t nactual, StackFrame::Flags flags);
+
+
+    void initFixupFrame(StackFrame *prev, StackFrame::Flags flags, void *ncode, unsigned nactual);
+
+
+    void initExecuteFrame(JSScript *script, StackFrame *prev, FrameRegs *regs,
+                          const Value &thisv, JSObject &scopeChain, ExecuteType type);
+
+
+    enum TriggerPostBarriers {
+        DoPostBarrier = true,
+        NoPostBarrier = false
+    };
+    template <class T, class U, TriggerPostBarriers doPostBarrier>
+    void stealFrameAndSlots(JSContext *cx, StackFrame *fp, T *vp,
+                            StackFrame *otherfp, U *othervp, Value *othersp);
+    void writeBarrierPost();
+
+
+    void initDummyFrame(JSContext *cx, JSObject &chain);
+# 428 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    bool isFunctionFrame() const {
+        return !!(flags_ & FUNCTION);
+    }
+
+    bool isGlobalFrame() const {
+        return !!(flags_ & GLOBAL);
+    }
+
+    bool isDummyFrame() const {
+        return !!(flags_ & DUMMY);
+    }
+
+    bool isScriptFrame() const {
+        bool retval = !!(flags_ & (FUNCTION | GLOBAL));
+        do { } while(0);
+        return retval;
+    }
+# 458 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    bool isEvalFrame() const {
+        do { } while (0);
+        return flags_ & EVAL;
+    }
+
+    bool isEvalInFunction() const {
+        return (flags_ & (EVAL | FUNCTION)) == (EVAL | FUNCTION);
+    }
+
+    bool isNonEvalFunctionFrame() const {
+        return (flags_ & (FUNCTION | EVAL)) == FUNCTION;
+    }
+
+    inline bool isStrictEvalFrame() const {
+        return isEvalFrame() && script()->strictModeCode;
+    }
+
+    bool isNonStrictEvalFrame() const {
+        return isEvalFrame() && !script()->strictModeCode;
+    }
+
+    bool isDirectEvalFrame() const {
+        return isEvalFrame() && script()->staticLevel > 0;
+    }
+
+    bool isNonStrictDirectEvalFrame() const {
+        return isNonStrictEvalFrame() && isDirectEvalFrame();
+    }
+# 500 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    StackFrame *prev() const {
+        return prev_;
+    }
+
+    inline void resetGeneratorPrev(JSContext *cx);
+    inline void resetInlinePrev(StackFrame *prevfp, jsbytecode *prevpc);
+
+    inline void initInlineFrame(JSFunction *fun, StackFrame *prevfp, jsbytecode *prevpc);
+
+    inline JSObject *createRestParameter(JSContext *cx);
+# 519 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    Value *slots() const {
+        return (Value *)(this + 1);
+    }
+
+    Value *base() const {
+        return slots() + script()->nfixed;
+    }
+
+    Value &varSlot(unsigned i) {
+        do { } while(0);
+        do { } while (0);
+        return slots()[i];
+    }
+
+    Value &localSlot(unsigned i) {
+
+        do { } while(0);
+        return slots()[i];
+    }
+# 574 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    jsbytecode *pcQuadratic(const ContextStack &stack, StackFrame *next = __null,
+                            JSInlinedSite **pinlined = __null);
+
+    jsbytecode *prevpc(JSInlinedSite **pinlined) {
+        if (flags_ & HAS_PREVPC) {
+            if (pinlined)
+                *pinlined = prevInline_;
+            return prevpc_;
+        }
+        return prevpcSlow(pinlined);
+    }
+
+    JSInlinedSite *prevInline() {
+        do { } while(0);
+        return prevInline_;
+    }
+
+    JSScript *script() const {
+        do { } while(0);
+        return isFunctionFrame()
+               ? isEvalFrame() ? u.evalScript : fun()->script()
+               : exec.script;
+    }
+
+    JSScript *functionScript() const {
+        do { } while(0);
+        return isEvalFrame() ? u.evalScript : fun()->script();
+    }
+
+    JSScript *globalScript() const {
+        do { } while(0);
+        return exec.script;
+    }
+
+    JSScript *maybeScript() const {
+        return isScriptFrame() ? script() : __null;
+    }
+
+    size_t numFixed() const {
+        return script()->nfixed;
+    }
+
+    size_t numSlots() const {
+        return script()->nslots;
+    }
+
+    size_t numGlobalVars() const {
+        do { } while(0);
+        return exec.script->nfixed;
+    }
+# 634 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    JSFunction* fun() const {
+        do { } while(0);
+        return exec.fun;
+    }
+
+    JSFunction* maybeFun() const {
+        return isFunctionFrame() ? fun() : __null;
+    }
+
+    JSFunction* maybeScriptFunction() const {
+        if (!isFunctionFrame())
+            return __null;
+        const StackFrame *fp = this;
+        while (fp->isEvalFrame())
+            fp = fp->prev();
+        return fp->script()->function();
+    }
+# 672 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    bool hasArgs() const {
+        return isNonEvalFunctionFrame();
+    }
+
+    unsigned numFormalArgs() const {
+        do { } while(0);
+        return fun()->nargs;
+    }
+
+    Value &formalArg(unsigned i) const {
+        do { } while(0);
+        return formalArgs()[i];
+    }
+
+    Value *formalArgs() const {
+        do { } while(0);
+        return (Value *)this - numFormalArgs();
+    }
+
+    Value *formalArgsEnd() const {
+        do { } while(0);
+        return (Value *)this;
+    }
+
+    Value *maybeFormalArgs() const {
+        return (flags_ & (FUNCTION | EVAL)) == FUNCTION
+               ? formalArgs()
+               : __null;
+    }
+
+    inline unsigned numActualArgs() const;
+    inline Value *actualArgs() const;
+    inline Value *actualArgsEnd() const;
+
+    inline Value &canonicalActualArg(unsigned i) const;
+    template <class Op>
+    inline bool forEachCanonicalActualArg(Op op, unsigned start = 0, unsigned count = unsigned(-1));
+    template <class Op> inline bool forEachFormalArg(Op op);
+
+
+
+    bool hasArgsObj() const {
+
+
+
+
+
+
+
+        return !!(flags_ & HAS_ARGS_OBJ);
+    }
+
+    ArgumentsObject &argsObj() const {
+        do { } while(0);
+        return *argsObj_;
+    }
+
+    ArgumentsObject *maybeArgsObj() const {
+        return hasArgsObj() ? &argsObj() : __null;
+    }
+
+    void initArgsObj(ArgumentsObject &argsObj) {
+        do { } while(0);
+        do { } while(0);
+        argsObj_ = &argsObj;
+        flags_ |= HAS_ARGS_OBJ;
+    }
+# 754 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    Value &functionThis() const {
+        do { } while(0);
+        if (isEvalFrame())
+            return ((Value *)this)[-1];
+        return formalArgs()[-1];
+    }
+
+    JSObject &constructorThis() const {
+        do { } while(0);
+        return formalArgs()[-1].toObject();
+    }
+
+    Value &globalThis() const {
+        do { } while(0);
+        return ((Value *)this)[-1];
+    }
+
+    Value &thisValue() const {
+        if (flags_ & (EVAL | GLOBAL))
+            return ((Value *)this)[-1];
+        return formalArgs()[-1];
+    }
+# 786 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    JSFunction &callee() const {
+        do { } while(0);
+        return *calleev().toObject().toFunction();
+    }
+
+    const Value &calleev() const {
+        do { } while(0);
+        return mutableCalleev();
+    }
+
+    const Value &maybeCalleev() const {
+        do { } while(0);
+        Value &calleev = flags_ & (EVAL | GLOBAL)
+                         ? ((Value *)this)[-2]
+                         : formalArgs()[-2];
+        do { } while(0);
+        return calleev;
+    }
+
+    Value &mutableCalleev() const {
+        do { } while(0);
+        if (isEvalFrame())
+            return ((Value *)this)[-2];
+        return formalArgs()[-2];
+    }
+
+    CallReceiver callReceiver() const {
+        return CallReceiverFromArgv(formalArgs());
+    }
+# 846 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    inline HandleObject scopeChain() const;
+    inline GlobalObject &global() const;
+
+    bool hasCallObj() const {
+        bool ret = !!(flags_ & HAS_CALL_OBJ);
+        do { } while (0);
+        return ret;
+    }
+
+    inline CallObject &callObj() const;
+    inline void initScopeChain(CallObject &callobj);
+    inline void setScopeChain(JSObject &obj);
+# 874 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    inline JSObject &varObj();
+
+
+
+    bool hasBlockChain() const {
+        return (flags_ & HAS_BLOCKCHAIN) && blockChain_;
+    }
+
+    StaticBlockObject *maybeBlockChain() {
+        return (flags_ & HAS_BLOCKCHAIN) ? blockChain_ : __null;
+    }
+
+    StaticBlockObject &blockChain() const {
+        do { } while(0);
+        return *blockChain_;
+    }
+
+
+    bool pushBlock(JSContext *cx, StaticBlockObject &block);
+    void popBlock(JSContext *cx);
+
+
+    void popWith(JSContext *cx);
+
+
+
+
+
+    inline bool functionPrologue(JSContext *cx);
+
+
+
+
+
+
+
+    inline void functionEpilogue(JSContext *cx);
+
+
+
+
+
+    inline void updateEpilogueFlags();
+
+    inline bool maintainNestingState() const;
+# 927 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    inline JSCompartment *compartment() const;
+
+
+
+    void* annotation() const {
+        return (flags_ & HAS_ANNOTATION) ? annotation_ : __null;
+    }
+
+    void setAnnotation(void *annot) {
+        flags_ |= HAS_ANNOTATION;
+        annotation_ = annot;
+    }
+
+
+
+    JSRejoinState rejoin() const {
+        return rejoin_;
+    }
+
+    void setRejoin(JSRejoinState state) {
+        rejoin_ = state;
+    }
+
+
+
+    void setDownFramesExpanded() {
+        flags_ |= DOWN_FRAMES_EXPANDED;
+    }
+
+    bool downFramesExpanded() {
+        return !!(flags_ & DOWN_FRAMES_EXPANDED);
+    }
+
+
+
+    bool hasHookData() const {
+        return !!(flags_ & HAS_HOOK_DATA);
+    }
+
+    void* hookData() const {
+        do { } while(0);
+        return hookData_;
+    }
+
+    void* maybeHookData() const {
+        return hasHookData() ? hookData_ : __null;
+    }
+
+    void setHookData(void *v) {
+        hookData_ = v;
+        flags_ |= HAS_HOOK_DATA;
+    }
+
+
+
+    bool hasReturnValue() const {
+        return !!(flags_ & HAS_RVAL);
+    }
+
+    Value &returnValue() {
+        if (!(flags_ & HAS_RVAL))
+            rval_.setUndefined();
+        return rval_;
+    }
+
+    void markReturnValue() {
+        flags_ |= HAS_RVAL;
+    }
+
+    void setReturnValue(const Value &v) {
+        rval_ = v;
+        markReturnValue();
+    }
+
+    void clearReturnValue() {
+        rval_.setUndefined();
+        markReturnValue();
+    }
+
+
+
+    void *nativeReturnAddress() const {
+        return ncode_;
+    }
+
+    void setNativeReturnAddress(void *addr) {
+        ncode_ = addr;
+    }
+
+    void **addressOfNativeReturnAddress() {
+        return &ncode_;
+    }
+# 1028 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    bool isGeneratorFrame() const {
+        return !!(flags_ & GENERATOR);
+    }
+
+    bool isFloatingGenerator() const {
+        do { } while (0);
+        return !!(flags_ & FLOATING_GENERATOR);
+    }
+
+    void initFloatingGenerator() {
+        do { } while(0);
+        flags_ |= (GENERATOR | FLOATING_GENERATOR);
+    }
+
+    void unsetFloatingGenerator() {
+        flags_ &= ~FLOATING_GENERATOR;
+    }
+
+    void setFloatingGenerator() {
+        flags_ |= FLOATING_GENERATOR;
+    }
+# 1057 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    bool isFramePushedByExecute() const {
+        return !!(flags_ & (GLOBAL | EVAL));
+    }
+
+
+
+
+
+    InitialFrameFlags initialFlags() const {
+        typedef int moz_static_assert94[((int)INITIAL_NONE == 0) ? 1 : -1];
+        typedef int moz_static_assert95[((int)INITIAL_CONSTRUCT == (int)CONSTRUCTING) ? 1 : -1];
+        typedef int moz_static_assert96[((int)INITIAL_LOWERED == (int)LOWERED_CALL_APPLY) ? 1 : -1];
+        uint32_t mask = CONSTRUCTING | LOWERED_CALL_APPLY;
+        do { } while(0);
+        return InitialFrameFlags(flags_ & mask);
+    }
+
+    bool isConstructing() const {
+        return !!(flags_ & CONSTRUCTING);
+    }
+
+
+
+
+
+
+
+    bool loweredCallOrApply() const {
+        return !!(flags_ & LOWERED_CALL_APPLY);
+    }
+
+    bool isDebuggerFrame() const {
+        return !!(flags_ & DEBUGGER);
+    }
+
+    bool hasOverflowArgs() const {
+        return !!(flags_ & OVERFLOW_ARGS);
+    }
+
+    bool isYielding() {
+        return !!(flags_ & YIELDING);
+    }
+
+    void setYielding() {
+        flags_ |= YIELDING;
+    }
+
+    void clearYielding() {
+        flags_ &= ~YIELDING;
+    }
+
+    void setFinishedInInterpreter() {
+        flags_ |= FINISHED_IN_INTERP;
+    }
+
+    bool finishedInInterpreter() const {
+        return !!(flags_ & FINISHED_IN_INTERP);
+    }
+
+  public:
+
+
+    static size_t offsetOfFlags() {
+        return __builtin_offsetof (StackFrame, flags_);
+    }
+
+    static size_t offsetOfExec() {
+        return __builtin_offsetof (StackFrame, exec);
+    }
+
+    static size_t offsetOfNumActual() {
+        return __builtin_offsetof (StackFrame, u.nactual);
+    }
+
+    static size_t offsetOfScopeChain() {
+        return __builtin_offsetof (StackFrame, scopeChain_);
+    }
+
+    static size_t offsetOfPrev() {
+        return __builtin_offsetof (StackFrame, prev_);
+    }
+
+    static size_t offsetOfReturnValue() {
+        return __builtin_offsetof (StackFrame, rval_);
+    }
+
+    static size_t offsetOfArgsObj() {
+        return __builtin_offsetof (StackFrame, argsObj_);
+    }
+
+    static ptrdiff_t offsetOfNcode() {
+        return __builtin_offsetof (StackFrame, ncode_);
+    }
+
+    static ptrdiff_t offsetOfCallee(JSFunction *fun) {
+        do { } while(0);
+        return -(fun->nargs + 2) * sizeof(Value);
+    }
+
+    static ptrdiff_t offsetOfThis(JSFunction *fun) {
+        return fun == __null
+               ? -1 * ptrdiff_t(sizeof(Value))
+               : -(fun->nargs + 1) * ptrdiff_t(sizeof(Value));
+    }
+
+    static ptrdiff_t offsetOfFormalArg(JSFunction *fun, unsigned i) {
+        do { } while(0);
+        return (-(int)fun->nargs + i) * sizeof(Value);
+    }
+
+    static size_t offsetOfFixed(unsigned i) {
+        return sizeof(StackFrame) + i * sizeof(Value);
+    }
+
+
+    inline mjit::JITScript *jit();
+
+
+    void methodjitStaticAsserts();
+
+  public:
+    void mark(JSTracer *trc);
+};
+
+static const size_t VALUES_PER_STACK_FRAME = sizeof(StackFrame) / sizeof(Value);
+
+static inline unsigned
+ToReportFlags(InitialFrameFlags initial)
+{
+    return unsigned(initial & StackFrame::CONSTRUCTING);
+}
+
+static inline StackFrame::Flags
+ToFrameFlags(InitialFrameFlags initial)
+{
+    return StackFrame::Flags(initial);
+}
+
+static inline InitialFrameFlags
+InitialFrameFlagsFromConstructing(bool b)
+{
+    return b ? INITIAL_CONSTRUCT : INITIAL_NONE;
+}
+
+static inline bool
+InitialFrameFlagsAreConstructing(InitialFrameFlags initial)
+{
+    return !!(initial & INITIAL_CONSTRUCT);
+}
+
+static inline bool
+InitialFrameFlagsAreLowered(InitialFrameFlags initial)
+{
+    return !!(initial & INITIAL_LOWERED);
+}
+
+inline StackFrame * Valueify(JSStackFrame *fp) { return (StackFrame *)fp; }
+static inline JSStackFrame * Jsvalify(StackFrame *fp) { return (JSStackFrame *)fp; }
+
+
+
+class FrameRegs
+{
+  public:
+    Value *sp;
+    jsbytecode *pc;
+  private:
+    JSInlinedSite *inlined_;
+    StackFrame *fp_;
+  public:
+    StackFrame *fp() const { return fp_; }
+    JSInlinedSite *inlined() const { return inlined_; }
+
+
+    static const size_t offsetOfFp = 3 * sizeof(void *);
+    static const size_t offsetOfInlined = 2 * sizeof(void *);
+    static void staticAssert() {
+        typedef int moz_static_assert97[(offsetOfFp == __builtin_offsetof (FrameRegs, fp_)) ? 1 : -1];
+        typedef int moz_static_assert98[(offsetOfInlined == __builtin_offsetof (FrameRegs, inlined_)) ? 1 : -1];
+    }
+    void clearInlined() { inlined_ = __null; }
+
+
+    void rebaseFromTo(const FrameRegs &from, StackFrame &to) {
+        fp_ = &to;
+        sp = to.slots() + (from.sp - from.fp_->slots());
+        pc = from.pc;
+        inlined_ = from.inlined_;
+        do { } while(0);
+    }
+
+
+    void popFrame(Value *newsp) {
+        pc = fp_->prevpc(&inlined_);
+        sp = newsp;
+        fp_ = fp_->prev();
+        do { } while(0);
+    }
+
+
+    void popPartialFrame(Value *newsp) {
+        sp = newsp;
+        fp_ = fp_->prev();
+        do { } while(0);
+    }
+
+
+    void restorePartialFrame(Value *newfp) {
+        fp_ = (StackFrame *) newfp;
+    }
+
+
+    void refreshFramePointer(StackFrame *fp) {
+        fp_ = fp;
+    }
+
+
+    void prepareToRun(StackFrame &fp, JSScript *script) {
+        pc = script->code;
+        sp = fp.slots() + script->nfixed;
+        fp_ = &fp;
+        inlined_ = __null;
+    }
+
+    void setToEndOfScript() {
+        JSScript *script = fp()->script();
+        sp = fp()->base();
+        pc = script->code + script->length - 1;
+        do { } while(0);
+    }
+
+
+    void initDummyFrame(StackFrame &fp) {
+        pc = __null;
+        sp = fp.slots();
+        fp_ = &fp;
+        inlined_ = __null;
+    }
+
+
+    void expandInline(StackFrame *innerfp, jsbytecode *innerpc) {
+        pc = innerpc;
+        fp_ = innerfp;
+        inlined_ = __null;
+    }
+
+
+
+    void updateForNcode(mjit::JITScript *jit, void *ncode) {
+        pc = mjit::NativeToPC(jit, ncode, &inlined_);
+    }
+
+};
+
+
+
+class StackSegment
+{
+
+    StackSegment *const prevInContext_;
+
+
+    StackSegment *const prevInMemory_;
+
+
+    FrameRegs *regs_;
+
+
+    CallArgsList *calls_;
+
+  public:
+    StackSegment(StackSegment *prevInContext,
+                 StackSegment *prevInMemory,
+                 FrameRegs *regs,
+                 CallArgsList *calls)
+      : prevInContext_(prevInContext),
+        prevInMemory_(prevInMemory),
+        regs_(regs),
+        calls_(calls)
+    {}
+
+
+
+    Value *slotsBegin() const {
+        return (Value *)(this + 1);
+    }
+
+
+
+    FrameRegs &regs() const {
+        do { } while(0);
+        return *regs_;
+    }
+
+    FrameRegs *maybeRegs() const {
+        return regs_;
+    }
+
+    StackFrame *fp() const {
+        return regs_->fp();
+    }
+
+    StackFrame *maybefp() const {
+        return regs_ ? regs_->fp() : __null;
+    }
+
+    jsbytecode *maybepc() const {
+        return regs_ ? regs_->pc : __null;
+    }
+
+    CallArgsList &calls() const {
+        do { } while(0);
+        return *calls_;
+    }
+
+    CallArgsList *maybeCalls() const {
+        return calls_;
+    }
+
+    Value *callArgv() const {
+        return calls_->array();
+    }
+
+    Value *maybeCallArgv() const {
+        return calls_ ? calls_->array() : __null;
+    }
+
+    StackSegment *prevInContext() const {
+        return prevInContext_;
+    }
+
+    StackSegment *prevInMemory() const {
+        return prevInMemory_;
+    }
+
+    void repointRegs(FrameRegs *regs) {
+        do { } while (0);
+        regs_ = regs;
+    }
+
+    bool isEmpty() const {
+        return !calls_ && !regs_;
+    }
+
+    bool contains(const StackFrame *fp) const;
+    bool contains(const FrameRegs *regs) const;
+    bool contains(const CallArgsList *call) const;
+
+    StackFrame *computeNextFrame(const StackFrame *fp) const;
+
+    Value *end() const;
+
+    FrameRegs *pushRegs(FrameRegs &regs);
+    void popRegs(FrameRegs *regs);
+    void pushCall(CallArgsList &callList);
+    void pointAtCall(CallArgsList &callList);
+    void popCall();
+
+
+
+    static const size_t offsetOfRegs() { return __builtin_offsetof (StackSegment, regs_); }
+};
+
+static const size_t VALUES_PER_STACK_SEGMENT = sizeof(StackSegment) / sizeof(Value);
+typedef int moz_static_assert99[(sizeof(StackSegment) % sizeof(Value) == 0) ? 1 : -1];
+
+
+
+class StackSpace
+{
+    StackSegment *seg_;
+    Value *base_;
+    mutable Value *conservativeEnd_;
+
+
+
+    Value *defaultEnd_;
+    Value *trustedEnd_;
+
+    void assertInvariants() const {
+        do { } while(0);
+
+
+
+
+        do { } while(0);
+        do { } while(0);
+    }
+
+
+    static const size_t CAPACITY_VALS = 512 * 1024;
+    static const size_t CAPACITY_BYTES = CAPACITY_VALS * sizeof(Value);
+
+
+    static const size_t COMMIT_VALS = 16 * 1024;
+    static const size_t COMMIT_BYTES = COMMIT_VALS * sizeof(Value);
+
+
+    static const size_t BUFFER_VALS = 16 * 1024;
+    static const size_t BUFFER_BYTES = BUFFER_VALS * sizeof(Value);
+
+    static void staticAsserts() {
+        typedef int moz_static_assert100[(CAPACITY_VALS % COMMIT_VALS == 0) ? 1 : -1];
+    }
+
+    friend class AllFramesIter;
+    friend class ContextStack;
+    friend class StackFrame;
+# 1474 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    static const size_t CX_COMPARTMENT = 0xc;
+
+    inline bool ensureSpace(JSContext *cx, MaybeReportError report,
+                            Value *from, ptrdiff_t nvals,
+                            JSCompartment *dest = (JSCompartment *)CX_COMPARTMENT) const;
+    __attribute__((visibility("default"))) bool ensureSpaceSlow(JSContext *cx, MaybeReportError report,
+                                        Value *from, ptrdiff_t nvals,
+                                        JSCompartment *dest) const;
+
+    StackSegment &findContainingSegment(const StackFrame *target) const;
+
+  public:
+    StackSpace();
+    bool init();
+    ~StackSpace();
+# 1501 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    static const unsigned ARGS_LENGTH_MAX = CAPACITY_VALS - (2 * BUFFER_VALS);
+
+
+    inline Value *firstUnused() const { return seg_ ? seg_->end() : base_; }
+
+    StackSegment &containingSegment(const StackFrame *target) const;
+# 1516 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    static const size_t STACK_JIT_EXTRA = ( 8 + 18) * 10;
+# 1532 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    inline Value *getStackLimit(JSContext *cx, MaybeReportError report);
+    bool tryBumpLimit(JSContext *cx, Value *from, unsigned nvals, Value **limit);
+
+
+    void mark(JSTracer *trc);
+    void markFrameSlots(JSTracer *trc, StackFrame *fp, Value *slotsEnd, jsbytecode *pc);
+
+
+    void markActiveCompartments();
+
+
+    __attribute__((visibility("default"))) size_t sizeOfCommitted();
+
+
+
+
+};
+
+
+
+class ContextStack
+{
+    StackSegment *seg_;
+    StackSpace *const space_;
+    JSContext *cx_;
+# 1566 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    bool onTop() const;
+
+
+
+
+    void assertSpaceInSync() const {}
+
+
+
+    StackSegment *pushSegment(JSContext *cx);
+    enum MaybeExtend { CAN_EXTEND = true, CANT_EXTEND = false };
+    Value *ensureOnTop(JSContext *cx, MaybeReportError report, unsigned nvars,
+                       MaybeExtend extend, bool *pushedSeg,
+                       JSCompartment *dest = (JSCompartment *)StackSpace::CX_COMPARTMENT);
+
+    inline StackFrame *
+    getCallFrame(JSContext *cx, MaybeReportError report, const CallArgs &args,
+                 JSFunction *fun, JSScript *script, StackFrame::Flags *pflags) const;
+
+
+    void popSegment();
+    friend class InvokeArgsGuard;
+    void popInvokeArgs(const InvokeArgsGuard &iag);
+    friend class FrameGuard;
+    void popFrame(const FrameGuard &fg);
+    friend class GeneratorFrameGuard;
+    void popGeneratorFrame(const GeneratorFrameGuard &gfg);
+
+    friend class StackIter;
+
+  public:
+    ContextStack(JSContext *cx);
+    ~ContextStack();
+
+
+
+
+
+
+
+    bool empty() const { return !seg_; }
+
+
+
+
+
+
+
+    inline bool hasfp() const { return seg_ && seg_->maybeRegs(); }
+
+
+
+
+
+    inline FrameRegs *maybeRegs() const { return seg_ ? seg_->maybeRegs() : __null; }
+    inline StackFrame *maybefp() const { return seg_ ? seg_->maybefp() : __null; }
+
+
+    inline FrameRegs &regs() const { do { } while(0); return seg_->regs(); }
+    inline StackFrame *fp() const { do { } while(0); return seg_->fp(); }
+
+
+    StackSpace &space() const { return *space_; }
+
+
+    bool containsSlow(const StackFrame *target) const;
+# 1641 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    bool pushInvokeArgs(JSContext *cx, unsigned argc, InvokeArgsGuard *ag);
+
+
+    bool pushInvokeFrame(JSContext *cx, const CallArgs &args,
+                         InitialFrameFlags initial, InvokeFrameGuard *ifg);
+
+
+    bool pushExecuteFrame(JSContext *cx, JSScript *script, const Value &thisv,
+                          JSObject &scopeChain, ExecuteType type,
+                          StackFrame *evalInFrame, ExecuteFrameGuard *efg);
+
+
+
+
+
+
+
+    bool pushGeneratorFrame(JSContext *cx, JSGenerator *gen, GeneratorFrameGuard *gfg);
+# 1669 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    bool pushDummyFrame(JSContext *cx, JSCompartment *dest, JSObject &scopeChain, DummyFrameGuard *dfg);
+
+
+
+
+
+
+    bool pushInlineFrame(JSContext *cx, FrameRegs &regs, const CallArgs &args,
+                         JSFunction &callee, JSScript *script,
+                         InitialFrameFlags initial);
+    bool pushInlineFrame(JSContext *cx, FrameRegs &regs, const CallArgs &args,
+                         JSFunction &callee, JSScript *script,
+                         InitialFrameFlags initial, Value **stackLimit);
+    void popInlineFrame(FrameRegs &regs);
+
+
+    void popFrameAfterOverflow();
+
+
+    inline JSScript *currentScript(jsbytecode **pc = __null) const;
+    inline JSScript *currentScriptWithDiagnostics(jsbytecode **pc = __null) const;
+
+
+    inline HandleObject currentScriptedScopeChain() const;
+
+
+
+
+
+
+    StackFrame *getFixupFrame(JSContext *cx, MaybeReportError report,
+                              const CallArgs &args, JSFunction *fun, JSScript *script,
+                              void *ncode, InitialFrameFlags initial, Value **stackLimit);
+
+    bool saveFrameChain();
+    void restoreFrameChain();
+
+
+
+
+
+    inline void repointRegs(FrameRegs *regs) { do { } while(0); seg_->repointRegs(regs); }
+# 1719 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+    void threadReset();
+
+
+
+    static size_t offsetOfSeg() { return __builtin_offsetof (ContextStack, seg_); }
+};
+
+
+
+class InvokeArgsGuard : public CallArgsList
+{
+    friend class ContextStack;
+    ContextStack *stack_;
+    bool pushedSeg_;
+    void setPushed(ContextStack &stack) { do { } while(0); stack_ = &stack; }
+  public:
+    InvokeArgsGuard() : CallArgsList(), stack_(__null), pushedSeg_(false) {}
+    ~InvokeArgsGuard() { if (pushed()) stack_->popInvokeArgs(*this); }
+    bool pushed() const { return !!stack_; }
+    void pop() { stack_->popInvokeArgs(*this); stack_ = __null; }
+};
+
+class FrameGuard
+{
+  protected:
+    friend class ContextStack;
+    ContextStack *stack_;
+    bool pushedSeg_;
+    FrameRegs regs_;
+    FrameRegs *prevRegs_;
+    void setPushed(ContextStack &stack) { stack_ = &stack; }
+  public:
+    FrameGuard() : stack_(__null), pushedSeg_(false) {}
+    ~FrameGuard() { if (pushed()) stack_->popFrame(*this); }
+    bool pushed() const { return !!stack_; }
+    void pop() { stack_->popFrame(*this); stack_ = __null; }
+
+    StackFrame *fp() const { return regs_.fp(); }
+};
+
+class InvokeFrameGuard : public FrameGuard
+{};
+
+class ExecuteFrameGuard : public FrameGuard
+{};
+
+class DummyFrameGuard : public FrameGuard
+{};
+
+class GeneratorFrameGuard : public FrameGuard
+{
+    friend class ContextStack;
+    JSGenerator *gen_;
+    Value *stackvp_;
+  public:
+    ~GeneratorFrameGuard() { if (pushed()) stack_->popGeneratorFrame(*this); }
+};
+# 1797 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h"
+class StackIter
+{
+    friend class ContextStack;
+    JSContext *maybecx_;
+  public:
+    enum SavedOption { STOP_AT_SAVED, GO_THROUGH_SAVED };
+  private:
+    SavedOption savedOption_;
+
+    enum State { DONE, SCRIPTED, NATIVE, IMPLICIT_NATIVE };
+    State state_;
+
+    StackFrame *fp_;
+    CallArgsList *calls_;
+
+    StackSegment *seg_;
+    Value *sp_;
+    jsbytecode *pc_;
+    JSScript *script_;
+    CallArgs args_;
+
+    void poisonRegs();
+    void popFrame();
+    void popCall();
+    void settleOnNewSegment();
+    void settleOnNewState();
+    void startOnSegment(StackSegment *seg);
+
+  public:
+    StackIter(JSContext *cx, SavedOption = STOP_AT_SAVED);
+    StackIter(JSRuntime *rt, StackSegment &seg);
+
+    bool done() const { return state_ == DONE; }
+    StackIter &operator++();
+
+    bool operator==(const StackIter &rhs) const;
+    bool operator!=(const StackIter &rhs) const { return !(*this == rhs); }
+
+    bool isScript() const { do { } while(0); return state_ == SCRIPTED; }
+    bool isImplicitNativeCall() const {
+        do { } while(0);
+        return state_ == IMPLICIT_NATIVE;
+    }
+    bool isNativeCall() const {
+        do { } while(0);
+        return state_ == NATIVE || state_ == IMPLICIT_NATIVE;
+    }
+
+    bool isFunctionFrame() const;
+    bool isEvalFrame() const;
+    bool isNonEvalFunctionFrame() const;
+    bool isConstructing() const;
+
+    StackFrame *fp() const { do { } while(0); return fp_; }
+    Value *sp() const { do { } while(0); return sp_; }
+    jsbytecode *pc() const { do { } while(0); return pc_; }
+    JSScript *script() const { do { } while(0); return script_; }
+    JSFunction *callee() const;
+    Value calleev() const;
+    Value thisv() const;
+
+    CallArgs nativeArgs() const { do { } while(0); return args_; }
+};
+
+
+class ScriptFrameIter : public StackIter
+{
+    void settle() {
+        while (!done() && !isScript())
+            StackIter::operator++();
+    }
+
+  public:
+    ScriptFrameIter(JSContext *cx, StackIter::SavedOption opt = StackIter::STOP_AT_SAVED)
+        : StackIter(cx, opt) { settle(); }
+
+    ScriptFrameIter &operator++() { StackIter::operator++(); settle(); return *this; }
+};
+
+
+
+
+
+
+
+class AllFramesIter
+{
+  public:
+    AllFramesIter(StackSpace &space);
+
+    bool done() const { return fp_ == __null; }
+    AllFramesIter& operator++();
+
+    StackFrame *fp() const { return fp_; }
+
+  private:
+    void settle();
+    StackSegment *seg_;
+    StackFrame *fp_;
+};
+
+}
+# 33 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h" 2
+# 41 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+extern "C" {
+struct DtoaState;
+}
+
+struct JSSharpInfo {
+    bool hasGen;
+    bool isSharp;
+
+    JSSharpInfo() : hasGen(false), isSharp(false) {}
+};
+
+typedef js::HashMap<JSObject *, JSSharpInfo> JSSharpTable;
+
+struct JSSharpObjectMap {
+    unsigned depth;
+    uint32_t sharpgen;
+    JSSharpTable table;
+
+    JSSharpObjectMap(JSContext *cx) : depth(0), sharpgen(0), table(js::TempAllocPolicy(cx)) {
+        table.init();
+    }
+};
+
+namespace js {
+
+namespace mjit {
+class JaegerRuntime;
+}
+
+class MathCache;
+class WeakMapBase;
+class InterpreterFrames;
+class DebugScopes;
+
+
+
+
+
+
+
+struct GSNCache {
+    typedef HashMap<jsbytecode *,
+                    jssrcnote *,
+                    PointerHasher<jsbytecode *, 0>,
+                    SystemAllocPolicy> Map;
+
+    jsbytecode *code;
+    Map map;
+
+    GSNCache() : code(__null) { }
+
+    void purge();
+};
+
+inline GSNCache *
+GetGSNCache(JSContext *cx);
+
+struct PendingProxyOperation {
+    PendingProxyOperation *next;
+    RootedObject object;
+    PendingProxyOperation(JSContext *cx, JSObject *object) : next(__null), object(cx, object) {}
+};
+
+typedef Vector<ScriptAndCounts, 0, SystemAllocPolicy> ScriptAndCountsVector;
+
+struct ConservativeGCData
+{
+
+
+
+
+    uintptr_t *nativeStackTop;
+# 126 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+    union {
+        jmp_buf jmpbuf;
+        uintptr_t words[(((sizeof(jmp_buf))+(sizeof(uintptr_t))-1)/(sizeof(uintptr_t)))];
+    } registerSnapshot;
+
+    ConservativeGCData() {
+        PodZero(this);
+    }
+
+    ~ConservativeGCData() {
+
+
+
+
+
+        do { } while(0);
+
+    }
+
+    __attribute__((noinline)) void recordStackTop();
+
+
+    void updateForRequestEnd(unsigned suspendCount) {
+        if (suspendCount)
+            recordStackTop();
+        else
+            nativeStackTop = __null;
+    }
+
+
+    bool hasStackToScan() const {
+        return !!nativeStackTop;
+    }
+};
+
+class ToSourceCache
+{
+    typedef HashMap<JSFunction *,
+                    JSString *,
+                    DefaultHasher<JSFunction *>,
+                    SystemAllocPolicy> Map;
+    Map *map_;
+  public:
+    ToSourceCache() : map_(__null) {}
+    JSString *lookup(JSFunction *fun);
+    void put(JSFunction *fun, JSString *);
+    void purge();
+};
+
+class EvalCache
+{
+    static const unsigned SHIFT = 6;
+    static const unsigned LENGTH = 1 << SHIFT;
+    JSScript *table_[LENGTH];
+
+  public:
+    EvalCache() { PodArrayZero(table_); }
+    JSScript **bucket(JSLinearString *str);
+    void purge();
+};
+
+class NativeIterCache
+{
+    static const size_t SIZE = size_t(1) << 8;
+
+
+    JSObject *data[SIZE];
+
+    static size_t getIndex(uint32_t key) {
+        return size_t(key) % SIZE;
+    }
+
+  public:
+
+    JSObject *last;
+
+    NativeIterCache()
+      : last(__null) {
+        PodArrayZero(data);
+    }
+
+    void purge() {
+        last = __null;
+        PodArrayZero(data);
+    }
+
+    JSObject *get(uint32_t key) const {
+        return data[getIndex(key)];
+    }
+
+    void set(uint32_t key, JSObject *iterobj) {
+        data[getIndex(key)] = iterobj;
+    }
+};
+
+
+
+
+
+
+class NewObjectCache
+{
+
+    static const unsigned MAX_OBJ_SIZE = 4 * sizeof(void*) + 16 * sizeof(Value);
+    static inline void staticAsserts();
+
+    struct Entry
+    {
+
+        Class *clasp;
+# 250 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+        gc::Cell *key;
+
+
+        gc::AllocKind kind;
+
+
+        uint32_t nbytes;
+
+
+
+
+
+        char templateObject[MAX_OBJ_SIZE];
+    };
+
+    Entry entries[41];
+
+  public:
+
+    typedef int EntryIndex;
+
+    NewObjectCache() { PodZero(this); }
+    void purge() { PodZero(this); }
+
+
+
+
+
+    inline bool lookupProto(Class *clasp, JSObject *proto, gc::AllocKind kind, EntryIndex *pentry);
+    inline bool lookupGlobal(Class *clasp, js::GlobalObject *global, gc::AllocKind kind, EntryIndex *pentry);
+    inline bool lookupType(Class *clasp, js::types::TypeObject *type, gc::AllocKind kind, EntryIndex *pentry);
+
+
+    inline JSObject *newObjectFromHit(JSContext *cx, EntryIndex entry);
+
+
+    inline void fillProto(EntryIndex entry, Class *clasp, JSObject *proto, gc::AllocKind kind, JSObject *obj);
+    inline void fillGlobal(EntryIndex entry, Class *clasp, js::GlobalObject *global, gc::AllocKind kind, JSObject *obj);
+    inline void fillType(EntryIndex entry, Class *clasp, js::types::TypeObject *type, gc::AllocKind kind, JSObject *obj);
+
+
+    void invalidateEntriesForShape(JSContext *cx, Shape *shape, JSObject *proto);
+
+  private:
+    inline bool lookup(Class *clasp, gc::Cell *key, gc::AllocKind kind, EntryIndex *pentry);
+    inline void fill(EntryIndex entry, Class *clasp, gc::Cell *key, gc::AllocKind kind, JSObject *obj);
+    static inline void copyCachedToObject(JSObject *dst, JSObject *src);
+};
+# 306 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+class FreeOp : public JSFreeOp {
+    bool shouldFreeLater_;
+    bool onBackgroundThread_;
+
+  public:
+    static FreeOp *get(JSFreeOp *fop) {
+        return static_cast<FreeOp *>(fop);
+    }
+
+    FreeOp(JSRuntime *rt, bool shouldFreeLater, bool onBackgroundThread)
+      : JSFreeOp(rt),
+        shouldFreeLater_(shouldFreeLater),
+        onBackgroundThread_(onBackgroundThread)
+    {
+    }
+
+    bool shouldFreeLater() const {
+        return shouldFreeLater_;
+    }
+
+    bool onBackgroundThread() const {
+        return onBackgroundThread_;
+    }
+
+    inline void free_(void* p);
+
+    template <class T> inline void delete_(T *p) { if (p) { p->~T(); free_(p); } } template <class T> inline void array_delete(T *p) { if (p) { void* p0 = (void *)(uintptr_t(p) - js::OffTheBooks::JSMinAlignment); size_t n = *(size_t *)p0; for (size_t i = 0; i < n; i++) (p + i)->~T(); free_(p0); } }
+
+    static void staticAsserts() {
+
+
+
+
+
+
+        typedef int moz_static_assert101[(__builtin_offsetof (FreeOp, shouldFreeLater_) == sizeof(JSFreeOp)) ? 1 : -1];
+    }
+};
+
+}
+
+namespace JS {
+struct RuntimeSizes;
+}
+
+struct JSRuntime : js::RuntimeFriendFields
+{
+
+    JSCompartment *atomsCompartment;
+
+
+    js::CompartmentVector compartments;
+
+
+
+  public:
+    void *ownerThread() const { return ownerThread_; }
+    void clearOwnerThread();
+    void setOwnerThread();
+    __attribute__((visibility("default"))) bool onOwnerThread() const;
+  private:
+    void *ownerThread_;
+  public:
+
+
+
+
+
+
+    js::StackSpace stackSpace;
+
+
+    static const size_t TEMP_LIFO_ALLOC_PRIMARY_CHUNK_SIZE = 1 << 12;
+    js::LifoAlloc tempLifoAlloc;
+
+  private:
+
+
+
+
+    JSC::ExecutableAllocator *execAlloc_;
+    WTF::BumpPointerAllocator *bumpAlloc_;
+
+    js::mjit::JaegerRuntime *jaegerRuntime_;
+
+
+    JSC::ExecutableAllocator *createExecutableAllocator(JSContext *cx);
+    WTF::BumpPointerAllocator *createBumpPointerAllocator(JSContext *cx);
+    js::mjit::JaegerRuntime *createJaegerRuntime(JSContext *cx);
+
+  public:
+    JSC::ExecutableAllocator *getExecAlloc(JSContext *cx) {
+        return execAlloc_ ? execAlloc_ : createExecutableAllocator(cx);
+    }
+    JSC::ExecutableAllocator &execAlloc() {
+        do { } while(0);
+        return *execAlloc_;
+    }
+    WTF::BumpPointerAllocator *getBumpPointerAllocator(JSContext *cx) {
+        return bumpAlloc_ ? bumpAlloc_ : createBumpPointerAllocator(cx);
+    }
+
+    js::mjit::JaegerRuntime *getJaegerRuntime(JSContext *cx) {
+        return jaegerRuntime_ ? jaegerRuntime_ : createJaegerRuntime(cx);
+    }
+    bool hasJaegerRuntime() const {
+        return jaegerRuntime_;
+    }
+    js::mjit::JaegerRuntime &jaegerRuntime() {
+        do { } while(0);
+        return *jaegerRuntime_;
+    }
+
+
+
+    uintptr_t nativeStackBase;
+
+
+    size_t nativeStackQuota;
+
+
+
+
+
+    js::InterpreterFrames *interpreterFrames;
+
+
+    JSContextCallback cxCallback;
+
+
+    JSDestroyCompartmentCallback destroyCompartmentCallback;
+
+    js::ActivityCallback activityCallback;
+    void *activityCallbackArg;
+
+
+
+    unsigned suspendCount;
+
+
+    unsigned requestDepth;
+# 460 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+    js::GCChunkSet gcChunkSet;
+# 469 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+    js::gc::Chunk *gcSystemAvailableChunkListHead;
+    js::gc::Chunk *gcUserAvailableChunkListHead;
+    js::gc::ChunkPool gcChunkPool;
+
+    js::RootedValueMap gcRootsHash;
+    js::GCLocks gcLocksHash;
+    unsigned gcKeepAtoms;
+    size_t gcBytes;
+    size_t gcMaxBytes;
+    size_t gcMaxMallocBytes;
+
+
+
+
+
+
+    volatile uint32_t gcNumArenasFreeCommitted;
+    js::GCMarker gcMarker;
+    void *gcVerifyData;
+    bool gcChunkAllocationSinceLastGC;
+    int64_t gcNextFullGCTime;
+    int64_t gcJitReleaseTime;
+    JSGCMode gcMode;
+
+
+    bool gcShouldCleanUpEverything;
+
+
+
+
+
+
+    volatile uintptr_t gcIsNeeded;
+
+    js::WeakMapBase *gcWeakMapList;
+    js::gcstats::Statistics gcStats;
+
+
+    uint64_t gcNumber;
+
+
+    uint64_t gcStartNumber;
+
+
+    bool gcIsFull;
+
+
+    js::gcreason::Reason gcTriggerReason;
+
+
+
+
+
+    bool gcStrictCompartmentChecking;
+
+
+
+
+
+    js::gc::State gcIncrementalState;
+
+
+    bool gcLastMarkSlice;
+
+
+
+
+
+
+    volatile uintptr_t gcInterFrameGC;
+
+
+    int64_t gcSliceBudget;
+
+
+
+
+
+    bool gcIncrementalEnabled;
+
+
+
+
+
+
+    bool gcExactScanningEnabled;
+# 572 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+    bool gcPoke;
+    bool gcRunning;
+# 614 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+    int gcZeal() { return 0; }
+    bool needZealousGC() { return false; }
+
+
+    JSGCCallback gcCallback;
+    js::GCSliceCallback gcSliceCallback;
+    JSFinalizeCallback gcFinalizeCallback;
+
+  private:
+
+
+
+
+    volatile ptrdiff_t gcMallocBytes;
+
+  public:
+
+
+
+
+
+
+    JSTraceDataOp gcBlackRootsTraceOp;
+    void *gcBlackRootsData;
+    JSTraceDataOp gcGrayRootsTraceOp;
+    void *gcGrayRootsData;
+
+
+    js::AutoGCRooter *autoGCRooters;
+
+
+    js::ScriptAndCountsVector *scriptAndCountsVector;
+
+
+    js::Value NaNValue;
+    js::Value negativeInfinityValue;
+    js::Value positiveInfinityValue;
+
+    JSAtom *emptyString;
+
+
+    JSCList contextList;
+
+    bool hasContexts() const {
+        return !((&contextList)->next == (&contextList));
+    }
+
+
+    JSDebugHooks debugHooks;
+
+
+    bool debugMode;
+
+
+    bool profilingScripts;
+
+
+    bool alwaysPreserveCode;
+
+
+    JSBool hadOutOfMemory;
+
+
+
+
+
+    JSCList debuggerList;
+
+
+    js::DebugScopes *debugScopes;
+
+
+    void *data;
+
+
+
+    PRLock *gcLock;
+
+    js::GCHelperThread gcHelperThread;
+
+
+  private:
+    js::FreeOp defaultFreeOp_;
+
+  public:
+    js::FreeOp *defaultFreeOp() {
+        return &defaultFreeOp_;
+    }
+
+    uint32_t debuggerMutations;
+
+    const JSSecurityCallbacks *securityCallbacks;
+    JSDestroyPrincipalsOp destroyPrincipals;
+
+
+    const JSStructuredCloneCallbacks *structuredCloneCallbacks;
+
+
+    JSAccumulateTelemetryDataCallback telemetryCallback;
+
+
+
+
+
+
+    int32_t propertyRemovals;
+
+
+    const char *thousandsSeparator;
+    const char *decimalSeparator;
+    const char *numGrouping;
+
+
+
+
+
+    bool waiveGCQuota;
+
+  private:
+    js::MathCache *mathCache_;
+    js::MathCache *createMathCache(JSContext *cx);
+  public:
+    js::MathCache *getMathCache(JSContext *cx) {
+        return mathCache_ ? mathCache_ : createMathCache(cx);
+    }
+
+    js::GSNCache gsnCache;
+    js::PropertyCache propertyCache;
+    js::NewObjectCache newObjectCache;
+    js::NativeIterCache nativeIterCache;
+    js::ToSourceCache toSourceCache;
+    js::EvalCache evalCache;
+
+
+    DtoaState *dtoaState;
+
+
+    js::PendingProxyOperation *pendingProxyOperation;
+
+    js::ConservativeGCData conservativeGC;
+
+  private:
+    JSPrincipals *trustedPrincipals_;
+  public:
+    void setTrustedPrincipals(JSPrincipals *p) { trustedPrincipals_ = p; }
+    JSPrincipals *trustedPrincipals() const { return trustedPrincipals_; }
+
+
+    JSAtomState atomState;
+
+
+    js::StaticStrings staticStrings;
+
+    JSWrapObjectCallback wrapObjectCallback;
+    JSSameCompartmentWrapObjectCallback sameCompartmentWrapObjectCallback;
+    JSPreWrapCallback preWrapObjectCallback;
+    js::PreserveWrapperCallback preserveWrapperCallback;
+
+    js::ScriptFilenameTable scriptFilenameTable;
+# 783 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+    int32_t inOOMReport;
+
+    bool jitHardening;
+
+    JSRuntime();
+    ~JSRuntime();
+
+    bool init(uint32_t maxbytes);
+
+    JSRuntime *thisFromCtor() { return this; }
+
+
+
+
+
+    void* malloc_(size_t bytes, JSContext *cx = __null) {
+        updateMallocCounter(cx, bytes);
+        void *p = ::js_malloc(bytes);
+        return (__builtin_expect((!!p), 1)) ? p : onOutOfMemory(__null, bytes, cx);
+    }
+
+
+
+
+
+    void* calloc_(size_t bytes, JSContext *cx = __null) {
+        updateMallocCounter(cx, bytes);
+        void *p = ::js_calloc(bytes);
+        return (__builtin_expect((!!p), 1)) ? p : onOutOfMemory(reinterpret_cast<void *>(1), bytes, cx);
+    }
+
+    void* realloc_(void* p, size_t oldBytes, size_t newBytes, JSContext *cx = __null) {
+        do { } while(0);
+        updateMallocCounter(cx, newBytes - oldBytes);
+        void *p2 = ::js_realloc(p, newBytes);
+        return (__builtin_expect((!!p2), 1)) ? p2 : onOutOfMemory(p, newBytes, cx);
+    }
+
+    void* realloc_(void* p, size_t bytes, JSContext *cx = __null) {
+
+
+
+
+        if (!p)
+            updateMallocCounter(cx, bytes);
+        void *p2 = ::js_realloc(p, bytes);
+        return (__builtin_expect((!!p2), 1)) ? p2 : onOutOfMemory(p, bytes, cx);
+    }
+
+    inline void free_(void* p) {
+
+        js::Foreground::free_(p);
+    }
+
+    template <class T> __attribute__((always_inline)) inline T *new_() { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T () : __null; } template <class T, class P1> __attribute__((always_inline)) inline T *new_(P1 p1) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1) : __null; } template <class T, class P1, class P2> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2) : __null; } template <class T, class P1, class P2, class P3> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3) : __null; } template <class T, class P1, class P2, class P3, class P4> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12> __attribute__((always_inline)) inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) : __null; } static const int JSMinAlignment = 8; template <class T> __attribute__((always_inline)) inline T *array_new(size_t n) { uint64_t numBytes64 = uint64_t(JSMinAlignment) + uint64_t(sizeof(T)) * uint64_t(n); size_t numBytes = size_t(numBytes64); if (numBytes64 != numBytes) { do { } while(0); return __null; } void *memory = malloc_(numBytes); if (!memory) return __null; *(size_t *)memory = n; memory = (void*)(uintptr_t(memory) + JSMinAlignment); return new(memory) T[n]; }
+    template <class T> __attribute__((always_inline)) inline void delete_(T *p) { if (p) { p->~T(); free_(p); } } template <class T> __attribute__((always_inline)) inline void array_delete(T *p) { if (p) { void* p0 = (void *)(uintptr_t(p) - js::OffTheBooks::JSMinAlignment); size_t n = *(size_t *)p0; for (size_t i = 0; i < n; i++) (p + i)->~T(); free_(p0); } }
+
+    void setGCMaxMallocBytes(size_t value);
+
+    void resetGCMallocBytes() { gcMallocBytes = ptrdiff_t(gcMaxMallocBytes); }
+# 852 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+    void updateMallocCounter(JSContext *cx, size_t nbytes);
+
+    bool isTooMuchMalloc() const {
+        return gcMallocBytes <= 0;
+    }
+
+
+
+
+    __attribute__((visibility("default"))) void onTooMuchMalloc();
+# 871 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+    __attribute__((visibility("default"))) void * onOutOfMemory(void *p, size_t nbytes, JSContext *cx);
+
+    void triggerOperationCallback();
+
+    void setJitHardening(bool enabled);
+    bool getJitHardening() const {
+        return jitHardening;
+    }
+
+    void sizeOfIncludingThis(JSMallocSizeOfFun mallocSizeOf, JS::RuntimeSizes *runtime);
+    size_t sizeOfExplicitNonHeap();
+};
+
+
+#define JS_PROPERTY_CACHE(cx) (cx->runtime->propertyCache)
+
+#define JS_KEEP_ATOMS(rt) (rt)->gcKeepAtoms++;
+#define JS_UNKEEP_ATOMS(rt) (rt)->gcKeepAtoms--;
+# 904 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+namespace js {
+
+struct AutoResolving;
+
+static inline bool
+OptionsHasAllowXML(uint32_t options)
+{
+    return !!(options & ((uint32_t)1 << (6)));
+}
+
+static inline bool
+OptionsHasMoarXML(uint32_t options)
+{
+    return !!(options & ((uint32_t)1 << (7)));
+}
+
+static inline bool
+OptionsSameVersionFlags(uint32_t self, uint32_t other)
+{
+    static const uint32_t mask = ((uint32_t)1 << (7));
+    return !((self & mask) ^ (other & mask));
+}
+# 935 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+namespace VersionFlags {
+static const unsigned MASK = 0x0FFF;
+static const unsigned ALLOW_XML = 0x1000;
+static const unsigned MOAR_XML = 0x2000;
+static const unsigned FULL_MASK = 0x3FFF;
+}
+
+static inline JSVersion
+VersionNumber(JSVersion version)
+{
+    return JSVersion(uint32_t(version) & VersionFlags::MASK);
+}
+
+static inline bool
+VersionHasAllowXML(JSVersion version)
+{
+    return !!(version & VersionFlags::ALLOW_XML);
+}
+
+static inline bool
+VersionHasMoarXML(JSVersion version)
+{
+    return !!(version & VersionFlags::MOAR_XML);
+}
+
+
+static inline bool
+VersionShouldParseXML(JSVersion version)
+{
+    return VersionHasMoarXML(version) || VersionNumber(version) >= JSVERSION_1_6;
+}
+
+static inline JSVersion
+VersionExtractFlags(JSVersion version)
+{
+    return JSVersion(uint32_t(version) & ~VersionFlags::MASK);
+}
+
+static inline void
+VersionCopyFlags(JSVersion *version, JSVersion from)
+{
+    *version = JSVersion(VersionNumber(*version) | VersionExtractFlags(from));
+}
+
+static inline bool
+VersionHasFlags(JSVersion version)
+{
+    return !!VersionExtractFlags(version);
+}
+
+static inline unsigned
+VersionFlagsToOptions(JSVersion version)
+{
+    unsigned copts = (VersionHasAllowXML(version) ? ((uint32_t)1 << (6)) : 0) |
+                     (VersionHasMoarXML(version) ? ((uint32_t)1 << (7)) : 0);
+    do { } while(0);
+    return copts;
+}
+
+static inline JSVersion
+OptionFlagsToVersion(unsigned options, JSVersion version)
+{
+    uint32_t v = version;
+    v &= ~(VersionFlags::ALLOW_XML | VersionFlags::MOAR_XML);
+    if (OptionsHasAllowXML(options))
+        v |= VersionFlags::ALLOW_XML;
+    if (OptionsHasMoarXML(options))
+        v |= VersionFlags::MOAR_XML;
+    return JSVersion(v);
+}
+
+static inline bool
+VersionIsKnown(JSVersion version)
+{
+    return VersionNumber(version) != JSVERSION_UNKNOWN;
+}
+
+typedef HashSet<JSObject *,
+                DefaultHasher<JSObject *>,
+                SystemAllocPolicy> BusyArraysSet;
+
+inline void
+FreeOp::free_(void* p) {
+
+    if (shouldFreeLater()) {
+        runtime()->gcHelperThread.freeLater(p);
+        return;
+    }
+
+    runtime()->free_(p);
+}
+
+}
+
+struct JSContext : js::ContextFriendFields
+{
+    explicit JSContext(JSRuntime *rt);
+    JSContext *thisDuringConstruction() { return this; }
+    ~JSContext();
+
+
+    JSCList link;
+
+  private:
+
+    JSVersion defaultVersion;
+    JSVersion versionOverride;
+    bool hasVersionOverride;
+
+
+    JSBool throwing;
+    js::Value exception;
+
+
+    unsigned runOptions;
+
+  public:
+    int32_t reportGranularity;
+
+
+    JSLocaleCallbacks *localeCallbacks;
+
+    js::AutoResolving *resolvingList;
+
+
+    bool generatingError;
+
+
+    JSCompartment *compartment;
+
+    inline void setCompartment(JSCompartment *compartment);
+
+
+    js::ContextStack stack;
+
+
+    inline bool hasfp() const { return stack.hasfp(); }
+    inline js::StackFrame* fp() const { return stack.fp(); }
+    inline js::StackFrame* maybefp() const { return stack.maybefp(); }
+    inline js::FrameRegs& regs() const { return stack.regs(); }
+    inline js::FrameRegs* maybeRegs() const { return stack.maybeRegs(); }
+
+
+    void resetCompartment();
+
+
+    void wrapPendingException();
+
+  private:
+
+    js::ParseMapPool *parseMapPool_;
+
+  public:
+
+    JSObject *globalObject;
+
+
+    JSSharpObjectMap sharpObjectMap;
+    js::BusyArraysSet busyArrays;
+
+
+    JSArgumentFormatMap *argumentFormatMap;
+
+
+    char *lastMessage;
+
+
+    JSErrorReporter errorReporter;
+
+
+    JSOperationCallback operationCallback;
+
+
+    void *data;
+    void *data2;
+
+    inline js::RegExpStatics *regExpStatics();
+
+  public:
+    js::ParseMapPool &parseMapPool() {
+        do { } while(0);
+        return *parseMapPool_;
+    }
+
+    inline bool ensureParseMapPool();
+
+
+
+
+
+    inline bool canSetDefaultVersion() const;
+
+
+    inline void overrideVersion(JSVersion newVersion);
+
+
+    void setDefaultVersion(JSVersion version) {
+        defaultVersion = version;
+    }
+
+    void clearVersionOverride() { hasVersionOverride = false; }
+    JSVersion getDefaultVersion() const { return defaultVersion; }
+    bool isVersionOverridden() const { return hasVersionOverride; }
+
+    JSVersion getVersionOverride() const {
+        do { } while(0);
+        return versionOverride;
+    }
+
+
+
+
+
+    inline bool maybeOverrideVersion(JSVersion newVersion);
+
+
+
+
+
+    void maybeMigrateVersionOverride() {
+        do { } while(0);
+        if ((__builtin_expect((isVersionOverridden()), 0))) {
+            defaultVersion = versionOverride;
+            clearVersionOverride();
+        }
+    }
+# 1170 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+    inline JSVersion findVersion() const;
+
+    void setRunOptions(unsigned ropts) {
+        do { } while(0);
+        runOptions = ropts;
+    }
+
+
+    inline void setCompileOptions(unsigned newcopts);
+
+    unsigned getRunOptions() const { return runOptions; }
+    inline unsigned getCompileOptions() const;
+    inline unsigned allOptions() const;
+
+    bool hasRunOption(unsigned ropt) const {
+        do { } while(0);
+        return !!(runOptions & ropt);
+    }
+
+    bool hasStrictOption() const { return hasRunOption(((uint32_t)1 << (0))); }
+    bool hasWErrorOption() const { return hasRunOption(((uint32_t)1 << (1))); }
+    bool hasAtLineOption() const { return hasRunOption(((uint32_t)1 << (5))); }
+
+    js::LifoAlloc &tempLifoAlloc() { return runtime->tempLifoAlloc; }
+    inline js::LifoAlloc &typeLifoAlloc();
+
+    inline js::PropertyTree &propertyTree();
+
+
+    unsigned outstandingRequests;
+
+
+
+
+
+    unsigned resolveFlags;
+
+
+    int64_t rngSeed;
+
+
+    js::Value iterValue;
+
+
+    bool methodJitEnabled;
+
+    js::mjit::JaegerRuntime &jaegerRuntime() { return runtime->jaegerRuntime(); }
+
+
+    bool inferenceEnabled;
+
+    bool typeInferenceEnabled() { return inferenceEnabled; }
+
+
+    void updateJITEnabled();
+# 1239 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+    DSTOffsetCache dstOffsetCache;
+
+
+    JSObject *enumerators;
+
+  private:
+
+
+
+
+
+
+    js::Vector<JSGenerator *, 2, js::SystemAllocPolicy> genStack;
+
+  public:
+
+    JSGenerator *generatorFor(js::StackFrame *fp) const;
+
+
+    inline bool ensureGeneratorStackSpace();
+
+    bool enterGenerator(JSGenerator *gen) {
+        return genStack.append(gen);
+    }
+
+    void leaveGenerator(JSGenerator *gen) {
+        do { } while(0);
+        genStack.popBack();
+    }
+
+    inline void* malloc_(size_t bytes) {
+        return runtime->malloc_(bytes, this);
+    }
+
+    inline void* mallocNoReport(size_t bytes) {
+        do { } while(0);
+        return runtime->malloc_(bytes, __null);
+    }
+
+    inline void* calloc_(size_t bytes) {
+        return runtime->calloc_(bytes, this);
+    }
+
+    inline void* realloc_(void* p, size_t bytes) {
+        return runtime->realloc_(p, bytes, this);
+    }
+
+    inline void* realloc_(void* p, size_t oldBytes, size_t newBytes) {
+        return runtime->realloc_(p, oldBytes, newBytes, this);
+    }
+
+    inline void free_(void* p) {
+        runtime->free_(p);
+    }
+
+    template <class T> inline T *new_() { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T () : __null; } template <class T, class P1> inline T *new_(P1 p1) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1) : __null; } template <class T, class P1, class P2> inline T *new_(P1 p1, P2 p2) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2) : __null; } template <class T, class P1, class P2, class P3> inline T *new_(P1 p1, P2 p2, P3 p3) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3) : __null; } template <class T, class P1, class P2, class P3, class P4> inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5> inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6> inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7> inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8> inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9> inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10> inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11> inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) : __null; } template <class T, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12> inline T *new_(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12) { void *memory = malloc_(sizeof(T)); return memory ? new(memory) T (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) : __null; } static const int JSMinAlignment = 8; template <class T> inline T *array_new(size_t n) { uint64_t numBytes64 = uint64_t(JSMinAlignment) + uint64_t(sizeof(T)) * uint64_t(n); size_t numBytes = size_t(numBytes64); if (numBytes64 != numBytes) { do { } while(0); return __null; } void *memory = malloc_(numBytes); if (!memory) return __null; *(size_t *)memory = n; memory = (void*)(uintptr_t(memory) + JSMinAlignment); return new(memory) T[n]; }
+    template <class T> inline void delete_(T *p) { if (p) { p->~T(); free_(p); } } template <class T> inline void array_delete(T *p) { if (p) { void* p0 = (void *)(uintptr_t(p) - js::OffTheBooks::JSMinAlignment); size_t n = *(size_t *)p0; for (size_t i = 0; i < n; i++) (p + i)->~T(); free_(p0); } }
+
+    void purge();
+
+
+    inline void assertValidStackDepth(unsigned depth);
+
+    bool isExceptionPending() {
+        return throwing;
+    }
+
+    js::Value getPendingException() {
+        do { } while(0);
+        return exception;
+    }
+
+    void setPendingException(js::Value v);
+
+    void clearPendingException() {
+        this->throwing = false;
+        this->exception.setUndefined();
+    }
+# 1337 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+    unsigned activeCompilations;
+
+
+
+
+
+    bool runningWithTrustedPrincipals() const;
+
+    __attribute__((visibility("default"))) size_t sizeOfIncludingThis(JSMallocSizeOfFun mallocSizeOf) const;
+
+    static inline JSContext *fromLinkField(JSCList *link) {
+        do { } while(0);
+        return reinterpret_cast<JSContext *>(uintptr_t(link) - __builtin_offsetof (JSContext, link));
+    }
+
+    void mark(JSTracer *trc);
+
+  private:
+
+
+
+
+
+
+    __attribute__((visibility("default"))) void checkMallocGCPressure(void *p);
+};
+
+namespace js {
+
+class AutoAllowUnaliasedVarAccess
+{
+    JSContext *cx;
+  public:
+    AutoAllowUnaliasedVarAccess(JSContext *cx) : cx(cx) {
+
+
+
+    }
+    ~AutoAllowUnaliasedVarAccess() {
+
+
+
+
+    }
+};
+
+struct AutoResolving {
+  public:
+    enum Kind {
+        LOOKUP,
+        WATCH
+    };
+
+    AutoResolving(JSContext *cx, JSObject *obj, jsid id, Kind kind = LOOKUP
+                  )
+      : context(cx), object(obj), id(id), kind(kind), link(cx->resolvingList)
+    {
+        do { } while (0);
+        do { } while(0);
+        cx->resolvingList = this;
+    }
+
+    ~AutoResolving() {
+        do { } while(0);
+        context->resolvingList = link;
+    }
+
+    bool alreadyStarted() const {
+        return link && alreadyStartedSlow();
+    }
+
+  private:
+    bool alreadyStartedSlow() const;
+
+    JSContext *const context;
+    JSObject *const object;
+    jsid const id;
+    Kind const kind;
+    AutoResolving *const link;
+   
+};
+
+
+class AutoXMLRooter : private AutoGCRooter {
+  public:
+    AutoXMLRooter(JSContext *cx, JSXML *xml
+                  )
+      : AutoGCRooter(cx, XML), xml(xml)
+    {
+        do { } while (0);
+        do { } while(0);
+    }
+
+    friend void AutoGCRooter::trace(JSTracer *trc);
+
+  private:
+    JSXML * const xml;
+   
+};
+
+
+
+#define JS_LOCK_GC(rt) PR_Lock((rt)->gcLock)
+#define JS_UNLOCK_GC(rt) PR_Unlock((rt)->gcLock)
+
+
+
+
+
+class AutoLockGC
+{
+  public:
+    explicit AutoLockGC(JSRuntime *rt = __null
+                        )
+      : runtime(rt)
+    {
+        do { } while (0);
+
+
+        if (rt)
+            PR_Lock((rt)->gcLock);
+
+    }
+
+    ~AutoLockGC()
+    {
+
+        if (runtime)
+            PR_Unlock((runtime)->gcLock);
+
+    }
+
+    bool locked() const {
+        return !!runtime;
+    }
+
+    void lock(JSRuntime *rt) {
+        do { } while(0);
+        do { } while(0);
+        runtime = rt;
+        PR_Lock((rt)->gcLock);
+    }
+
+  private:
+    JSRuntime *runtime;
+   
+};
+
+class AutoUnlockGC {
+  private:
+    JSRuntime *rt;
+   
+
+  public:
+    explicit AutoUnlockGC(JSRuntime *rt
+                          )
+      : rt(rt)
+    {
+        do { } while (0);
+        PR_Unlock((rt)->gcLock);
+    }
+    ~AutoUnlockGC() { PR_Lock((rt)->gcLock); }
+};
+
+class AutoKeepAtoms {
+    JSRuntime *rt;
+   
+
+  public:
+    explicit AutoKeepAtoms(JSRuntime *rt
+                           )
+      : rt(rt)
+    {
+        do { } while (0);
+        (rt)->gcKeepAtoms++;;
+    }
+    ~AutoKeepAtoms() { (rt)->gcKeepAtoms--;; }
+};
+
+class AutoReleasePtr {
+    JSContext *cx;
+    void *ptr;
+   
+
+    AutoReleasePtr(const AutoReleasePtr &other) ;
+    AutoReleasePtr operator=(const AutoReleasePtr &other) ;
+
+  public:
+    explicit AutoReleasePtr(JSContext *cx, void *ptr
+                            )
+      : cx(cx), ptr(ptr)
+    {
+        do { } while (0);
+    }
+    ~AutoReleasePtr() { cx->free_(ptr); }
+};
+
+
+
+
+class AutoReleaseNullablePtr {
+    JSContext *cx;
+    void *ptr;
+   
+
+    AutoReleaseNullablePtr(const AutoReleaseNullablePtr &other) ;
+    AutoReleaseNullablePtr operator=(const AutoReleaseNullablePtr &other) ;
+
+  public:
+    explicit AutoReleaseNullablePtr(JSContext *cx, void *ptr
+                                    )
+      : cx(cx), ptr(ptr)
+    {
+        do { } while (0);
+    }
+    void reset(void *ptr2) {
+        if (ptr)
+            cx->free_(ptr);
+        ptr = ptr2;
+    }
+    ~AutoReleaseNullablePtr() { if (ptr) cx->free_(ptr); }
+};
+
+}
+
+class JSAutoResolveFlags
+{
+  public:
+    JSAutoResolveFlags(JSContext *cx, unsigned flags
+                       )
+      : mContext(cx), mSaved(cx->resolveFlags)
+    {
+        do { } while (0);
+        cx->resolveFlags = flags;
+    }
+
+    ~JSAutoResolveFlags() { mContext->resolveFlags = mSaved; }
+
+  private:
+    JSContext *mContext;
+    unsigned mSaved;
+   
+};
+
+namespace js {
+
+
+
+
+class ContextIter {
+    JSCList *begin;
+    JSCList *end;
+
+public:
+    explicit ContextIter(JSRuntime *rt) {
+        end = &rt->contextList;
+        begin = end->next;
+    }
+
+    bool done() const {
+        return begin == end;
+    }
+
+    void next() {
+        do { } while(0);
+        begin = begin->next;
+    }
+
+    JSContext *get() const {
+        do { } while(0);
+        return JSContext::fromLinkField(begin);
+    }
+
+    operator JSContext *() const {
+        return get();
+    }
+
+    JSContext *operator ->() const {
+        return get();
+    }
+};
+
+
+
+
+
+extern JSContext *
+NewContext(JSRuntime *rt, size_t stackChunkSize);
+
+enum DestroyContextMode {
+    DCM_NO_GC,
+    DCM_FORCE_GC,
+    DCM_NEW_FAILED
+};
+
+extern void
+DestroyContext(JSContext *cx, DestroyContextMode mode);
+
+}
+# 1653 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+namespace js {
+
+
+extern void
+ReportUsageError(JSContext *cx, JSObject *callee, const char *msg);
+
+}
+
+extern void
+js_ReportOutOfMemory(JSContext *cx);
+
+extern __attribute__((visibility("default"))) void
+js_ReportAllocationOverflow(JSContext *cx);
+
+
+
+
+
+extern __attribute__((visibility("default"))) void
+js_ReportErrorAgain(JSContext *cx, const char *message, JSErrorReport *report);
+
+extern void
+js_ReportIsNotDefined(JSContext *cx, const char *name);
+
+
+
+
+extern JSBool
+js_ReportIsNullOrUndefined(JSContext *cx, int spindex, const js::Value &v,
+                           JSString *fallback);
+
+extern void
+js_ReportMissingArg(JSContext *cx, const js::Value &v, unsigned arg);
+
+
+
+
+
+
+extern JSBool
+js_ReportValueErrorFlags(JSContext *cx, unsigned flags, const unsigned errorNumber,
+                         int spindex, const js::Value &v, JSString *fallback,
+                         const char *arg1, const char *arg2);
+
+#define js_ReportValueError(cx,errorNumber,spindex,v,fallback) ((void)js_ReportValueErrorFlags(cx, JSREPORT_ERROR, errorNumber, spindex, v, fallback, NULL, NULL))
+
+
+
+#define js_ReportValueError2(cx,errorNumber,spindex,v,fallback,arg1) ((void)js_ReportValueErrorFlags(cx, JSREPORT_ERROR, errorNumber, spindex, v, fallback, arg1, NULL))
+
+
+
+#define js_ReportValueError3(cx,errorNumber,spindex,v,fallback,arg1,arg2) ((void)js_ReportValueErrorFlags(cx, JSREPORT_ERROR, errorNumber, spindex, v, fallback, arg1, arg2))
+
+
+
+extern JSErrorFormatString js_ErrorFormatString[JSErr_Limit];
+
+
+#define JS_ASSERT_REQUEST_DEPTH(cx) JS_ASSERT((cx)->runtime->requestDepth >= 1)
+# 1721 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+extern JSBool
+js_InvokeOperationCallback(JSContext *cx);
+
+extern JSBool
+js_HandleExecutionInterrupt(JSContext *cx);
+
+extern jsbytecode*
+js_GetCurrentBytecodePC(JSContext* cx);
+
+extern JSScript *
+js_GetCurrentScript(JSContext* cx);
+
+
+
+
+
+
+static __attribute__((always_inline)) inline bool
+JS_CHECK_OPERATION_LIMIT(JSContext *cx)
+{
+    do { } while(0);
+    return !cx->runtime->interrupt || js_InvokeOperationCallback(cx);
+}
+
+namespace js {
+
+
+namespace mjit {
+    void ExpandInlineFrames(JSCompartment *compartment);
+}
+
+
+}
+
+
+enum FrameExpandKind {
+    FRAME_EXPAND_NONE = 0,
+    FRAME_EXPAND_ALL = 1
+};
+
+namespace js {
+
+
+
+static __attribute__((always_inline)) inline void
+MakeRangeGCSafe(Value *vec, size_t len)
+{
+    PodZero(vec, len);
+}
+
+static __attribute__((always_inline)) inline void
+MakeRangeGCSafe(Value *beg, Value *end)
+{
+    PodZero(beg, end - beg);
+}
+
+static __attribute__((always_inline)) inline void
+MakeRangeGCSafe(jsid *beg, jsid *end)
+{
+    for (jsid *id = beg; id != end; ++id)
+        *id = INT_TO_JSID(0);
+}
+
+static __attribute__((always_inline)) inline void
+MakeRangeGCSafe(jsid *vec, size_t len)
+{
+    MakeRangeGCSafe(vec, vec + len);
+}
+
+static __attribute__((always_inline)) inline void
+MakeRangeGCSafe(const Shape **beg, const Shape **end)
+{
+    PodZero(beg, end - beg);
+}
+
+static __attribute__((always_inline)) inline void
+MakeRangeGCSafe(const Shape **vec, size_t len)
+{
+    PodZero(vec, len);
+}
+
+static __attribute__((always_inline)) inline void
+SetValueRangeToUndefined(Value *beg, Value *end)
+{
+    for (Value *v = beg; v != end; ++v)
+        v->setUndefined();
+}
+
+static __attribute__((always_inline)) inline void
+SetValueRangeToUndefined(Value *vec, size_t len)
+{
+    SetValueRangeToUndefined(vec, vec + len);
+}
+
+static __attribute__((always_inline)) inline void
+SetValueRangeToNull(Value *beg, Value *end)
+{
+    for (Value *v = beg; v != end; ++v)
+        v->setNull();
+}
+
+static __attribute__((always_inline)) inline void
+SetValueRangeToNull(Value *vec, size_t len)
+{
+    SetValueRangeToNull(vec, vec + len);
+}
+
+class AutoObjectVector : public AutoVectorRooter<JSObject *>
+{
+  public:
+    explicit AutoObjectVector(JSContext *cx
+                              )
+        : AutoVectorRooter<JSObject *>(cx, OBJVECTOR)
+    {
+        do { } while (0);
+    }
+
+   
+};
+
+class AutoShapeVector : public AutoVectorRooter<const Shape *>
+{
+  public:
+    explicit AutoShapeVector(JSContext *cx
+                             )
+        : AutoVectorRooter<const Shape *>(cx, SHAPEVECTOR)
+    {
+        do { } while (0);
+    }
+
+   
+};
+
+class AutoValueArray : public AutoGCRooter
+{
+    js::Value *start_;
+    unsigned length_;
+    SkipRoot skip;
+
+  public:
+    AutoValueArray(JSContext *cx, js::Value *start, unsigned length
+                   )
+      : AutoGCRooter(cx, VALARRAY), start_(start), length_(length), skip(cx, start, length)
+    {
+        do { } while (0);
+    }
+
+    Value *start() { return start_; }
+    unsigned length() const { return length_; }
+
+   
+};
+# 1885 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h"
+class RuntimeAllocPolicy
+{
+    JSRuntime *const runtime;
+
+  public:
+    RuntimeAllocPolicy(JSRuntime *rt) : runtime(rt) {}
+    RuntimeAllocPolicy(JSContext *cx) : runtime(cx->runtime) {}
+    void *malloc_(size_t bytes) { return runtime->malloc_(bytes); }
+    void *realloc_(void *p, size_t bytes) { return runtime->realloc_(p, bytes); }
+    void free_(void *p) { runtime->free_(p); }
+    void reportAllocOverflow() const {}
+};
+
+
+
+
+class ContextAllocPolicy
+{
+    JSContext *const cx;
+
+  public:
+    ContextAllocPolicy(JSContext *cx) : cx(cx) {}
+    JSContext *context() const { return cx; }
+    void *malloc_(size_t bytes) { return cx->malloc_(bytes); }
+    void *realloc_(void *p, size_t oldBytes, size_t bytes) { return cx->realloc_(p, oldBytes, bytes); }
+    void free_(void *p) { cx->free_(p); }
+    void reportAllocOverflow() const { js_ReportAllocationOverflow(cx); }
+};
+
+}
+# 13 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsarray.h" 2
+
+
+
+
+
+
+const unsigned MIN_SPARSE_INDEX = 256;
+
+namespace js {
+
+const uint32_t MAX_ARRAY_INDEX = 4294967294u;
+}
+
+inline JSBool
+js_IdIsIndex(jsid id, uint32_t *indexp)
+{
+    if (JSID_IS_INT(id)) {
+        int32_t i = JSID_TO_INT(id);
+        if (i < 0)
+            return (int)0;
+        *indexp = (uint32_t)i;
+        return (int)1;
+    }
+
+    if ((__builtin_expect((!JSID_IS_STRING(id)), 0)))
+        return (int)0;
+
+    return js::StringIsArrayIndex(JSID_TO_ATOM(id), indexp);
+}
+
+extern JSObject *
+js_InitArrayClass(JSContext *cx, JSObject *obj);
+
+extern bool
+js_InitContextBusyArrayTable(JSContext *cx);
+
+namespace js {
+
+
+extern JSObject *
+NewDenseEmptyArray(JSContext *cx, JSObject *proto=__null);
+
+
+extern JSObject *
+NewDenseAllocatedArray(JSContext *cx, uint32_t length, JSObject *proto=__null);
+
+
+
+
+
+
+extern JSObject *
+NewDenseAllocatedEmptyArray(JSContext *cx, uint32_t length, JSObject *proto=__null);
+
+
+
+
+
+extern JSObject *
+NewDenseUnallocatedArray(JSContext *cx, uint32_t length, JSObject *proto=__null);
+
+
+extern JSObject *
+NewDenseCopiedArray(JSContext *cx, uint32_t length, const Value *vp, JSObject *proto = __null);
+
+
+extern JSObject *
+NewSlowEmptyArray(JSContext *cx);
+
+}
+
+extern JSBool
+js_GetLengthProperty(JSContext *cx, JSObject *obj, uint32_t *lengthp);
+
+extern JSBool
+js_SetLengthProperty(JSContext *cx, JSObject *obj, double length);
+
+namespace js {
+
+extern JSBool
+array_defineElement(JSContext *cx, HandleObject obj, uint32_t index, const Value *value,
+                    PropertyOp getter, StrictPropertyOp setter, unsigned attrs);
+
+extern JSBool
+array_deleteElement(JSContext *cx, HandleObject obj, uint32_t index, Value *rval, JSBool strict);
+
+
+
+
+
+
+
+extern bool
+GetElements(JSContext *cx, HandleObject aobj, uint32_t length, js::Value *vp);
+
+
+
+extern JSBool
+array_sort(JSContext *cx, unsigned argc, js::Value *vp);
+
+extern JSBool
+array_push(JSContext *cx, unsigned argc, js::Value *vp);
+
+extern JSBool
+array_pop(JSContext *cx, unsigned argc, js::Value *vp);
+
+extern JSBool
+array_concat(JSContext *cx, unsigned argc, js::Value *vp);
+
+extern JSBool
+array_shift(JSContext *cx, unsigned argc, js::Value *vp);
+
+}
+# 139 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsarray.h"
+extern JSBool
+js_NewbornArrayPush(JSContext *cx, js::HandleObject obj, const js::Value &v);
+
+JSBool
+js_PrototypeHasIndexedProperties(JSContext *cx, JSObject *obj);
+
+
+
+
+JSBool
+js_GetDenseArrayElementValue(JSContext *cx, JSObject *obj, jsid id,
+                             js::Value *vp);
+
+
+JSBool
+js_Array(JSContext *cx, unsigned argc, js::Value *vp);
+# 15 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsbool.h" 1
+
+
+
+
+
+
+
+#define jsbool_h___ 
+
+
+
+
+
+
+
+extern JSObject *
+js_InitBooleanClass(JSContext *cx, JSObject *obj);
+
+extern JSString *
+js_BooleanToString(JSContext *cx, JSBool b);
+
+namespace js {
+
+inline bool
+BooleanGetPrimitiveValue(JSContext *cx, JSObject &obj, Value *vp);
+
+}
+
+extern JSBool
+js_ValueToBoolean(const js::Value &v);
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfun.h" 1
+# 18 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsiter.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsiter.h"
+#define jsiter_h___ 
+
+
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h" 1
+# 42 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_VERSION_ECMA_3 148
+#define JS_VERSION_ECMA_3_TEST 149
+# 124 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_HAS_STR_HTML_HELPERS 1
+#define JS_HAS_OBJ_PROTO_PROP 1
+#define JS_HAS_OBJ_WATCHPOINT 1
+#define JS_HAS_TOSOURCE 1
+#define JS_HAS_CATCH_GUARD 1
+#define JS_HAS_UNEVAL 1
+#define JS_HAS_CONST 1
+#define JS_HAS_FUN_EXPR_STMT 1
+#define JS_HAS_NO_SUCH_METHOD 1
+#define JS_HAS_GENERATORS 1
+#define JS_HAS_BLOCK_SCOPE 1
+#define JS_HAS_DESTRUCTURING 2
+#define JS_HAS_GENERATOR_EXPRS 1
+#define JS_HAS_EXPR_CLOSURES 1
+# 146 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsversion.h"
+#define JS_HAS_NEW_GLOBAL_OBJECT 1
+
+
+#define JS_HAS_MAKE_SYSTEM_OBJECT 1
+
+
+#define JS_HAS_DESTRUCTURING_SHORTHAND (JS_HAS_DESTRUCTURING == 2)
+
+
+
+
+
+#define OLD_GETTER_SETTER_METHODS 1
+
+
+#define USE_NEW_OBJECT_REPRESENTATION 0
+
+
+
+
+#define NEW_OBJECT_REPRESENTATION_ONLY() MOZ_NOT_REACHED("don't call this!  to be used in the new object representation")
+# 18 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsiter.h" 2
+# 26 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsiter.h"
+#define JSITER_ACTIVE 0x1000
+#define JSITER_UNREUSABLE 0x2000
+
+namespace js {
+
+struct NativeIterator {
+    HeapPtrObject obj;
+    HeapPtr<JSFlatString> *props_array;
+    HeapPtr<JSFlatString> *props_cursor;
+    HeapPtr<JSFlatString> *props_end;
+    const Shape **shapes_array;
+    uint32_t shapes_length;
+    uint32_t shapes_key;
+    uint32_t flags;
+    JSObject *next;
+
+    bool isKeyIter() const { return (flags & 0x2) == 0; }
+
+    inline HeapPtr<JSFlatString> *begin() const {
+        return props_array;
+    }
+
+    inline HeapPtr<JSFlatString> *end() const {
+        return props_end;
+    }
+
+    size_t numKeys() const {
+        return end() - begin();
+    }
+
+    HeapPtr<JSFlatString> *current() const {
+        do { } while(0);
+        return props_cursor;
+    }
+
+    void incCursor() {
+        props_cursor = props_cursor + 1;
+    }
+
+    static NativeIterator *allocateIterator(JSContext *cx, uint32_t slength,
+                                            const js::AutoIdVector &props);
+    void init(JSObject *obj, unsigned flags, uint32_t slength, uint32_t key);
+
+    void mark(JSTracer *trc);
+};
+
+class ElementIteratorObject : public JSObject {
+  public:
+    enum {
+        TargetSlot,
+        IndexSlot,
+        NumSlots
+    };
+
+    static JSObject *create(JSContext *cx, HandleObject target);
+
+    inline uint32_t getIndex() const;
+    inline void setIndex(uint32_t index);
+    inline JSObject *getTargetObject() const;
+# 130 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsiter.h"
+    bool iteratorNext(JSContext *cx, Value *vp);
+};
+
+bool
+VectorToIdArray(JSContext *cx, AutoIdVector &props, JSIdArray **idap);
+
+bool
+GetIterator(JSContext *cx, HandleObject obj, unsigned flags, Value *vp);
+
+bool
+VectorToKeyIterator(JSContext *cx, HandleObject obj, unsigned flags, AutoIdVector &props, Value *vp);
+
+bool
+VectorToValueIterator(JSContext *cx, HandleObject obj, unsigned flags, AutoIdVector &props, Value *vp);
+
+
+
+
+
+bool
+EnumeratedIdVectorToIterator(JSContext *cx, HandleObject obj, unsigned flags, AutoIdVector &props, Value *vp);
+
+
+
+
+
+
+
+extern JSBool
+ValueToIterator(JSContext *cx, unsigned flags, Value *vp);
+
+extern bool
+CloseIterator(JSContext *cx, JSObject *iterObj);
+
+extern bool
+UnwindIteratorForException(JSContext *cx, JSObject *obj);
+
+extern void
+UnwindIteratorForUncatchableException(JSContext *cx, JSObject *obj);
+
+}
+
+extern bool
+js_SuppressDeletedProperty(JSContext *cx, js::HandleObject obj, jsid id);
+
+extern bool
+js_SuppressDeletedElement(JSContext *cx, js::HandleObject obj, uint32_t index);
+
+extern bool
+js_SuppressDeletedElements(JSContext *cx, js::HandleObject obj, uint32_t begin, uint32_t end);
+
+
+
+
+
+
+extern JSBool
+js_IteratorMore(JSContext *cx, js::HandleObject iterobj, js::Value *rval);
+
+extern JSBool
+js_IteratorNext(JSContext *cx, JSObject *iterobj, js::Value *rval);
+
+extern JSBool
+js_ThrowStopIteration(JSContext *cx);
+
+namespace js {
+
+
+
+
+
+
+
+inline bool
+Next(JSContext *cx, HandleObject iter, Value *vp)
+{
+    if (!js_IteratorMore(cx, iter, vp))
+        return false;
+    if (vp->toBoolean())
+        return js_IteratorNext(cx, iter, vp);
+    vp->setMagic(JS_NO_ITER_VALUE);
+    return true;
+}
+# 226 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsiter.h"
+template <class Op>
+bool
+ForOf(JSContext *cx, const Value &iterable, Op op)
+{
+    Value iterv(iterable);
+    if (!ValueToIterator(cx, 0x20, &iterv))
+        return false;
+    RootedObject iter(cx, &iterv.toObject());
+
+    bool ok = true;
+    while (ok) {
+        Value v;
+        ok = Next(cx, iter, &v);
+        if (ok) {
+            if (v.isMagic(JS_NO_ITER_VALUE))
+                break;
+            ok = op(cx, v);
+        }
+    }
+
+    bool throwing = !ok && cx->isExceptionPending();
+    Value exc;
+    if (throwing) {
+        exc = cx->getPendingException();
+        cx->clearPendingException();
+    }
+    bool closedOK = CloseIterator(cx, iter);
+    if (throwing && closedOK)
+        cx->setPendingException(exc);
+    return ok && closedOK;
+}
+
+}
+
+
+
+
+
+
+typedef enum JSGeneratorState {
+    JSGEN_NEWBORN,
+    JSGEN_OPEN,
+    JSGEN_RUNNING,
+    JSGEN_CLOSING,
+    JSGEN_CLOSED
+} JSGeneratorState;
+
+struct JSGenerator {
+    js::HeapPtrObject obj;
+    JSGeneratorState state;
+    js::FrameRegs regs;
+    JSObject *enumerators;
+    js::StackFrame *floating;
+    js::HeapValue floatingStack[1];
+
+    js::StackFrame *floatingFrame() {
+        return floating;
+    }
+
+    js::StackFrame *liveFrame() {
+        do { } while(0)
+                                                 ;
+        return regs.fp();
+    }
+};
+
+extern JSObject *
+js_NewGenerator(JSContext *cx);
+# 306 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsiter.h"
+inline js::StackFrame *
+js_FloatingFrameIfGenerator(JSContext *cx, js::StackFrame *fp)
+{
+    if ((__builtin_expect((fp->isGeneratorFrame()), 0)))
+        return cx->generatorFor(fp)->floatingFrame();
+    return fp;
+}
+
+
+extern JSGenerator *
+js_FloatingFrameToGenerator(js::StackFrame *fp);
+
+inline js::StackFrame *
+js_LiveFrameIfGenerator(js::StackFrame *fp)
+{
+    return fp->isGeneratorFrame() ? js_FloatingFrameToGenerator(fp)->liveFrame() : fp;
+}
+
+
+
+extern JSObject *
+js_InitIteratorClasses(JSContext *cx, JSObject *obj);
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsnum.h" 1
+
+
+
+
+
+
+
+#define jsnum_h___ 
+
+
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/NumericConversions.h" 1
+# 17 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsnum.h" 2
+
+extern double js_NaN;
+extern double js_PositiveInfinity;
+extern double js_NegativeInfinity;
+
+namespace js {
+
+extern bool
+InitRuntimeNumberState(JSRuntime *rt);
+
+extern void
+FinishRuntimeNumberState(JSRuntime *rt);
+
+}
+
+
+extern JSObject *
+js_InitNumberClass(JSContext *cx, JSObject *obj);
+
+
+
+
+extern const char js_isNaN_str[];
+extern const char js_isFinite_str[];
+extern const char js_parseFloat_str[];
+extern const char js_parseInt_str[];
+
+class JSString;
+class JSFixedString;
+
+
+
+
+
+
+extern JSString *
+js_NumberToString(JSContext *cx, double d);
+
+namespace js {
+
+extern JSFixedString *
+Int32ToString(JSContext *cx, int32_t i);
+
+
+
+
+
+extern bool
+NumberValueToStringBuffer(JSContext *cx, const Value &v, StringBuffer &sb);
+
+
+extern JSFixedString *
+NumberToString(JSContext *cx, double d);
+
+extern JSFixedString *
+IndexToString(JSContext *cx, uint32_t index);
+
+
+
+
+
+
+struct ToCStringBuf
+{
+
+
+
+
+
+    static const size_t sbufSize = 34;
+    char sbuf[sbufSize];
+    char *dbuf;
+
+    ToCStringBuf();
+    ~ToCStringBuf();
+};
+
+
+
+
+
+
+
+extern char *
+NumberToCString(JSContext *cx, ToCStringBuf *cbuf, double d, int base = 10);
+
+
+
+
+
+const double DOUBLE_INTEGRAL_PRECISION_LIMIT = uint64_t(1) << 53;
+# 121 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsnum.h"
+extern bool
+GetPrefixInteger(JSContext *cx, const jschar *start, const jschar *end, int base,
+                 const jschar **endp, double *dp);
+
+
+__attribute__((always_inline)) inline bool
+ToNumber(JSContext *cx, Value *vp)
+{
+    if (vp->isNumber())
+        return true;
+    double d;
+    extern bool ToNumberSlow(JSContext *cx, js::Value v, double *dp);
+    if (!ToNumberSlow(cx, *vp, &d))
+        return false;
+    vp->setNumber(d);
+    return true;
+}
+
+
+
+
+
+
+
+__attribute__((always_inline)) inline bool
+ToUint32(JSContext *cx, const js::Value &v, uint32_t *out)
+{
+    if (v.isInt32()) {
+        *out = (uint32_t)v.toInt32();
+        return true;
+    }
+    extern bool ToUint32Slow(JSContext *cx, const js::Value &v, uint32_t *ip);
+    return ToUint32Slow(cx, v, out);
+}
+
+
+
+
+
+
+__attribute__((always_inline)) inline bool
+ValueToUint16(JSContext *cx, const js::Value &v, uint16_t *out)
+{
+    if (v.isInt32()) {
+        *out = uint16_t(v.toInt32());
+        return true;
+    }
+    extern bool ValueToUint16Slow(JSContext *cx, const js::Value &v, uint16_t *out);
+    return ValueToUint16Slow(cx, v, out);
+}
+
+JSBool
+num_parseInt(JSContext *cx, unsigned argc, Value *vp);
+
+}
+# 187 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsnum.h"
+extern JSBool
+js_strtod(JSContext *cx, const jschar *s, const jschar *send,
+          const jschar **ep, double *dp);
+
+extern JSBool
+js_num_valueOf(JSContext *cx, unsigned argc, js::Value *vp);
+
+namespace js {
+
+static __attribute__((always_inline)) inline bool
+ValueFitsInInt32(const Value &v, int32_t *pi)
+{
+    if (v.isInt32()) {
+        *pi = v.toInt32();
+        return true;
+    }
+    return v.isDouble() && MOZ_DOUBLE_IS_INT32(v.toDouble(), pi);
+}
+# 215 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsnum.h"
+static __attribute__((always_inline)) inline bool
+IsDefinitelyIndex(const Value &v, uint32_t *indexp)
+{
+    if (v.isInt32() && v.toInt32() >= 0) {
+        *indexp = v.toInt32();
+        return true;
+    }
+
+    int32_t i;
+    if (v.isDouble() && MOZ_DOUBLE_IS_INT32(v.toDouble(), &i) && i >= 0) {
+        *indexp = uint32_t(i);
+        return true;
+    }
+
+    return false;
+}
+
+
+static inline bool
+ToInteger(JSContext *cx, const js::Value &v, double *dp)
+{
+    if (v.isInt32()) {
+        *dp = v.toInt32();
+        return true;
+    }
+    if (v.isDouble()) {
+        *dp = v.toDouble();
+    } else {
+        extern bool ToNumberSlow(JSContext *cx, Value v, double *dp);
+        if (!ToNumberSlow(cx, v, dp))
+            return false;
+    }
+    *dp = ToInteger(*dp);
+    return true;
+}
+
+}
+# 21 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+#define _JSPROBES_H 
+# 20 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h"
+#define jsjaeger_h__ 
+
+
+#define JSGC_INCREMENTAL_MJ 
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxt.h" 1
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscompartment.h" 1
+
+
+
+
+
+
+#define jscompartment_h___ 
+# 17 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscompartment.h"
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/GlobalObject.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/GlobalObject.h"
+#define GlobalObject_h___ 
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsarray.h" 1
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/GlobalObject.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsbool.h" 1
+# 15 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/GlobalObject.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsexn.h" 1
+# 12 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsexn.h"
+#define jsexn_h___ 
+
+
+
+
+
+
+extern JSObject *
+js_InitExceptionClasses(JSContext *cx, JSObject *obj);
+# 30 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsexn.h"
+extern JSBool
+js_ErrorToException(JSContext *cx, const char *message, JSErrorReport *reportp,
+                    JSErrorCallback callback, void *userRef);
+# 50 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsexn.h"
+extern JSBool
+js_ReportUncaughtException(JSContext *cx);
+
+extern JSErrorReport *
+js_ErrorFromException(JSContext *cx, jsval exn);
+
+extern const JSErrorFormatString *
+js_GetLocalizedErrorMessage(JSContext* cx, void *userRef, const char *locale,
+                            const unsigned errorNumber);
+# 68 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsexn.h"
+extern JSObject *
+js_CopyErrorObject(JSContext *cx, js::HandleObject errobj, js::HandleObject scope);
+
+static inline JSProtoKey
+GetExceptionProtoKey(int exn)
+{
+    do { } while(0);
+    do { } while(0);
+    return JSProtoKey(JSProto_Error + exn);
+}
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/GlobalObject.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsiter.h" 1
+# 18 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/GlobalObject.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsnum.h" 1
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/GlobalObject.h" 2
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/builtin/RegExp.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/builtin/RegExp.h"
+#define RegExp_h___ 
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprvtd.h" 1
+# 12 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/builtin/RegExp.h" 2
+
+JSObject *
+js_InitRegExpClass(JSContext *cx, JSObject *obj);
+
+
+
+
+
+
+namespace js {
+
+
+
+
+
+
+bool
+ExecuteRegExp(JSContext *cx, RegExpStatics *res, RegExpObject &reobj,
+              JSLinearString *input, const jschar *chars, size_t length,
+              size_t *lastIndex, RegExpExecType type, Value *rval);
+
+bool
+ExecuteRegExp(JSContext *cx, RegExpStatics *res, RegExpShared &shared,
+              JSLinearString *input, const jschar *chars, size_t length,
+              size_t *lastIndex, RegExpExecType type, Value *rval);
+
+extern JSBool
+regexp_exec(JSContext *cx, unsigned argc, Value *vp);
+
+extern JSBool
+regexp_test(JSContext *cx, unsigned argc, Value *vp);
+
+}
+# 23 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/GlobalObject.h" 2
+
+extern JSObject *
+js_InitObjectClass(JSContext *cx, JSObject *obj);
+
+extern JSObject *
+js_InitFunctionClass(JSContext *cx, JSObject *obj);
+
+extern JSObject *
+js_InitTypedArrayClasses(JSContext *cx, JSObject *obj);
+
+namespace js {
+
+class Debugger;
+# 64 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/GlobalObject.h"
+class GlobalObject : public JSObject
+{
+
+
+
+
+    static const unsigned STANDARD_CLASS_SLOTS = JSProto_LIMIT * 3;
+
+
+    static const unsigned THROWTYPEERROR = STANDARD_CLASS_SLOTS;
+    static const unsigned GENERATOR_PROTO = THROWTYPEERROR + 1;
+    static const unsigned REGEXP_STATICS = GENERATOR_PROTO + 1;
+    static const unsigned FUNCTION_NS = REGEXP_STATICS + 1;
+    static const unsigned RUNTIME_CODEGEN_ENABLED = FUNCTION_NS + 1;
+    static const unsigned EVAL = RUNTIME_CODEGEN_ENABLED + 1;
+    static const unsigned FLAGS = EVAL + 1;
+    static const unsigned DEBUGGERS = FLAGS + 1;
+
+
+    static const unsigned RESERVED_SLOTS = DEBUGGERS + 1;
+
+    void staticAsserts() {
+
+
+
+
+
+        typedef int moz_static_assert102[((JSProto_LIMIT * 3 + 8) == RESERVED_SLOTS) ? 1 : -1];
+    }
+
+    static const int32_t FLAGS_CLEARED = 0x1;
+
+    inline void setFlags(int32_t flags);
+    inline void initFlags(int32_t flags);
+
+    friend JSObject *
+    ::js_InitObjectClass(JSContext *cx, JSObject *obj);
+    friend JSObject *
+    ::js_InitFunctionClass(JSContext *cx, JSObject *obj);
+
+
+    JSObject *
+    initFunctionAndObjectClasses(JSContext *cx);
+
+    inline void setDetailsForKey(JSProtoKey key, JSObject *ctor, JSObject *proto);
+    inline void setObjectClassDetails(JSFunction *ctor, JSObject *proto);
+    inline void setFunctionClassDetails(JSFunction *ctor, JSObject *proto);
+
+    inline void setThrowTypeError(JSFunction *fun);
+
+    inline void setOriginalEval(JSObject *evalobj);
+
+    Value getConstructor(JSProtoKey key) const {
+        do { } while(0);
+        return getSlot(key);
+    }
+
+    Value getPrototype(JSProtoKey key) const {
+        do { } while(0);
+        return getSlot(JSProto_LIMIT + key);
+    }
+
+    bool classIsInitialized(JSProtoKey key) const {
+        bool inited = !getConstructor(key).isUndefined();
+        do { } while(0);
+        return inited;
+    }
+
+    bool functionObjectClassesInitialized() const {
+        bool inited = classIsInitialized(JSProto_Function);
+        do { } while(0);
+        return inited;
+    }
+
+    bool arrayClassInitialized() const {
+        return classIsInitialized(JSProto_Array);
+    }
+
+    bool booleanClassInitialized() const {
+        return classIsInitialized(JSProto_Boolean);
+    }
+    bool numberClassInitialized() const {
+        return classIsInitialized(JSProto_Number);
+    }
+    bool stringClassInitialized() const {
+        return classIsInitialized(JSProto_String);
+    }
+    bool regexpClassInitialized() const {
+        return classIsInitialized(JSProto_RegExp);
+    }
+    bool arrayBufferClassInitialized() const {
+        return classIsInitialized(JSProto_ArrayBuffer);
+    }
+    bool errorClassesInitialized() const {
+        return classIsInitialized(JSProto_Error);
+    }
+
+  public:
+    static GlobalObject *create(JSContext *cx, Class *clasp);
+
+
+
+
+
+    JSFunction *
+    createConstructor(JSContext *cx, JSNative ctor, JSAtom *name, unsigned length,
+                      gc::AllocKind kind = JSFunction::FinalizeKind);
+# 180 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/GlobalObject.h"
+    JSObject *createBlankPrototype(JSContext *cx, js::Class *clasp);
+
+
+
+
+
+    JSObject *createBlankPrototypeInheriting(JSContext *cx, js::Class *clasp, JSObject &proto);
+
+    JSObject *getOrCreateObjectPrototype(JSContext *cx) {
+        if (functionObjectClassesInitialized())
+            return &getPrototype(JSProto_Object).toObject();
+        Rooted<GlobalObject*> self(cx, this);
+        if (!initFunctionAndObjectClasses(cx))
+            return __null;
+        return &self->getPrototype(JSProto_Object).toObject();
+    }
+
+    JSObject *getOrCreateFunctionPrototype(JSContext *cx) {
+        if (functionObjectClassesInitialized())
+            return &getPrototype(JSProto_Function).toObject();
+        Rooted<GlobalObject*> self(cx, this);
+        if (!initFunctionAndObjectClasses(cx))
+            return __null;
+        return &self->getPrototype(JSProto_Function).toObject();
+    }
+
+    JSObject *getOrCreateArrayPrototype(JSContext *cx) {
+        if (arrayClassInitialized())
+            return &getPrototype(JSProto_Array).toObject();
+        Rooted<GlobalObject*> self(cx, this);
+        if (!js_InitArrayClass(cx, this))
+            return __null;
+        return &self->getPrototype(JSProto_Array).toObject();
+    }
+
+    JSObject *getOrCreateBooleanPrototype(JSContext *cx) {
+        if (booleanClassInitialized())
+            return &getPrototype(JSProto_Boolean).toObject();
+        Rooted<GlobalObject*> self(cx, this);
+        if (!js_InitBooleanClass(cx, this))
+            return __null;
+        return &self->getPrototype(JSProto_Boolean).toObject();
+    }
+
+    JSObject *getOrCreateNumberPrototype(JSContext *cx) {
+        if (numberClassInitialized())
+            return &getPrototype(JSProto_Number).toObject();
+        Rooted<GlobalObject*> self(cx, this);
+        if (!js_InitNumberClass(cx, this))
+            return __null;
+        return &self->getPrototype(JSProto_Number).toObject();
+    }
+
+    JSObject *getOrCreateStringPrototype(JSContext *cx) {
+        if (stringClassInitialized())
+            return &getPrototype(JSProto_String).toObject();
+        Rooted<GlobalObject*> self(cx, this);
+        if (!js_InitStringClass(cx, this))
+            return __null;
+        return &self->getPrototype(JSProto_String).toObject();
+    }
+
+    JSObject *getOrCreateRegExpPrototype(JSContext *cx) {
+        if (regexpClassInitialized())
+            return &getPrototype(JSProto_RegExp).toObject();
+        Rooted<GlobalObject*> self(cx, this);
+        if (!js_InitRegExpClass(cx, this))
+            return __null;
+        return &self->getPrototype(JSProto_RegExp).toObject();
+    }
+
+    JSObject *getOrCreateArrayBufferPrototype(JSContext *cx) {
+        if (arrayBufferClassInitialized())
+            return &getPrototype(JSProto_ArrayBuffer).toObject();
+        Rooted<GlobalObject*> self(cx, this);
+        if (!js_InitTypedArrayClasses(cx, this))
+            return __null;
+        return &self->getPrototype(JSProto_ArrayBuffer).toObject();
+    }
+
+    JSObject *getOrCreateCustomErrorPrototype(JSContext *cx, int exnType) {
+        JSProtoKey key = GetExceptionProtoKey(exnType);
+        if (errorClassesInitialized())
+            return &getPrototype(key).toObject();
+        Rooted<GlobalObject*> self(cx, this);
+        if (!js_InitExceptionClasses(cx, this))
+            return __null;
+        return &self->getPrototype(key).toObject();
+    }
+
+    JSObject *getOrCreateGeneratorPrototype(JSContext *cx) {
+        Value v = getSlotRef(GENERATOR_PROTO);
+        if (v.isObject())
+            return &v.toObject();
+        Rooted<GlobalObject*> self(cx, this);
+        if (!js_InitIteratorClasses(cx, this))
+            return __null;
+        return &self->getSlot(GENERATOR_PROTO).toObject();
+    }
+
+    inline RegExpStatics *getRegExpStatics() const;
+
+    JSObject *getThrowTypeError() const {
+        do { } while(0);
+        return &getSlot(THROWTYPEERROR).toObject();
+    }
+
+    void clear(JSContext *cx);
+
+    bool isCleared() const {
+        return getSlot(FLAGS).toInt32() & FLAGS_CLEARED;
+    }
+
+    bool isRuntimeCodeGenEnabled(JSContext *cx);
+
+    const Value &getOriginalEval() const {
+        do { } while(0);
+        return getSlot(EVAL);
+    }
+
+    bool getFunctionNamespace(JSContext *cx, Value *vp);
+
+    static bool initGeneratorClass(JSContext *cx, Handle<GlobalObject*> global);
+    static bool initStandardClasses(JSContext *cx, Handle<GlobalObject*> global);
+
+    typedef js::Vector<js::Debugger *, 0, js::SystemAllocPolicy> DebuggerVector;
+
+
+
+
+
+    DebuggerVector *getDebuggers();
+
+
+
+
+
+    static DebuggerVector *getOrCreateDebuggers(JSContext *cx, Handle<GlobalObject*> global);
+
+    static bool addDebugger(JSContext *cx, Handle<GlobalObject*> global, Debugger *dbg);
+};
+
+
+
+
+
+
+extern bool
+LinkConstructorAndPrototype(JSContext *cx, JSObject *ctor, JSObject *proto);
+
+
+
+
+
+extern bool
+DefinePropertiesAndBrand(JSContext *cx, JSObject *obj, JSPropertySpec *ps, JSFunctionSpec *fs);
+
+typedef HashSet<GlobalObject *, DefaultHasher<GlobalObject *>, SystemAllocPolicy> GlobalObjectSet;
+
+}
+
+inline bool
+JSObject::isGlobal() const
+{
+    return !!(js::GetObjectClass(this)->flags & (1<<((8 + 8)+2)));
+}
+
+js::GlobalObject &
+JSObject::asGlobal()
+{
+    do { } while(0);
+    return *static_cast<js::GlobalObject *>(this);
+}
+# 18 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscompartment.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpObject.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpObject.h"
+#define RegExpObject_h__ 
+
+
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpObject.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobj.h" 1
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpObject.h" 2
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/Yarr.h" 1
+# 33 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/Yarr.h"
+#define Yarr_h 
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include-fixed/limits.h" 1 3 4
+# 30 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include-fixed/limits.h" 3 4
+#define _GCC_LIMITS_H_ 
+
+
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include-fixed/syslimits.h" 1 3 4
+
+
+
+
+
+#define _GCC_NEXT_LIMITS_H 
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include-fixed/limits.h" 1 3 4
+# 169 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include-fixed/limits.h" 3 4
+# 1 "/usr/include/limits.h" 1 3 4
+# 25 "/usr/include/limits.h" 3 4
+#define _LIBC_LIMITS_H_ 1
+
+
+
+
+
+
+
+#define MB_LEN_MAX 16
+# 133 "/usr/include/limits.h" 3 4
+#define LLONG_MIN (-LLONG_MAX-1)
+
+
+#define LLONG_MAX __LONG_LONG_MAX__
+
+
+#define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
+
+
+
+
+
+# 1 "/usr/include/bits/posix1_lim.h" 1 3 4
+# 26 "/usr/include/bits/posix1_lim.h" 3 4
+#define _BITS_POSIX1_LIM_H 1
+
+
+
+
+
+#define _POSIX_AIO_LISTIO_MAX 2
+
+
+#define _POSIX_AIO_MAX 1
+
+
+#define _POSIX_ARG_MAX 4096
+
+
+
+#define _POSIX_CHILD_MAX 25
+
+
+
+
+
+#define _POSIX_DELAYTIMER_MAX 32
+
+
+
+#define _POSIX_HOST_NAME_MAX 255
+
+
+#define _POSIX_LINK_MAX 8
+
+
+#define _POSIX_LOGIN_NAME_MAX 9
+
+
+#define _POSIX_MAX_CANON 255
+
+
+
+#define _POSIX_MAX_INPUT 255
+
+
+#define _POSIX_MQ_OPEN_MAX 8
+
+
+#define _POSIX_MQ_PRIO_MAX 32
+
+
+#define _POSIX_NAME_MAX 14
+
+
+
+#define _POSIX_NGROUPS_MAX 8
+
+
+
+
+
+
+#define _POSIX_OPEN_MAX 20
+
+
+
+
+
+
+
+#define _POSIX_FD_SETSIZE _POSIX_OPEN_MAX
+
+
+
+#define _POSIX_PATH_MAX 256
+
+
+#define _POSIX_PIPE_BUF 512
+
+
+
+#define _POSIX_RE_DUP_MAX 255
+
+
+#define _POSIX_RTSIG_MAX 8
+
+
+#define _POSIX_SEM_NSEMS_MAX 256
+
+
+#define _POSIX_SEM_VALUE_MAX 32767
+
+
+#define _POSIX_SIGQUEUE_MAX 32
+
+
+#define _POSIX_SSIZE_MAX 32767
+
+
+#define _POSIX_STREAM_MAX 8
+
+
+#define _POSIX_SYMLINK_MAX 255
+
+
+
+#define _POSIX_SYMLOOP_MAX 8
+
+
+#define _POSIX_TIMER_MAX 32
+
+
+#define _POSIX_TTY_NAME_MAX 9
+
+
+#define _POSIX_TZNAME_MAX 6
+
+
+
+#define _POSIX_QLIMIT 1
+
+
+
+#define _POSIX_HIWAT _POSIX_PIPE_BUF
+
+
+#define _POSIX_UIO_MAXIOV 16
+
+
+
+#define _POSIX_CLOCKRES_MIN 20000000
+
+
+
+# 1 "/usr/include/bits/local_lim.h" 1 3 4
+# 26 "/usr/include/bits/local_lim.h" 3 4
+#define __undef_NR_OPEN 
+
+
+#define __undef_LINK_MAX 
+
+
+#define __undef_OPEN_MAX 
+
+
+#define __undef_ARG_MAX 
+
+
+
+# 1 "/usr/include/linux/limits.h" 1 3 4
+
+#define _LINUX_LIMITS_H 
+
+#define NR_OPEN 1024
+
+#define NGROUPS_MAX 65536
+#define ARG_MAX 131072
+#define LINK_MAX 127
+#define MAX_CANON 255
+#define MAX_INPUT 255
+#define NAME_MAX 255
+#define PATH_MAX 4096
+#define PIPE_BUF 4096
+#define XATTR_NAME_MAX 255
+#define XATTR_SIZE_MAX 65536
+#define XATTR_LIST_MAX 65536
+
+#define RTSIG_MAX 32
+# 40 "/usr/include/bits/local_lim.h" 2 3 4
+
+
+
+#undef NR_OPEN
+#undef __undef_NR_OPEN
+
+
+
+#undef LINK_MAX
+#undef __undef_LINK_MAX
+
+
+
+#undef OPEN_MAX
+#undef __undef_OPEN_MAX
+
+
+
+#undef ARG_MAX
+#undef __undef_ARG_MAX
+
+
+
+#define _POSIX_THREAD_KEYS_MAX 128
+
+#define PTHREAD_KEYS_MAX 1024
+
+
+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
+
+#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
+
+
+#define _POSIX_THREAD_THREADS_MAX 64
+
+#undef PTHREAD_THREADS_MAX
+
+
+
+#define AIO_PRIO_DELTA_MAX 20
+
+
+#define PTHREAD_STACK_MIN 16384
+
+
+#define DELAYTIMER_MAX 2147483647
+
+
+#define TTY_NAME_MAX 32
+
+
+#define LOGIN_NAME_MAX 256
+
+
+#define HOST_NAME_MAX 64
+
+
+#define MQ_PRIO_MAX 32768
+
+
+#define SEM_VALUE_MAX (2147483647)
+# 158 "/usr/include/bits/posix1_lim.h" 2 3 4
+
+
+
+#define SSIZE_MAX LONG_MAX
+# 146 "/usr/include/limits.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/posix2_lim.h" 1 3 4
+# 24 "/usr/include/bits/posix2_lim.h" 3 4
+#define _BITS_POSIX2_LIM_H 1
+
+
+
+#define _POSIX2_BC_BASE_MAX 99
+
+
+#define _POSIX2_BC_DIM_MAX 2048
+
+
+#define _POSIX2_BC_SCALE_MAX 99
+
+
+#define _POSIX2_BC_STRING_MAX 1000
+
+
+
+#define _POSIX2_COLL_WEIGHTS_MAX 2
+
+
+
+#define _POSIX2_EXPR_NEST_MAX 32
+
+
+#define _POSIX2_LINE_MAX 2048
+
+
+
+#define _POSIX2_RE_DUP_MAX 255
+
+
+
+#define _POSIX2_CHARCLASS_NAME_MAX 14
+
+
+
+
+
+
+
+#define BC_BASE_MAX _POSIX2_BC_BASE_MAX
+
+
+#define BC_DIM_MAX _POSIX2_BC_DIM_MAX
+
+
+#define BC_SCALE_MAX _POSIX2_BC_SCALE_MAX
+
+
+#define BC_STRING_MAX _POSIX2_BC_STRING_MAX
+
+
+#define COLL_WEIGHTS_MAX 255
+
+
+#define EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX
+
+
+#define LINE_MAX _POSIX2_LINE_MAX
+
+
+#define CHARCLASS_NAME_MAX 2048
+
+
+
+#define RE_DUP_MAX (0x7fff)
+# 150 "/usr/include/limits.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/xopen_lim.h" 1 3 4
+# 31 "/usr/include/bits/xopen_lim.h" 3 4
+#define _XOPEN_LIM_H 1
+
+#define __need_IOV_MAX 
+# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
+# 24 "/usr/include/bits/stdio_lim.h" 3 4
+#define L_tmpnam 20
+#define TMP_MAX 238328
+#define FILENAME_MAX 4096
+
+
+#define L_ctermid 9
+
+#define L_cuserid 9
+
+
+
+
+
+#undef FOPEN_MAX
+#define FOPEN_MAX 16
+
+
+
+#define IOV_MAX 1024
+# 35 "/usr/include/bits/xopen_lim.h" 2 3 4
+# 66 "/usr/include/bits/xopen_lim.h" 3 4
+#define _XOPEN_IOV_MAX _POSIX_UIO_MAXIOV
+
+
+
+
+#define NL_ARGMAX _POSIX_ARG_MAX
+
+
+#define NL_LANGMAX _POSIX2_LINE_MAX
+
+
+#define NL_MSGMAX INT_MAX
+
+
+
+#define NL_NMAX INT_MAX
+
+
+#define NL_SETMAX INT_MAX
+
+
+#define NL_TEXTMAX INT_MAX
+
+
+#define NZERO 20
+# 110 "/usr/include/bits/xopen_lim.h" 3 4
+#define WORD_BIT 32
+# 130 "/usr/include/bits/xopen_lim.h" 3 4
+#define LONG_BIT 32
+# 154 "/usr/include/limits.h" 2 3 4
+# 170 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include-fixed/limits.h" 2 3 4
+# 8 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include-fixed/syslimits.h" 2 3 4
+#undef _GCC_NEXT_LIMITS_H
+# 35 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include-fixed/limits.h" 2 3 4
+# 61 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include-fixed/limits.h" 3 4
+#define _LIMITS_H___ 
+
+
+#undef CHAR_BIT
+#define CHAR_BIT __CHAR_BIT__
+
+
+
+
+
+
+
+#undef SCHAR_MIN
+#define SCHAR_MIN (-SCHAR_MAX - 1)
+#undef SCHAR_MAX
+#define SCHAR_MAX __SCHAR_MAX__
+
+
+#undef UCHAR_MAX
+
+
+
+#define UCHAR_MAX (SCHAR_MAX * 2 + 1)
+
+
+
+
+#undef CHAR_MIN
+
+
+
+#define CHAR_MIN 0
+
+#undef CHAR_MAX
+#define CHAR_MAX UCHAR_MAX
+# 104 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include-fixed/limits.h" 3 4
+#undef SHRT_MIN
+#define SHRT_MIN (-SHRT_MAX - 1)
+#undef SHRT_MAX
+#define SHRT_MAX __SHRT_MAX__
+
+
+#undef USHRT_MAX
+
+
+
+#define USHRT_MAX (SHRT_MAX * 2 + 1)
+
+
+
+#undef INT_MIN
+#define INT_MIN (-INT_MAX - 1)
+#undef INT_MAX
+#define INT_MAX __INT_MAX__
+
+
+#undef UINT_MAX
+#define UINT_MAX (INT_MAX * 2U + 1U)
+
+
+
+#undef LONG_MIN
+#define LONG_MIN (-LONG_MAX - 1L)
+#undef LONG_MAX
+#define LONG_MAX __LONG_MAX__
+
+
+#undef ULONG_MAX
+#define ULONG_MAX (LONG_MAX * 2UL + 1UL)
+# 152 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include-fixed/limits.h" 3 4
+#undef LONG_LONG_MIN
+#define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL)
+#undef LONG_LONG_MAX
+#define LONG_LONG_MAX __LONG_LONG_MAX__
+
+
+#undef ULONG_LONG_MAX
+#define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL)
+# 36 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/Yarr.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrInterpreter.h" 1
+# 31 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrInterpreter.h"
+#define YarrInterpreter_h 
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrPattern.h" 1
+# 32 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrPattern.h"
+#define YarrPattern_h 
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/wtfbridge.h" 1
+
+
+
+
+
+
+
+#define jswtfbridge_h__ 
+# 17 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/wtfbridge.h"
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String.h" 1
+# 18 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/wtfbridge.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h" 1
+# 29 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_Platform_h 
+
+
+
+
+#define PLATFORM(WTF_FEATURE) (defined WTF_PLATFORM_ ##WTF_FEATURE && WTF_PLATFORM_ ##WTF_FEATURE)
+
+
+
+
+
+#define COMPILER(WTF_FEATURE) (defined WTF_COMPILER_ ##WTF_FEATURE && WTF_COMPILER_ ##WTF_FEATURE)
+
+#define CPU(WTF_FEATURE) (defined WTF_CPU_ ##WTF_FEATURE && WTF_CPU_ ##WTF_FEATURE)
+
+#define HAVE(WTF_FEATURE) (defined HAVE_ ##WTF_FEATURE && HAVE_ ##WTF_FEATURE)
+
+
+#define OS(WTF_FEATURE) (defined WTF_OS_ ##WTF_FEATURE && WTF_OS_ ##WTF_FEATURE)
+
+
+
+
+
+#define USE(WTF_FEATURE) (defined WTF_USE_ ##WTF_FEATURE && WTF_USE_ ##WTF_FEATURE)
+
+#define ENABLE(WTF_FEATURE) (defined ENABLE_ ##WTF_FEATURE && ENABLE_ ##WTF_FEATURE)
+# 80 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define RVCT_VERSION_AT_LEAST(major,minor,patch,build) 0
+
+
+
+
+
+#define WTF_COMPILER_GCC 1
+#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#define GCC_VERSION_AT_LEAST(major,minor,patch) (GCC_VERSION >= (major * 10000 + minor * 100 + patch))
+# 233 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_CPU_ARM 1
+# 247 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_ARM_ARCH_AT_LEAST(N) (CPU(ARM) && WTF_ARM_ARCH_VERSION >= N)
+# 279 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_ARM_ARCH_VERSION 7
+# 318 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_THUMB_ARCH_VERSION 4
+# 346 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_CPU_ARM_TRADITIONAL 1
+#define WTF_CPU_ARM_THUMB2 0
+# 362 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
+# 425 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_OS_LINUX 1
+# 478 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_OS_UNIX 1
+# 532 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_PLATFORM_IOS_SIMULATOR 0
+
+
+
+#define WTF_PLATFORM_IOS 0
+# 621 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_USE_ICU_UNICODE 1
+# 760 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define HAVE_SIGNAL_H 1
+# 772 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define HAVE_TM_GMTOFF 1
+#define HAVE_TM_ZONE 1
+#define HAVE_TIMEGM 1
+# 870 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define HAVE_ERRNO_H 1
+
+
+#define HAVE_LANGINFO_H 1
+
+#define HAVE_MMAP 1
+#define HAVE_SBRK 1
+#define HAVE_STRINGS_H 1
+#define HAVE_SYS_PARAM_H 1
+#define HAVE_SYS_TIME_H 1
+# 896 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define ENABLE_FAST_MALLOC_MATCH_VALIDATION 0
+
+
+
+#define ENABLE_ICONDATABASE 1
+
+
+
+#define ENABLE_DATABASE 1
+
+
+
+#define ENABLE_JAVASCRIPT_DEBUGGER 1
+
+
+
+#define ENABLE_FTPDIR 1
+
+
+
+#define ENABLE_CONTEXT_MENUS 1
+
+
+
+#define ENABLE_DRAG_SUPPORT 1
+
+
+
+#define ENABLE_DATA_TRANSFER_ITEMS 0
+
+
+
+#define ENABLE_DASHBOARD_SUPPORT 0
+
+
+
+#define ENABLE_INSPECTOR 1
+
+
+
+#define ENABLE_JAVA_BRIDGE 0
+
+
+
+#define ENABLE_NETSCAPE_PLUGIN_API 1
+
+
+
+#define ENABLE_NETSCAPE_PLUGIN_METADATA_CACHE 0
+
+
+
+#define ENABLE_PURGEABLE_MEMORY 0
+
+
+
+#define WTF_USE_PLUGIN_HOST_PROCESS 0
+
+
+
+#define ENABLE_ORIENTATION_EVENTS 0
+
+
+
+#define ENABLE_OPCODE_STATS 0
+
+
+
+#define ENABLE_GLOBAL_FASTMALLOC_NEW 1
+
+
+#define ENABLE_DEBUG_WITH_BREAKPOINT 0
+#define ENABLE_SAMPLING_COUNTERS 0
+#define ENABLE_SAMPLING_FLAGS 0
+#define ENABLE_OPCODE_SAMPLING 0
+#define ENABLE_CODEBLOCK_SAMPLING 0
+# 980 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define ENABLE_GEOLOCATION 0
+
+
+
+#define ENABLE_GESTURE_RECOGNIZER 0
+
+
+
+#define ENABLE_NOTIFICATIONS 0
+
+
+
+
+
+
+
+#define ENABLE_TEXT_CARET 1
+
+
+
+#define ENABLE_ON_FIRST_TEXTAREA_FOCUS_SELECT_ALL 0
+
+
+
+#define ENABLE_FULLSCREEN_API 0
+# 1016 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_USE_JSVALUE32_64 1
+
+
+
+
+#define ENABLE_REPAINT_THROTTLING 0
+# 1064 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define ENABLE_JIT_USE_SOFT_MODULO 1
+
+
+
+
+#define ENABLE_JIT_OPTIMIZE_CALL 1
+
+
+#define ENABLE_JIT_OPTIMIZE_NATIVE_CALL 1
+
+
+#define ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS 1
+
+
+#define ENABLE_JIT_OPTIMIZE_METHOD_CALLS 1
+# 1087 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define JSC_HOST_CALL 
+
+
+
+
+#define HAVE_COMPUTED_GOTO 1
+
+
+
+
+
+
+#define ENABLE_REGEXP_TRACING 0
+
+
+
+
+
+
+#define ENABLE_YARR_JIT 1
+
+
+#define ENABLE_YARR_JIT_DEBUG 0
+
+
+
+#define ENABLE_ASSEMBLER 1
+# 1128 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define ENABLE_EXECUTABLE_ALLOCATOR_DEMAND 1
+# 1137 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define ENABLE_SMOOTH_SCROLLING 0
+
+
+
+#define ENABLE_WEB_ARCHIVE 0
+# 1176 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WARN_UNUSED_RETURN __attribute__ ((warn_unused_result))
+# 1186 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_PLATFORM_CFNETWORK Error USE_macro_should_be_used_with_CFNETWORK
+
+#define ENABLE_JSC_ZOMBIES 0
+# 1226 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h"
+#define WTF_USE_EXPORT_MACROS 0
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/wtfbridge.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/jit/ExecutableAllocator.h" 1
+# 27 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/jit/ExecutableAllocator.h"
+#define ExecutableAllocator_h 
+
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stddef.h" 1 3 4
+# 30 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/jit/ExecutableAllocator.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsalloc.h" 1
+# 33 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/jit/ExecutableAllocator.h" 2
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Assertions.h" 1
+# 27 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Assertions.h"
+#define WTF_Assertions_h 
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Platform.h" 1
+# 30 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Assertions.h" 2
+
+
+
+
+
+
+
+#define ASSERT_DISABLED 1
+
+
+#define ASSERT(assertion) MOZ_ASSERT(assertion)
+#define ASSERT_UNUSED(variable,assertion) do { (void)variable; ASSERT(assertion); } while (0)
+
+
+
+#define ASSERT_NOT_REACHED() MOZ_NOT_REACHED("")
+#define CRASH() MOZ_CRASH()
+#define COMPILE_ASSERT(exp,name) MOZ_STATIC_ASSERT(exp, #name)
+# 37 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/jit/ExecutableAllocator.h" 2
+# 74 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/jit/ExecutableAllocator.h"
+#define INITIAL_PROTECTION_FLAGS (PROT_READ | PROT_WRITE | PROT_EXEC)
+
+
+
+
+
+
+namespace JSC {
+
+  class ExecutableAllocator;
+
+  enum CodeKind { METHOD_CODE, REGEXP_CODE };
+
+
+  class ExecutablePool {
+
+    friend class js::OffTheBooks; friend class js::Foreground; friend class js::UnwantedForeground; friend struct ::JSContext; friend struct ::JSRuntime;
+    friend class ExecutableAllocator;
+private:
+    struct Allocation {
+        char* pages;
+        size_t size;
+
+
+
+    };
+
+    ExecutableAllocator* m_allocator;
+    char* m_freePtr;
+    char* m_end;
+    Allocation m_allocation;
+
+
+    unsigned m_refCount;
+
+
+    size_t m_mjitCodeMethod;
+    size_t m_mjitCodeRegexp;
+
+public:
+
+    bool m_destroy;
+
+
+
+    size_t m_gcNumber;
+
+    void release(bool willDestroy = false)
+    {
+        do { } while(0);
+
+
+        if (--m_refCount == 0) {
+            js::UnwantedForeground::delete_(this);
+        }
+    }
+
+private:
+
+
+
+    void addRef()
+    {
+        do { } while(0);
+        ++m_refCount;
+    }
+
+    ExecutablePool(ExecutableAllocator* allocator, Allocation a)
+      : m_allocator(allocator), m_freePtr(a.pages), m_end(m_freePtr + a.size), m_allocation(a),
+        m_refCount(1), m_mjitCodeMethod(0), m_mjitCodeRegexp(0), m_destroy(false), m_gcNumber(0)
+    { }
+
+    ~ExecutablePool();
+
+    void* alloc(size_t n, CodeKind kind)
+    {
+        do { } while(0);
+        void *result = m_freePtr;
+        m_freePtr += n;
+
+        if ( kind == REGEXP_CODE )
+            m_mjitCodeRegexp += n;
+        else
+            m_mjitCodeMethod += n;
+
+        return result;
+    }
+
+    size_t available() const {
+        do { } while(0);
+        return m_end - m_freePtr;
+    }
+};
+
+enum AllocationBehavior
+{
+    AllocationCanRandomize,
+    AllocationDeterministic
+};
+
+class ExecutableAllocator {
+    typedef void (*DestroyCallback)(void* addr, size_t size);
+    enum ProtectionSetting { Writable, Executable };
+    DestroyCallback destroyCallback;
+
+    void initSeed();
+
+public:
+    explicit ExecutableAllocator(AllocationBehavior allocBehavior)
+      : destroyCallback(__null),
+        allocBehavior(allocBehavior)
+    {
+        if (!pageSize) {
+            pageSize = determinePageSize();
+# 196 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/jit/ExecutableAllocator.h"
+            largeAllocSize = pageSize * 16;
+        }
+
+
+
+
+
+        do { } while(0);
+    }
+
+    ~ExecutableAllocator()
+    {
+        for (size_t i = 0; i < m_smallPools.length(); i++)
+            m_smallPools[i]->release( true);
+
+
+    }
+
+
+
+
+    void* alloc(size_t n, ExecutablePool** poolp, CodeKind type)
+    {
+
+
+
+        n = roundUpAllocationSize(n, sizeof(void*));
+        if (n == OVERSIZE_ALLOCATION) {
+            *poolp = __null;
+            return __null;
+        }
+
+        *poolp = poolForSize(n);
+        if (!*poolp)
+            return __null;
+
+
+
+        void *result = (*poolp)->alloc(n, type);
+        do { } while(0);
+        return result;
+    }
+
+    void releasePoolPages(ExecutablePool *pool) {
+        do { } while(0);
+        if (destroyCallback)
+            destroyCallback(pool->m_allocation.pages, pool->m_allocation.size);
+        systemRelease(pool->m_allocation);
+        do { } while(0);
+        m_pools.remove(m_pools.lookup(pool));
+    }
+
+    void sizeOfCode(size_t *method, size_t *regexp, size_t *unused) const;
+
+    void setDestroyCallback(DestroyCallback destroyCallback) {
+        this->destroyCallback = destroyCallback;
+    }
+
+    void setRandomize(bool enabled) {
+        allocBehavior = enabled ? AllocationCanRandomize : AllocationDeterministic;
+    }
+
+private:
+    static size_t pageSize;
+    static size_t largeAllocSize;
+
+
+
+
+    static const size_t OVERSIZE_ALLOCATION = size_t(-1);
+
+    static size_t roundUpAllocationSize(size_t request, size_t granularity)
+    {
+
+
+
+
+
+
+        if ((std::numeric_limits<size_t>::max() - granularity) <= request)
+            return OVERSIZE_ALLOCATION;
+
+
+        size_t size = request + (granularity - 1);
+        size = size & ~(granularity - 1);
+        do { } while(0);
+        return size;
+    }
+
+
+    ExecutablePool::Allocation systemAlloc(size_t n);
+    static void systemRelease(const ExecutablePool::Allocation& alloc);
+    void *computeRandomAllocationAddress();
+
+    ExecutablePool* createPool(size_t n)
+    {
+        size_t allocSize = roundUpAllocationSize(n, pageSize);
+        if (allocSize == OVERSIZE_ALLOCATION)
+            return __null;
+
+        if (!m_pools.initialized() && !m_pools.init())
+            return __null;
+
+
+
+
+        ExecutablePool::Allocation a = systemAlloc(allocSize);
+
+        if (!a.pages)
+            return __null;
+
+        ExecutablePool *pool = js::OffTheBooks::new_<ExecutablePool>(this, a);
+        if (!pool) {
+            systemRelease(a);
+            return __null;
+        }
+        m_pools.put(pool);
+        return pool;
+    }
+
+public:
+    ExecutablePool* poolForSize(size_t n)
+    {
+
+
+
+
+
+
+        ExecutablePool *minPool = __null;
+        for (size_t i = 0; i < m_smallPools.length(); i++) {
+            ExecutablePool *pool = m_smallPools[i];
+            if (n <= pool->available() && (!minPool || pool->available() < minPool->available()))
+                minPool = pool;
+        }
+        if (minPool) {
+            minPool->addRef();
+            return minPool;
+        }
+
+
+
+        if (n > largeAllocSize)
+            return createPool(n);
+
+
+        ExecutablePool* pool = createPool(largeAllocSize);
+        if (!pool)
+            return __null;
+
+
+        if (m_smallPools.length() < maxSmallPools) {
+
+            m_smallPools.append(pool);
+            pool->addRef();
+        } else {
+
+            int iMin = 0;
+            for (size_t i = 1; i < m_smallPools.length(); i++)
+                if (m_smallPools[i]->available() <
+                    m_smallPools[iMin]->available())
+                {
+                    iMin = i;
+                }
+
+
+
+            ExecutablePool *minPool = m_smallPools[iMin];
+            if ((pool->available() - n) > minPool->available()) {
+                minPool->release();
+                m_smallPools[iMin] = pool;
+                pool->addRef();
+            }
+        }
+
+
+        return pool;
+    }
+# 386 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/jit/ExecutableAllocator.h"
+    static void makeWritable(void*, size_t) {}
+    static void makeExecutable(void*, size_t) {}
+# 451 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/jit/ExecutableAllocator.h"
+    static void cacheFlush(void* code, size_t size)
+    {
+        asm volatile (
+            "push    {r7}\n"
+            "mov     r0, %0\n"
+            "mov     r1, %1\n"
+            "mov     r7, #0xf0000\n"
+            "add     r7, r7, #0x2\n"
+            "mov     r2, #0x0\n"
+            "svc     0x0\n"
+            "pop     {r7}\n"
+            :
+            : "r" (code), "r" (reinterpret_cast<char*>(code) + size)
+            : "r0", "r1", "r2");
+    }
+
+
+
+
+
+
+
+private:
+
+
+
+
+
+
+    static const size_t maxSmallPools = 4;
+    typedef js::Vector<ExecutablePool *, maxSmallPools, js::SystemAllocPolicy> SmallExecPoolVector;
+    SmallExecPoolVector m_smallPools;
+
+
+
+
+    typedef js::HashSet<ExecutablePool *, js::DefaultHasher<ExecutablePool *>, js::SystemAllocPolicy>
+            ExecPoolHashSet;
+    ExecPoolHashSet m_pools;
+    AllocationBehavior allocBehavior;
+
+    static size_t determinePageSize();
+};
+
+}
+# 20 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/wtfbridge.h" 2
+
+namespace JSC { namespace Yarr {
+
+
+
+
+
+typedef jschar UChar;
+typedef JSLinearString UString;
+
+using namespace js::unicode;
+
+class Unicode {
+  public:
+    static UChar toUpper(UChar c) { return ToUpperCase(c); }
+    static UChar toLower(UChar c) { return ToLowerCase(c); }
+};
+
+
+
+
+
+
+template<typename T>
+class RefCounted {
+};
+
+template<typename T>
+class RefPtr {
+    T *ptr;
+  public:
+    RefPtr(T *p) { ptr = p; }
+    operator bool() const { return ptr != __null; }
+    const T *operator ->() const { return ptr; }
+    T *get() { return ptr; }
+};
+
+template<typename T>
+class PassRefPtr {
+    T *ptr;
+  public:
+    PassRefPtr(T *p) { ptr = p; }
+    operator T*() { return ptr; }
+};
+
+template<typename T>
+class PassOwnPtr {
+    T *ptr;
+  public:
+    PassOwnPtr(T *p) { ptr = p; }
+
+    T *get() { return ptr; }
+};
+
+template<typename T>
+class OwnPtr {
+    T *ptr;
+  public:
+    OwnPtr() : ptr(__null) { }
+    OwnPtr(PassOwnPtr<T> p) : ptr(p.get()) { }
+
+    ~OwnPtr() {
+        if (ptr)
+            js::Foreground::delete_(ptr);
+    }
+
+    OwnPtr<T> &operator=(PassOwnPtr<T> p) {
+        ptr = p.get();
+        return *this;
+    }
+
+    T *operator ->() { return ptr; }
+
+    T *get() { return ptr; }
+
+    T *release() {
+        T *result = ptr;
+        ptr = __null;
+        return result;
+    }
+};
+
+template<typename T>
+PassRefPtr<T> adoptRef(T *p) { return PassRefPtr<T>(p); }
+
+template<typename T>
+PassOwnPtr<T> adoptPtr(T *p) { return PassOwnPtr<T>(p); }
+
+#define WTF_MAKE_FAST_ALLOCATED 
+
+template<typename T>
+class Ref {
+    T &val;
+  public:
+    Ref(T &val) : val(val) { }
+    operator T&() const { return val; }
+};
+
+
+
+
+
+template<typename T, size_t N = 0>
+class Vector {
+  public:
+    js::Vector<T, N, js::SystemAllocPolicy> impl;
+  public:
+    Vector() {}
+
+    Vector(const Vector &v) {
+
+        (void) append(v);
+    }
+
+    size_t size() const {
+        return impl.length();
+    }
+
+    T &operator[](size_t i) {
+        return impl[i];
+    }
+
+    const T &operator[](size_t i) const {
+        return impl[i];
+    }
+
+    T &at(size_t i) {
+        return impl[i];
+    }
+
+    const T *begin() const {
+        return impl.begin();
+    }
+
+    T &last() {
+        return impl.back();
+    }
+
+    bool isEmpty() const {
+        return impl.empty();
+    }
+
+    template <typename U>
+    void append(const U &u) {
+
+        (void) impl.append(static_cast<T>(u));
+    }
+
+    template <size_t M>
+    void append(const Vector<T,M> &v) {
+
+        (void) impl.append(v.impl);
+    }
+
+    void insert(size_t i, const T& t) {
+
+        (void) impl.insert(&impl[i], t);
+    }
+
+    void remove(size_t i) {
+        impl.erase(&impl[i]);
+    }
+
+    void clear() {
+        return impl.clear();
+    }
+
+    void shrink(size_t newLength) {
+
+        do { } while(0);
+        (void) impl.resize(newLength);
+    }
+
+    void deleteAllValues() {
+        for (T *p = impl.begin(); p != impl.end(); ++p)
+            js::Foreground::delete_(*p);
+    }
+};
+
+template<typename T>
+class Vector<OwnPtr<T> > {
+  public:
+    js::Vector<T *, 0, js::SystemAllocPolicy> impl;
+  public:
+    Vector() {}
+
+    size_t size() const {
+        return impl.length();
+    }
+
+    void append(T *t) {
+
+        (void) impl.append(t);
+    }
+
+    PassOwnPtr<T> operator[](size_t i) {
+        return PassOwnPtr<T>(impl[i]);
+    }
+
+    void clear() {
+        for (T **p = impl.begin(); p != impl.end(); ++p)
+            js::Foreground::delete_(*p);
+        return impl.clear();
+    }
+};
+
+template <typename T, size_t N>
+inline void
+deleteAllValues(Vector<T, N> &v) {
+    v.deleteAllValues();
+}
+
+
+
+
+
+
+class JSGlobalData {
+  public:
+    ExecutableAllocator *regexAllocator;
+
+    JSGlobalData(ExecutableAllocator *regexAllocator)
+     : regexAllocator(regexAllocator) { }
+};
+
+
+
+
+
+
+const size_t notFound = size_t(-1);
+
+
+
+
+
+#define UNUSED_PARAM(e) 
+
+}
+
+
+
+
+
+
+namespace std {
+# 276 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/wtfbridge.h"
+template<typename T>
+inline T
+min(T t1, T t2)
+{
+    return ((t1)<(t2)?(t1):(t2));
+}
+
+template<typename T>
+inline T
+max(T t1, T t2)
+{
+    return ((t1)>(t2)?(t1):(t2));
+}
+
+template<typename T>
+inline void
+swap(T &t1, T &t2)
+{
+    T tmp = t1;
+    t1 = t2;
+    t2 = tmp;
+}
+}
+
+}
+# 35 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrPattern.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/ASCIICType.h" 1
+# 34 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/ASCIICType.h"
+#define WTF_ASCIICType_h 
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Assertions.h" 1
+# 37 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/ASCIICType.h" 2
+# 48 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/ASCIICType.h"
+namespace WTF {
+
+    inline bool isASCII(char c) { return !(c & ~0x7F); }
+    inline bool isASCII(unsigned short c) { return !(c & ~0x7F); }
+
+    inline bool isASCII(wchar_t c) { return !(c & ~0x7F); }
+
+    inline bool isASCII(int c) { return !(c & ~0x7F); }
+    inline bool isASCII(unsigned c) { return !(c & ~0x7F); }
+
+    inline bool isASCIIAlpha(char c) { return (c | 0x20) >= 'a' && (c | 0x20) <= 'z'; }
+    inline bool isASCIIAlpha(unsigned short c) { return (c | 0x20) >= 'a' && (c | 0x20) <= 'z'; }
+
+    inline bool isASCIIAlpha(wchar_t c) { return (c | 0x20) >= 'a' && (c | 0x20) <= 'z'; }
+
+    inline bool isASCIIAlpha(int c) { return (c | 0x20) >= 'a' && (c | 0x20) <= 'z'; }
+    inline bool isASCIIAlpha(unsigned c) { return (c | 0x20) >= 'a' && (c | 0x20) <= 'z'; }
+
+    inline bool isASCIIAlphanumeric(char c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'z'); }
+    inline bool isASCIIAlphanumeric(unsigned short c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'z'); }
+
+    inline bool isASCIIAlphanumeric(wchar_t c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'z'); }
+
+    inline bool isASCIIAlphanumeric(int c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'z'); }
+    inline bool isASCIIAlphanumeric(unsigned c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'z'); }
+
+    inline bool isASCIIDigit(char c) { return (c >= '0') & (c <= '9'); }
+    inline bool isASCIIDigit(unsigned short c) { return (c >= '0') & (c <= '9'); }
+
+    inline bool isASCIIDigit(wchar_t c) { return (c >= '0') & (c <= '9'); }
+
+    inline bool isASCIIDigit(int c) { return (c >= '0') & (c <= '9'); }
+    inline bool isASCIIDigit(unsigned c) { return (c >= '0') & (c <= '9'); }
+
+    inline bool isASCIIHexDigit(char c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'f'); }
+    inline bool isASCIIHexDigit(unsigned short c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'f'); }
+
+    inline bool isASCIIHexDigit(wchar_t c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'f'); }
+
+    inline bool isASCIIHexDigit(int c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'f'); }
+    inline bool isASCIIHexDigit(unsigned c) { return (c >= '0' && c <= '9') || ((c | 0x20) >= 'a' && (c | 0x20) <= 'f'); }
+
+    inline bool isASCIIOctalDigit(char c) { return (c >= '0') & (c <= '7'); }
+    inline bool isASCIIOctalDigit(unsigned short c) { return (c >= '0') & (c <= '7'); }
+
+    inline bool isASCIIOctalDigit(wchar_t c) { return (c >= '0') & (c <= '7'); }
+
+    inline bool isASCIIOctalDigit(int c) { return (c >= '0') & (c <= '7'); }
+    inline bool isASCIIOctalDigit(unsigned c) { return (c >= '0') & (c <= '7'); }
+
+    inline bool isASCIILower(char c) { return c >= 'a' && c <= 'z'; }
+    inline bool isASCIILower(unsigned short c) { return c >= 'a' && c <= 'z'; }
+
+    inline bool isASCIILower(wchar_t c) { return c >= 'a' && c <= 'z'; }
+
+    inline bool isASCIILower(int c) { return c >= 'a' && c <= 'z'; }
+    inline bool isASCIILower(unsigned c) { return c >= 'a' && c <= 'z'; }
+
+    inline bool isASCIIUpper(char c) { return c >= 'A' && c <= 'Z'; }
+    inline bool isASCIIUpper(unsigned short c) { return c >= 'A' && c <= 'Z'; }
+
+    inline bool isASCIIUpper(wchar_t c) { return c >= 'A' && c <= 'Z'; }
+
+    inline bool isASCIIUpper(int c) { return c >= 'A' && c <= 'Z'; }
+    inline bool isASCIIUpper(unsigned c) { return c >= 'A' && c <= 'Z'; }
+# 127 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/ASCIICType.h"
+    inline bool isASCIISpace(char c) { return c <= ' ' && (c == ' ' || (c <= 0xD && c >= 0x9)); }
+    inline bool isASCIISpace(unsigned short c) { return c <= ' ' && (c == ' ' || (c <= 0xD && c >= 0x9)); }
+
+    inline bool isASCIISpace(wchar_t c) { return c <= ' ' && (c == ' ' || (c <= 0xD && c >= 0x9)); }
+
+    inline bool isASCIISpace(int c) { return c <= ' ' && (c == ' ' || (c <= 0xD && c >= 0x9)); }
+    inline bool isASCIISpace(unsigned c) { return c <= ' ' && (c == ' ' || (c <= 0xD && c >= 0x9)); }
+
+    inline char toASCIILower(char c) { return c | ((c >= 'A' && c <= 'Z') << 5); }
+    inline unsigned short toASCIILower(unsigned short c) { return c | ((c >= 'A' && c <= 'Z') << 5); }
+
+    inline wchar_t toASCIILower(wchar_t c) { return c | ((c >= 'A' && c <= 'Z') << 5); }
+
+    inline int toASCIILower(int c) { return c | ((c >= 'A' && c <= 'Z') << 5); }
+    inline unsigned toASCIILower(unsigned c) { return c | ((c >= 'A' && c <= 'Z') << 5); }
+
+
+    inline char toASCIIUpper(char c) { return static_cast<char>(c & ~((c >= 'a' && c <= 'z') << 5)); }
+    inline unsigned short toASCIIUpper(unsigned short c) { return static_cast<unsigned short>(c & ~((c >= 'a' && c <= 'z') << 5)); }
+
+    inline wchar_t toASCIIUpper(wchar_t c) { return static_cast<wchar_t>(c & ~((c >= 'a' && c <= 'z') << 5)); }
+
+    inline int toASCIIUpper(int c) { return static_cast<int>(c & ~((c >= 'a' && c <= 'z') << 5)); }
+    inline unsigned toASCIIUpper(unsigned c) { return static_cast<unsigned>(c & ~((c >= 'a' && c <= 'z') << 5)); }
+
+    inline int toASCIIHexValue(char c) { do { } while(0); return c < 'A' ? c - '0' : (c - 'A' + 10) & 0xF; }
+    inline int toASCIIHexValue(unsigned short c) { do { } while(0); return c < 'A' ? c - '0' : (c - 'A' + 10) & 0xF; }
+
+    inline int toASCIIHexValue(wchar_t c) { do { } while(0); return c < 'A' ? c - '0' : (c - 'A' + 10) & 0xF; }
+
+    inline int toASCIIHexValue(int c) { do { } while(0); return c < 'A' ? c - '0' : (c - 'A' + 10) & 0xF; }
+    inline int toASCIIHexValue(unsigned c) { do { } while(0); return c < 'A' ? c - '0' : (c - 'A' + 10) & 0xF; }
+
+    inline bool isASCIIPrintable(char c) { return c >= ' ' && c <= '~'; }
+    inline bool isASCIIPrintable(unsigned short c) { return c >= ' ' && c <= '~'; }
+
+    inline bool isASCIIPrintable(wchar_t c) { return c >= ' ' && c <= '~'; }
+
+    inline bool isASCIIPrintable(int c) { return c >= ' ' && c <= '~'; }
+    inline bool isASCIIPrintable(unsigned c) { return c >= ' ' && c <= '~'; }
+}
+
+using WTF::isASCII;
+using WTF::isASCIIAlpha;
+using WTF::isASCIIAlphanumeric;
+using WTF::isASCIIDigit;
+using WTF::isASCIIHexDigit;
+using WTF::isASCIILower;
+using WTF::isASCIIOctalDigit;
+using WTF::isASCIIPrintable;
+using WTF::isASCIISpace;
+using WTF::isASCIIUpper;
+using WTF::toASCIIHexValue;
+using WTF::toASCIILower;
+using WTF::toASCIIUpper;
+# 36 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrPattern.h" 2
+
+namespace JSC { namespace Yarr {
+
+enum ErrorCode {
+    NoError,
+    PatternTooLarge,
+    QuantifierOutOfOrder,
+    QuantifierWithoutAtom,
+    MissingParentheses,
+    ParenthesesUnmatched,
+    ParenthesesTypeInvalid,
+    CharacterClassUnmatched,
+    CharacterClassInvalidRange,
+    CharacterClassOutOfOrder,
+    EscapeUnterminated,
+    QuantifierTooLarge,
+    NumberOfErrorCodes
+};
+
+struct PatternDisjunction;
+
+struct CharacterRange {
+    UChar begin;
+    UChar end;
+
+    CharacterRange(UChar begin, UChar end)
+        : begin(begin)
+        , end(end)
+    {
+    }
+};
+
+struct CharacterClassTable : RefCounted<CharacterClassTable> {
+    friend class js::OffTheBooks;
+    const char* m_table;
+    bool m_inverted;
+    static PassRefPtr<CharacterClassTable> create(const char* table, bool inverted)
+    {
+        return adoptRef(js::OffTheBooks::new_<CharacterClassTable>(table, inverted));
+    }
+
+private:
+    CharacterClassTable(const char* table, bool inverted)
+        : m_table(table)
+        , m_inverted(inverted)
+    {
+    }
+};
+
+struct CharacterClass {
+   
+public:
+
+
+
+    CharacterClass(PassRefPtr<CharacterClassTable> table)
+        : m_table(table)
+    {
+    }
+    ~CharacterClass()
+    {
+        js::Foreground::delete_(m_table.get());
+    }
+    Vector<UChar> m_matches;
+    Vector<CharacterRange> m_ranges;
+    Vector<UChar> m_matchesUnicode;
+    Vector<CharacterRange> m_rangesUnicode;
+    RefPtr<CharacterClassTable> m_table;
+};
+
+enum QuantifierType {
+    QuantifierFixedCount,
+    QuantifierGreedy,
+    QuantifierNonGreedy
+};
+
+struct PatternTerm {
+    enum Type {
+        TypeAssertionBOL,
+        TypeAssertionEOL,
+        TypeAssertionWordBoundary,
+        TypePatternCharacter,
+        TypeCharacterClass,
+        TypeBackReference,
+        TypeForwardReference,
+        TypeParenthesesSubpattern,
+        TypeParentheticalAssertion
+    } type;
+    bool m_capture :1;
+    bool m_invert :1;
+    union {
+        UChar patternCharacter;
+        CharacterClass* characterClass;
+        unsigned backReferenceSubpatternId;
+        struct {
+            PatternDisjunction* disjunction;
+            unsigned subpatternId;
+            unsigned lastSubpatternId;
+            bool isCopy;
+            bool isTerminal;
+        } parentheses;
+    };
+    QuantifierType quantityType;
+    unsigned quantityCount;
+    int inputPosition;
+    unsigned frameLocation;
+
+
+    PatternTerm()
+        : type(PatternTerm::TypePatternCharacter)
+        , m_capture(false)
+        , m_invert(false)
+    {
+        patternCharacter = 0;
+        quantityType = QuantifierFixedCount;
+        quantityCount = 1;
+    }
+
+    PatternTerm(UChar ch)
+        : type(PatternTerm::TypePatternCharacter)
+        , m_capture(false)
+        , m_invert(false)
+    {
+        patternCharacter = ch;
+        quantityType = QuantifierFixedCount;
+        quantityCount = 1;
+    }
+
+    PatternTerm(CharacterClass* charClass, bool invert)
+        : type(PatternTerm::TypeCharacterClass)
+        , m_capture(false)
+        , m_invert(invert)
+    {
+        characterClass = charClass;
+        quantityType = QuantifierFixedCount;
+        quantityCount = 1;
+    }
+
+    PatternTerm(Type type, unsigned subpatternId, PatternDisjunction* disjunction, bool capture = false, bool invert = false)
+        : type(type)
+        , m_capture(capture)
+        , m_invert(invert)
+    {
+        parentheses.disjunction = disjunction;
+        parentheses.subpatternId = subpatternId;
+        parentheses.isCopy = false;
+        parentheses.isTerminal = false;
+        quantityType = QuantifierFixedCount;
+        quantityCount = 1;
+    }
+
+    PatternTerm(Type type, bool invert = false)
+        : type(type)
+        , m_capture(false)
+        , m_invert(invert)
+    {
+        quantityType = QuantifierFixedCount;
+        quantityCount = 1;
+    }
+
+    PatternTerm(unsigned spatternId)
+        : type(TypeBackReference)
+        , m_capture(false)
+        , m_invert(false)
+    {
+        backReferenceSubpatternId = spatternId;
+        quantityType = QuantifierFixedCount;
+        quantityCount = 1;
+    }
+
+    static PatternTerm ForwardReference()
+    {
+        return PatternTerm(TypeForwardReference);
+    }
+
+    static PatternTerm BOL()
+    {
+        return PatternTerm(TypeAssertionBOL);
+    }
+
+    static PatternTerm EOL()
+    {
+        return PatternTerm(TypeAssertionEOL);
+    }
+
+    static PatternTerm WordBoundary(bool invert)
+    {
+        return PatternTerm(TypeAssertionWordBoundary, invert);
+    }
+
+    bool invert()
+    {
+        return m_invert;
+    }
+
+    bool capture()
+    {
+        return m_capture;
+    }
+
+    void quantify(unsigned count, QuantifierType type)
+    {
+        quantityCount = count;
+        quantityType = type;
+    }
+};
+
+struct PatternAlternative {
+   
+public:
+    PatternAlternative(PatternDisjunction* disjunction)
+        : m_parent(disjunction)
+        , m_onceThrough(false)
+        , m_hasFixedSize(false)
+        , m_startsWithBOL(false)
+        , m_containsBOL(false)
+    {
+    }
+
+    PatternTerm& lastTerm()
+    {
+        do { } while(0);
+        return m_terms[m_terms.size() - 1];
+    }
+
+    void removeLastTerm()
+    {
+        do { } while(0);
+        m_terms.shrink(m_terms.size() - 1);
+    }
+
+    void setOnceThrough()
+    {
+        m_onceThrough = true;
+    }
+
+    bool onceThrough()
+    {
+        return m_onceThrough;
+    }
+
+    Vector<PatternTerm> m_terms;
+    PatternDisjunction* m_parent;
+    unsigned m_minimumSize;
+    bool m_onceThrough : 1;
+    bool m_hasFixedSize : 1;
+    bool m_startsWithBOL : 1;
+    bool m_containsBOL : 1;
+};
+
+struct PatternDisjunction {
+   
+public:
+    PatternDisjunction(PatternAlternative* parent = 0)
+        : m_parent(parent)
+        , m_hasFixedSize(false)
+    {
+    }
+
+    ~PatternDisjunction()
+    {
+        deleteAllValues(m_alternatives);
+    }
+
+    PatternAlternative* addNewAlternative()
+    {
+        PatternAlternative* alternative = js::OffTheBooks::new_<PatternAlternative>(this);
+        m_alternatives.append(alternative);
+        return alternative;
+    }
+
+    Vector<PatternAlternative*> m_alternatives;
+    PatternAlternative* m_parent;
+    unsigned m_minimumSize;
+    unsigned m_callFrameSize;
+    bool m_hasFixedSize;
+};
+
+
+
+
+
+CharacterClass* newlineCreate();
+CharacterClass* digitsCreate();
+CharacterClass* spacesCreate();
+CharacterClass* wordcharCreate();
+CharacterClass* nondigitsCreate();
+CharacterClass* nonspacesCreate();
+CharacterClass* nonwordcharCreate();
+
+struct TermChain {
+    TermChain(PatternTerm term)
+        : term(term)
+    {}
+
+    PatternTerm term;
+    Vector<TermChain> hotTerms;
+};
+
+struct YarrPattern {
+    YarrPattern(const UString& pattern, bool ignoreCase, bool multiline, ErrorCode* error);
+
+    ~YarrPattern()
+    {
+        deleteAllValues(m_disjunctions);
+        deleteAllValues(m_userCharacterClasses);
+    }
+
+    void reset()
+    {
+        m_numSubpatterns = 0;
+        m_maxBackReference = 0;
+
+        m_containsBackreferences = false;
+        m_containsBOL = false;
+
+        newlineCached = 0;
+        digitsCached = 0;
+        spacesCached = 0;
+        wordcharCached = 0;
+        nondigitsCached = 0;
+        nonspacesCached = 0;
+        nonwordcharCached = 0;
+
+        deleteAllValues(m_disjunctions);
+        m_disjunctions.clear();
+        deleteAllValues(m_userCharacterClasses);
+        m_userCharacterClasses.clear();
+    }
+
+    bool containsIllegalBackReference()
+    {
+        return m_maxBackReference > m_numSubpatterns;
+    }
+
+    CharacterClass* newlineCharacterClass()
+    {
+        if (!newlineCached)
+            m_userCharacterClasses.append(newlineCached = newlineCreate());
+        return newlineCached;
+    }
+    CharacterClass* digitsCharacterClass()
+    {
+        if (!digitsCached)
+            m_userCharacterClasses.append(digitsCached = digitsCreate());
+        return digitsCached;
+    }
+    CharacterClass* spacesCharacterClass()
+    {
+        if (!spacesCached)
+            m_userCharacterClasses.append(spacesCached = spacesCreate());
+        return spacesCached;
+    }
+    CharacterClass* wordcharCharacterClass()
+    {
+        if (!wordcharCached)
+            m_userCharacterClasses.append(wordcharCached = wordcharCreate());
+        return wordcharCached;
+    }
+    CharacterClass* nondigitsCharacterClass()
+    {
+        if (!nondigitsCached)
+            m_userCharacterClasses.append(nondigitsCached = nondigitsCreate());
+        return nondigitsCached;
+    }
+    CharacterClass* nonspacesCharacterClass()
+    {
+        if (!nonspacesCached)
+            m_userCharacterClasses.append(nonspacesCached = nonspacesCreate());
+        return nonspacesCached;
+    }
+    CharacterClass* nonwordcharCharacterClass()
+    {
+        if (!nonwordcharCached)
+            m_userCharacterClasses.append(nonwordcharCached = nonwordcharCreate());
+        return nonwordcharCached;
+    }
+
+    bool m_ignoreCase : 1;
+    bool m_multiline : 1;
+    bool m_containsBackreferences : 1;
+    bool m_containsBOL : 1;
+    unsigned m_numSubpatterns;
+    unsigned m_maxBackReference;
+    PatternDisjunction* m_body;
+    Vector<PatternDisjunction*, 4> m_disjunctions;
+    Vector<CharacterClass*> m_userCharacterClasses;
+
+private:
+    ErrorCode compile(const UString& patternString);
+
+    CharacterClass* newlineCached;
+    CharacterClass* digitsCached;
+    CharacterClass* spacesCached;
+    CharacterClass* wordcharCached;
+    CharacterClass* nondigitsCached;
+    CharacterClass* nonspacesCached;
+    CharacterClass* nonwordcharCached;
+};
+
+} }
+# 34 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrInterpreter.h" 2
+
+namespace WTF {
+class BumpPointerAllocator;
+}
+using WTF::BumpPointerAllocator;
+
+namespace JSC { namespace Yarr {
+
+class ByteDisjunction;
+
+struct ByteTerm {
+    enum Type {
+        TypeBodyAlternativeBegin,
+        TypeBodyAlternativeDisjunction,
+        TypeBodyAlternativeEnd,
+        TypeAlternativeBegin,
+        TypeAlternativeDisjunction,
+        TypeAlternativeEnd,
+        TypeSubpatternBegin,
+        TypeSubpatternEnd,
+        TypeAssertionBOL,
+        TypeAssertionEOL,
+        TypeAssertionWordBoundary,
+        TypePatternCharacterOnce,
+        TypePatternCharacterFixed,
+        TypePatternCharacterGreedy,
+        TypePatternCharacterNonGreedy,
+        TypePatternCasedCharacterOnce,
+        TypePatternCasedCharacterFixed,
+        TypePatternCasedCharacterGreedy,
+        TypePatternCasedCharacterNonGreedy,
+        TypeCharacterClass,
+        TypeBackReference,
+        TypeParenthesesSubpattern,
+        TypeParenthesesSubpatternOnceBegin,
+        TypeParenthesesSubpatternOnceEnd,
+        TypeParenthesesSubpatternTerminalBegin,
+        TypeParenthesesSubpatternTerminalEnd,
+        TypeParentheticalAssertionBegin,
+        TypeParentheticalAssertionEnd,
+        TypeCheckInput,
+        TypeUncheckInput
+    } type;
+    union {
+        struct {
+            union {
+                UChar patternCharacter;
+                struct {
+                    UChar lo;
+                    UChar hi;
+                } casedCharacter;
+                CharacterClass* characterClass;
+                unsigned subpatternId;
+            };
+            union {
+                ByteDisjunction* parenthesesDisjunction;
+                unsigned parenthesesWidth;
+            };
+            QuantifierType quantityType;
+            unsigned quantityCount;
+        } atom;
+        struct {
+            int next;
+            int end;
+            bool onceThrough;
+        } alternative;
+        unsigned checkInputCount;
+    };
+    unsigned frameLocation;
+    bool m_capture : 1;
+    bool m_invert : 1;
+    int inputPosition;
+
+
+    ByteTerm()
+    {
+    }
+
+    ByteTerm(UChar ch, int inputPos, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType)
+        : frameLocation(frameLocation)
+        , m_capture(false)
+        , m_invert(false)
+    {
+        switch (quantityType) {
+        case QuantifierFixedCount:
+            type = (quantityCount == 1) ? ByteTerm::TypePatternCharacterOnce : ByteTerm::TypePatternCharacterFixed;
+            break;
+        case QuantifierGreedy:
+            type = ByteTerm::TypePatternCharacterGreedy;
+            break;
+        case QuantifierNonGreedy:
+            type = ByteTerm::TypePatternCharacterNonGreedy;
+            break;
+        }
+
+        atom.patternCharacter = ch;
+        atom.quantityType = quantityType;
+        atom.quantityCount = quantityCount;
+        inputPosition = inputPos;
+    }
+
+    ByteTerm(UChar lo, UChar hi, int inputPos, unsigned frameLocation, unsigned quantityCount, QuantifierType quantityType)
+        : frameLocation(frameLocation)
+        , m_capture(false)
+        , m_invert(false)
+    {
+        switch (quantityType) {
+        case QuantifierFixedCount:
+            type = (quantityCount == 1) ? ByteTerm::TypePatternCasedCharacterOnce : ByteTerm::TypePatternCasedCharacterFixed;
+            break;
+        case QuantifierGreedy:
+            type = ByteTerm::TypePatternCasedCharacterGreedy;
+            break;
+        case QuantifierNonGreedy:
+            type = ByteTerm::TypePatternCasedCharacterNonGreedy;
+            break;
+        }
+
+        atom.casedCharacter.lo = lo;
+        atom.casedCharacter.hi = hi;
+        atom.quantityType = quantityType;
+        atom.quantityCount = quantityCount;
+        inputPosition = inputPos;
+    }
+
+    ByteTerm(CharacterClass* characterClass, bool invert, int inputPos)
+        : type(ByteTerm::TypeCharacterClass)
+        , m_capture(false)
+        , m_invert(invert)
+    {
+        atom.characterClass = characterClass;
+        atom.quantityType = QuantifierFixedCount;
+        atom.quantityCount = 1;
+        inputPosition = inputPos;
+    }
+
+    ByteTerm(Type type, unsigned subpatternId, ByteDisjunction* parenthesesInfo, bool capture, int inputPos)
+        : type(type)
+        , m_capture(capture)
+        , m_invert(false)
+    {
+        atom.subpatternId = subpatternId;
+        atom.parenthesesDisjunction = parenthesesInfo;
+        atom.quantityType = QuantifierFixedCount;
+        atom.quantityCount = 1;
+        inputPosition = inputPos;
+    }
+
+    ByteTerm(Type type, bool invert = false)
+        : type(type)
+        , m_capture(false)
+        , m_invert(invert)
+    {
+        atom.quantityType = QuantifierFixedCount;
+        atom.quantityCount = 1;
+    }
+
+    ByteTerm(Type type, unsigned subpatternId, bool capture, bool invert, int inputPos)
+        : type(type)
+        , m_capture(capture)
+        , m_invert(invert)
+    {
+        atom.subpatternId = subpatternId;
+        atom.quantityType = QuantifierFixedCount;
+        atom.quantityCount = 1;
+        inputPosition = inputPos;
+    }
+
+    static ByteTerm BOL(int inputPos)
+    {
+        ByteTerm term(TypeAssertionBOL);
+        term.inputPosition = inputPos;
+        return term;
+    }
+
+    static ByteTerm CheckInput(unsigned count)
+    {
+        ByteTerm term(TypeCheckInput);
+        term.checkInputCount = count;
+        return term;
+    }
+
+    static ByteTerm UncheckInput(unsigned count)
+    {
+        ByteTerm term(TypeUncheckInput);
+        term.checkInputCount = count;
+        return term;
+    }
+
+    static ByteTerm EOL(int inputPos)
+    {
+        ByteTerm term(TypeAssertionEOL);
+        term.inputPosition = inputPos;
+        return term;
+    }
+
+    static ByteTerm WordBoundary(bool invert, int inputPos)
+    {
+        ByteTerm term(TypeAssertionWordBoundary, invert);
+        term.inputPosition = inputPos;
+        return term;
+    }
+
+    static ByteTerm BackReference(unsigned subpatternId, int inputPos)
+    {
+        return ByteTerm(TypeBackReference, subpatternId, false, false, inputPos);
+    }
+
+    static ByteTerm BodyAlternativeBegin(bool onceThrough)
+    {
+        ByteTerm term(TypeBodyAlternativeBegin);
+        term.alternative.next = 0;
+        term.alternative.end = 0;
+        term.alternative.onceThrough = onceThrough;
+        return term;
+    }
+
+    static ByteTerm BodyAlternativeDisjunction(bool onceThrough)
+    {
+        ByteTerm term(TypeBodyAlternativeDisjunction);
+        term.alternative.next = 0;
+        term.alternative.end = 0;
+        term.alternative.onceThrough = onceThrough;
+        return term;
+    }
+
+    static ByteTerm BodyAlternativeEnd()
+    {
+        ByteTerm term(TypeBodyAlternativeEnd);
+        term.alternative.next = 0;
+        term.alternative.end = 0;
+        term.alternative.onceThrough = false;
+        return term;
+    }
+
+    static ByteTerm AlternativeBegin()
+    {
+        ByteTerm term(TypeAlternativeBegin);
+        term.alternative.next = 0;
+        term.alternative.end = 0;
+        term.alternative.onceThrough = false;
+        return term;
+    }
+
+    static ByteTerm AlternativeDisjunction()
+    {
+        ByteTerm term(TypeAlternativeDisjunction);
+        term.alternative.next = 0;
+        term.alternative.end = 0;
+        term.alternative.onceThrough = false;
+        return term;
+    }
+
+    static ByteTerm AlternativeEnd()
+    {
+        ByteTerm term(TypeAlternativeEnd);
+        term.alternative.next = 0;
+        term.alternative.end = 0;
+        term.alternative.onceThrough = false;
+        return term;
+    }
+
+    static ByteTerm SubpatternBegin()
+    {
+        return ByteTerm(TypeSubpatternBegin);
+    }
+
+    static ByteTerm SubpatternEnd()
+    {
+        return ByteTerm(TypeSubpatternEnd);
+    }
+
+    bool invert()
+    {
+        return m_invert;
+    }
+
+    bool capture()
+    {
+        return m_capture;
+    }
+};
+
+class ByteDisjunction {
+   
+public:
+    ByteDisjunction(unsigned numSubpatterns, unsigned frameSize)
+        : m_numSubpatterns(numSubpatterns)
+        , m_frameSize(frameSize)
+    {
+    }
+
+    Vector<ByteTerm> terms;
+    unsigned m_numSubpatterns;
+    unsigned m_frameSize;
+};
+
+struct BytecodePattern {
+   
+public:
+    BytecodePattern(PassOwnPtr<ByteDisjunction> body, const Vector<ByteDisjunction*> &allParenthesesInfo, YarrPattern& pattern, BumpPointerAllocator* allocator)
+        : m_body(body)
+        , m_ignoreCase(pattern.m_ignoreCase)
+        , m_multiline(pattern.m_multiline)
+        , m_allocator(allocator)
+    {
+        newlineCharacterClass = pattern.newlineCharacterClass();
+        wordcharCharacterClass = pattern.wordcharCharacterClass();
+
+        m_allParenthesesInfo.append(allParenthesesInfo);
+        m_userCharacterClasses.append(pattern.m_userCharacterClasses);
+
+
+
+        pattern.m_userCharacterClasses.clear();
+    }
+
+    ~BytecodePattern()
+    {
+        deleteAllValues(m_allParenthesesInfo);
+        deleteAllValues(m_userCharacterClasses);
+    }
+
+    OwnPtr<ByteDisjunction> m_body;
+    bool m_ignoreCase;
+    bool m_multiline;
+
+
+    BumpPointerAllocator* m_allocator;
+
+    CharacterClass* newlineCharacterClass;
+    CharacterClass* wordcharCharacterClass;
+
+private:
+    Vector<ByteDisjunction*> m_allParenthesesInfo;
+    Vector<CharacterClass*> m_userCharacterClasses;
+};
+
+} }
+# 38 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/Yarr.h" 2
+
+
+namespace JSC { namespace Yarr {
+
+#define YarrStackSpaceForBackTrackInfoPatternCharacter 1
+#define YarrStackSpaceForBackTrackInfoCharacterClass 1
+#define YarrStackSpaceForBackTrackInfoBackReference 2
+#define YarrStackSpaceForBackTrackInfoAlternative 1
+#define YarrStackSpaceForBackTrackInfoParentheticalAssertion 1
+#define YarrStackSpaceForBackTrackInfoParenthesesOnce 1
+#define YarrStackSpaceForBackTrackInfoParenthesesTerminal 1
+#define YarrStackSpaceForBackTrackInfoParentheses 2
+
+static const unsigned quantifyInfinite = (2147483647 * 2U + 1U);
+
+
+
+static const unsigned matchLimit = 1000000;
+
+enum JSRegExpResult {
+    JSRegExpMatch = 1,
+    JSRegExpNoMatch = 0,
+    JSRegExpErrorNoMatch = -1,
+    JSRegExpErrorHitLimit = -2,
+    JSRegExpErrorNoMemory = -3,
+    JSRegExpErrorInternal = -4
+};
+
+PassOwnPtr<BytecodePattern> byteCompile(YarrPattern&, BumpPointerAllocator*);
+int interpret(BytecodePattern*, const UChar* input, unsigned start, unsigned length, int* output);
+
+} }
+# 20 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpObject.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrJIT.h" 1
+# 31 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrJIT.h"
+#define YarrJIT_h 
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssembler.h" 1
+# 31 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssembler.h"
+#define MacroAssembler_h 
+# 42 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssembler.h"
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssemblerARM.h" 1
+# 33 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssemblerARM.h"
+#define MacroAssemblerARM_h 
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/ARMAssembler.h" 1
+# 32 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/ARMAssembler.h"
+#define ARMAssembler_h 
+# 41 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/ARMAssembler.h"
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AssemblerBufferWithConstantPool.h" 1
+# 32 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AssemblerBufferWithConstantPool.h"
+#define AssemblerBufferWithConstantPool_h 
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AssemblerBuffer.h" 1
+# 31 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AssemblerBuffer.h"
+#define AssemblerBuffer_h 
+
+
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Assertions.h" 1
+# 40 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AssemblerBuffer.h" 2
+
+namespace JSC {
+
+    class AssemblerBuffer {
+        static const int inlineCapacity = 256;
+    public:
+        AssemblerBuffer()
+            : m_buffer(m_inlineBuffer)
+            , m_capacity(inlineCapacity)
+            , m_size(0)
+            , m_oom(false)
+        {
+        }
+
+        ~AssemblerBuffer()
+        {
+            if (m_buffer != m_inlineBuffer)
+                free(m_buffer);
+        }
+
+        void ensureSpace(int space)
+        {
+            if (m_size > m_capacity - space)
+                grow();
+        }
+
+        bool isAligned(int alignment) const
+        {
+            return !(m_size & (alignment - 1));
+        }
+
+        void putByteUnchecked(int value)
+        {
+            do { } while(0);
+            m_buffer[m_size] = char(value);
+            m_size++;
+        }
+
+        void putByte(int value)
+        {
+            if (m_size > m_capacity - 4)
+                grow();
+            putByteUnchecked(value);
+        }
+
+        void putShortUnchecked(int value)
+        {
+            do { } while(0);
+            *reinterpret_cast<short*>(&m_buffer[m_size]) = short(value);
+            m_size += 2;
+        }
+
+        void putShort(int value)
+        {
+            if (m_size > m_capacity - 4)
+                grow();
+            putShortUnchecked(value);
+        }
+
+        void putIntUnchecked(int value)
+        {
+            do { } while(0);
+            *reinterpret_cast<int*>(&m_buffer[m_size]) = value;
+            m_size += 4;
+        }
+
+        void putInt64Unchecked(int64_t value)
+        {
+            do { } while(0);
+            *reinterpret_cast<int64_t*>(&m_buffer[m_size]) = value;
+            m_size += 8;
+        }
+
+        void putInt(int value)
+        {
+            if (m_size > m_capacity - 4)
+                grow();
+            putIntUnchecked(value);
+        }
+
+        void* data() const
+        {
+            return m_buffer;
+        }
+
+        int size() const
+        {
+            return m_size;
+        }
+
+        bool oom() const
+        {
+            return m_oom;
+        }
+
+
+
+
+
+        void* executableAllocAndCopy(ExecutableAllocator* allocator, ExecutablePool** poolp, CodeKind kind)
+        {
+            if (m_oom || m_size == 0) {
+                *poolp = __null;
+                return 0;
+            }
+
+            void* result = allocator->alloc(m_size, poolp, kind);
+            if (!result) {
+                *poolp = __null;
+                return 0;
+            }
+            do { } while(0);
+
+            ExecutableAllocator::makeWritable(result, m_size);
+
+            return memcpy(result, m_buffer, m_size);
+        }
+
+        unsigned char *buffer() const {
+            do { } while(0);
+            return reinterpret_cast<unsigned char *>(m_buffer);
+        }
+
+    protected:
+        void append(const char* data, int size)
+        {
+            if (m_size > m_capacity - size)
+                grow(size);
+
+
+            if (m_oom)
+                return;
+            memcpy(m_buffer + m_size, data, size);
+            m_size += size;
+        }
+# 191 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AssemblerBuffer.h"
+        void grow(int extraCapacity = 0)
+        {
+
+
+
+
+            int newCapacity = m_capacity + m_capacity + extraCapacity;
+            char* newBuffer;
+
+            if (m_buffer == m_inlineBuffer) {
+                newBuffer = static_cast<char*>(malloc(newCapacity));
+                if (!newBuffer) {
+                    m_size = 0;
+                    m_oom = true;
+                    return;
+                }
+                memcpy(newBuffer, m_buffer, m_size);
+            } else {
+                newBuffer = static_cast<char*>(realloc(m_buffer, newCapacity));
+                if (!newBuffer) {
+                    m_size = 0;
+                    m_oom = true;
+                    return;
+                }
+            }
+
+            m_buffer = newBuffer;
+            m_capacity = newCapacity;
+        }
+
+        char m_inlineBuffer[inlineCapacity];
+        char* m_buffer;
+        int m_capacity;
+        int m_size;
+        bool m_oom;
+    };
+
+}
+# 39 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AssemblerBufferWithConstantPool.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/SegmentedVector.h" 1
+# 30 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/SegmentedVector.h"
+#define SegmentedVector_h 
+
+
+
+
+namespace WTF {
+
+
+    template <typename T, size_t SegmentSize> class SegmentedVector;
+    template <typename T, size_t SegmentSize> class SegmentedVectorIterator {
+    private:
+        friend class SegmentedVector<T, SegmentSize>;
+    public:
+        typedef SegmentedVectorIterator<T, SegmentSize> Iterator;
+
+        ~SegmentedVectorIterator() { }
+
+        T& operator*() const { return (*m_vector.m_segments[m_segment])[m_index]; }
+        T* operator->() const { return &(*m_vector.m_segments[m_segment])[m_index]; }
+
+
+        Iterator& operator++()
+        {
+            do { } while(0);
+            ++m_index;
+
+            if (m_index >= m_vector.m_segments[m_segment]->length()) {
+
+                if (m_segment + 1 < m_vector.m_segments.length()) {
+
+                    do { } while(0);
+                    ++m_segment;
+                    m_index = 0;
+                } else {
+
+                    m_segment = 0;
+                    m_index = SegmentSize;
+                }
+            }
+            return *this;
+        }
+
+        bool operator==(const Iterator& other) const
+        {
+            return (m_index == other.m_index && m_segment = other.m_segment && &m_vector == &other.m_vector);
+        }
+
+        bool operator!=(const Iterator& other) const
+        {
+            return (m_index != other.m_index || m_segment != other.m_segment || &m_vector != &other.m_vector);
+        }
+
+        SegmentedVectorIterator& operator=(const SegmentedVectorIterator<T, SegmentSize>& other)
+        {
+            m_vector = other.m_vector;
+            m_segment = other.m_segment;
+            m_index = other.m_index;
+            return *this;
+        }
+
+    private:
+        SegmentedVectorIterator(SegmentedVector<T, SegmentSize>& vector, size_t segment, size_t index)
+            : m_vector(vector)
+            , m_segment(segment)
+            , m_index(index)
+        {
+        }
+
+        SegmentedVector<T, SegmentSize>& m_vector;
+        size_t m_segment;
+        size_t m_index;
+    };
+
+
+
+
+    template <typename T, size_t SegmentSize> class SegmentedVector {
+        friend class SegmentedVectorIterator<T, SegmentSize>;
+    public:
+        typedef SegmentedVectorIterator<T, SegmentSize> Iterator;
+
+        SegmentedVector()
+            : m_size(0)
+        {
+            m_segments.append(&m_inlineSegment);
+        }
+
+        ~SegmentedVector()
+        {
+            deleteAllSegments();
+        }
+
+        size_t size() const { return m_size; }
+        bool isEmpty() const { return !size(); }
+
+        T& at(size_t index)
+        {
+            if (index < SegmentSize)
+                return m_inlineSegment[index];
+            return segmentFor(index)->at(subscriptFor(index));
+        }
+
+        T& operator[](size_t index)
+        {
+            return at(index);
+        }
+
+        T& last()
+        {
+            return at(size() - 1);
+        }
+
+        template <typename U> void append(const U& value)
+        {
+            ++m_size;
+
+            if (m_size <= SegmentSize) {
+
+                m_inlineSegment.append(value);
+                return;
+            }
+
+            if (!segmentExistsFor(m_size - 1))
+                m_segments.append(new Segment);
+
+            segmentFor(m_size - 1)->append(value);
+        }
+
+        T& alloc()
+        {
+            append<T>(T());
+            return last();
+        }
+
+        void removeLast()
+        {
+            if (m_size <= SegmentSize)
+                m_inlineSegment.removeLast();
+            else
+                segmentFor(m_size - 1)->removeLast();
+            --m_size;
+        }
+
+        void grow(size_t size)
+        {
+            do { } while(0);
+            ensureSegmentsFor(size);
+            m_size = size;
+        }
+
+        void clear()
+        {
+            deleteAllSegments();
+            m_segments.resize(1);
+            m_inlineSegment.clear();
+            m_size = 0;
+        }
+
+        Iterator begin()
+        {
+            return Iterator(*this, 0, m_size ? 0 : SegmentSize);
+        }
+
+        Iterator end()
+        {
+            return Iterator(*this, 0, SegmentSize);
+        }
+
+    private:
+        typedef js::Vector<T, SegmentSize ,js::SystemAllocPolicy > Segment;
+
+        void deleteAllSegments()
+        {
+
+
+
+            for (size_t i = 1; i < m_segments.length(); i++)
+                delete m_segments[i];
+        }
+
+        bool segmentExistsFor(size_t index)
+        {
+
+            return index / SegmentSize < m_segments.length();
+        }
+
+        Segment* segmentFor(size_t index)
+        {
+            return m_segments[index / SegmentSize];
+        }
+
+        size_t subscriptFor(size_t index)
+        {
+            return index % SegmentSize;
+        }
+
+        void ensureSegmentsFor(size_t size)
+        {
+            size_t segmentCount = m_size / SegmentSize;
+            if (m_size % SegmentSize)
+                ++segmentCount;
+
+            segmentCount = segmentCount > 1 ? segmentCount : 1;
+
+            size_t neededSegmentCount = size / SegmentSize;
+            if (size % SegmentSize)
+                ++neededSegmentCount;
+
+
+            size_t end = neededSegmentCount - 1;
+            for (size_t i = segmentCount - 1; i < end; ++i)
+                ensureSegment(i, SegmentSize);
+
+
+            ensureSegment(end, subscriptFor(size - 1) + 1);
+        }
+
+        void ensureSegment(size_t segmentIndex, size_t size)
+        {
+            do { } while(0);
+            if (segmentIndex == m_segments.size())
+                m_segments.append(new Segment);
+            m_segments[segmentIndex]->grow(size);
+        }
+
+        size_t m_size;
+        Segment m_inlineSegment;
+        js::Vector<Segment*, 32 ,js::SystemAllocPolicy > m_segments;
+    };
+
+}
+
+using WTF::SegmentedVector;
+# 40 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AssemblerBufferWithConstantPool.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Assertions.h" 1
+# 41 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AssemblerBufferWithConstantPool.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/Logging.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/Logging.h"
+#define jsjaeger_logging_h__ 
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/prmjtime.h" 1
+# 13 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/Logging.h" 2
+
+
+
+namespace js {
+
+#define JSPEW_CHAN_MAP(_) _(Abort) _(Scripts) _(Prof) _(JSOps) _(Insns) _(VMFrame) _(PICs) _(SlowCalls) _(Analysis) _(Regalloc) _(Inlining) _(Recompile)
+# 32 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/Logging.h"
+enum JaegerSpewChannel {
+#define _(name) JSpew_ ##name,
+    JSpew_Abort, JSpew_Scripts, JSpew_Prof, JSpew_JSOps, JSpew_Insns, JSpew_VMFrame, JSpew_PICs, JSpew_SlowCalls, JSpew_Analysis, JSpew_Regalloc, JSpew_Inlining, JSpew_Recompile,
+#undef _
+    JSpew_Terminator
+};
+# 88 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/Logging.h"
+static inline void JaegerSpew(JaegerSpewChannel channel, const char *fmt, ...)
+{
+}
+
+
+
+}
+# 43 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AssemblerBufferWithConstantPool.h" 2
+
+#define ASSEMBLER_HAS_CONSTANT_POOL 1
+
+namespace JSC {
+# 94 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AssemblerBufferWithConstantPool.h"
+template <int maxPoolSize, int barrierSize, int maxInstructionSize, class AssemblerType>
+class AssemblerBufferWithConstantPool: public AssemblerBuffer {
+    typedef SegmentedVector<uint32_t, 512> LoadOffsets;
+public:
+    enum {
+        UniqueConst,
+        ReusableConst,
+        UnusedEntry
+    };
+
+    AssemblerBufferWithConstantPool()
+        : AssemblerBuffer()
+        , m_numConsts(0)
+        , m_maxDistance(maxPoolSize)
+        , m_lastConstDelta(0)
+        , m_flushCount(0)
+    {
+        m_pool = static_cast<uint32_t*>(malloc(maxPoolSize));
+        m_mask = static_cast<char*>(malloc(maxPoolSize / sizeof(uint32_t)));
+    }
+
+    ~AssemblerBufferWithConstantPool()
+    {
+        free(m_mask);
+        free(m_pool);
+    }
+
+    void ensureSpace(int space)
+    {
+        flushIfNoSpaceFor(space);
+        AssemblerBuffer::ensureSpace(space);
+    }
+
+    void ensureSpace(int insnSpace, int constSpace)
+    {
+        flushIfNoSpaceFor(insnSpace, constSpace);
+        AssemblerBuffer::ensureSpace(insnSpace);
+    }
+
+    bool isAligned(int alignment)
+    {
+        flushIfNoSpaceFor(alignment);
+        return AssemblerBuffer::isAligned(alignment);
+    }
+
+    void putByteUnchecked(int value)
+    {
+        AssemblerBuffer::putByteUnchecked(value);
+        correctDeltas(1);
+    }
+
+    void putByte(int value)
+    {
+        flushIfNoSpaceFor(1);
+        AssemblerBuffer::putByte(value);
+        correctDeltas(1);
+    }
+
+    void putShortUnchecked(int value)
+    {
+        AssemblerBuffer::putShortUnchecked(value);
+        correctDeltas(2);
+    }
+
+    void putShort(int value)
+    {
+        flushIfNoSpaceFor(2);
+        AssemblerBuffer::putShort(value);
+        correctDeltas(2);
+    }
+
+    void putIntUnchecked(int value)
+    {
+        AssemblerBuffer::putIntUnchecked(value);
+        correctDeltas(4);
+    }
+
+    void putInt(int value)
+    {
+        flushIfNoSpaceFor(4);
+        AssemblerBuffer::putInt(value);
+        correctDeltas(4);
+    }
+
+    void putInt64Unchecked(int64_t value)
+    {
+        AssemblerBuffer::putInt64Unchecked(value);
+        correctDeltas(8);
+    }
+
+    int size()
+    {
+        flushIfNoSpaceFor(maxInstructionSize, sizeof(uint64_t));
+        return AssemblerBuffer::size();
+    }
+
+    int uncheckedSize()
+    {
+        return AssemblerBuffer::size();
+    }
+
+    void* executableAllocAndCopy(ExecutableAllocator* allocator, ExecutablePool** poolp, CodeKind kind)
+    {
+        flushConstantPool(false);
+        return AssemblerBuffer::executableAllocAndCopy(allocator, poolp, kind);
+    }
+
+    void putIntWithConstantInt(uint32_t insn, uint32_t constant, bool isReusable = false)
+    {
+        flushIfNoSpaceFor(4, 4);
+
+        m_loadOffsets.append(AssemblerBuffer::size());
+        if (isReusable)
+            for (int i = 0; i < m_numConsts; ++i) {
+                if (m_mask[i] == ReusableConst && m_pool[i] == constant) {
+                    AssemblerBuffer::putInt(AssemblerType::patchConstantPoolLoad(insn, i));
+                    correctDeltas(4);
+                    return;
+                }
+            }
+
+        m_pool[m_numConsts] = constant;
+        m_mask[m_numConsts] = static_cast<char>(isReusable ? ReusableConst : UniqueConst);
+
+        AssemblerBuffer::putInt(AssemblerType::patchConstantPoolLoad(insn, m_numConsts));
+        ++m_numConsts;
+
+        correctDeltas(4, 4);
+    }
+
+
+    void flushWithoutBarrier(bool isForced = false)
+    {
+
+        if (isForced || (5 * m_numConsts * sizeof(uint32_t)) > (3 * maxPoolSize))
+            flushConstantPool(false);
+    }
+
+    uint32_t* poolAddress()
+    {
+        return m_pool;
+    }
+
+    int sizeOfConstantPool()
+    {
+        return m_numConsts;
+    }
+
+    int flushCount()
+    {
+        return m_flushCount;
+    }
+
+private:
+    void correctDeltas(int insnSize)
+    {
+        m_maxDistance -= insnSize;
+        do { } while(0);
+        m_lastConstDelta -= insnSize;
+        if (m_lastConstDelta < 0)
+            m_lastConstDelta = 0;
+    }
+
+    void correctDeltas(int insnSize, int constSize)
+    {
+        correctDeltas(insnSize);
+
+        m_maxDistance -= m_lastConstDelta;
+        do { } while(0);
+        m_lastConstDelta = constSize;
+    }
+
+    void flushConstantPool(bool useBarrier = true)
+    {
+        js::JaegerSpew(js::JSpew_Insns, " -- FLUSHING CONSTANT POOL WITH %d CONSTANTS --\n",
+                       m_numConsts);
+        if (m_numConsts == 0)
+            return;
+        m_flushCount++;
+        int alignPool = (AssemblerBuffer::size() + (useBarrier ? barrierSize : 0)) & (sizeof(uint64_t) - 1);
+
+        if (alignPool)
+            alignPool = sizeof(uint64_t) - alignPool;
+
+
+        if (useBarrier)
+            AssemblerBuffer::putInt(AssemblerType::placeConstantPoolBarrier(m_numConsts * sizeof(uint32_t) + alignPool));
+
+        if (alignPool) {
+            if (alignPool & 1)
+                AssemblerBuffer::putByte(AssemblerType::padForAlign8);
+            if (alignPool & 2)
+                AssemblerBuffer::putShort(AssemblerType::padForAlign16);
+            if (alignPool & 4)
+                AssemblerBuffer::putInt(AssemblerType::padForAlign32);
+        }
+
+        int constPoolOffset = AssemblerBuffer::size();
+        append(reinterpret_cast<char*>(m_pool), m_numConsts * sizeof(uint32_t));
+
+
+        for (LoadOffsets::Iterator iter = m_loadOffsets.begin(); iter != m_loadOffsets.end(); ++iter) {
+            void* loadAddr = reinterpret_cast<void*>(m_buffer + *iter);
+            AssemblerType::patchConstantPoolLoad(loadAddr, reinterpret_cast<void*>(m_buffer + constPoolOffset));
+        }
+
+        m_loadOffsets.clear();
+        m_numConsts = 0;
+        m_maxDistance = maxPoolSize;
+        do { } while(0);
+
+    }
+
+    void flushIfNoSpaceFor(int nextInsnSize)
+    {
+        if (m_numConsts == 0) {
+            m_maxDistance = maxPoolSize;
+            return;
+        }
+        int lastConstDelta = m_lastConstDelta > nextInsnSize ? m_lastConstDelta - nextInsnSize : 0;
+        if ((m_maxDistance < nextInsnSize + lastConstDelta + barrierSize + (int)sizeof(uint32_t)))
+            flushConstantPool();
+    }
+
+    void flushIfNoSpaceFor(int nextInsnSize, int nextConstSize)
+    {
+        if (m_numConsts == 0) {
+            m_maxDistance = maxPoolSize;
+            return;
+        }
+        if ((m_maxDistance < nextInsnSize + m_lastConstDelta + nextConstSize + barrierSize + (int)sizeof(uint32_t)) ||
+            (m_numConsts * sizeof(uint32_t) + nextConstSize >= maxPoolSize))
+            flushConstantPool();
+    }
+
+    uint32_t* m_pool;
+    char* m_mask;
+    LoadOffsets m_loadOffsets;
+
+    int m_numConsts;
+    int m_maxDistance;
+    int m_lastConstDelta;
+    int m_flushCount;
+};
+
+}
+# 42 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/ARMAssembler.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/wtf/Assertions.h" 1
+# 43 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/ARMAssembler.h" 2
+
+
+#define IPFX "        %s"
+#define ISPFX "        "
+# 57 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/ARMAssembler.h"
+#define MAYBE_PAD ""
+#define FIXME_INSN_PRINTING ((void) 0)
+
+
+
+
+
+namespace JSC {
+
+    typedef uint32_t ARMWord;
+
+    namespace ARMRegisters {
+        typedef enum {
+            r0 = 0,
+            r1,
+            r2,
+            r3,
+            S0 = r3,
+            r4,
+            r5,
+            r6,
+            r7,
+            r8,
+            S1 = r8,
+            r9,
+            r10,
+            r11,
+            r12,
+            ip = r12,
+            r13,
+            sp = r13,
+            r14,
+            lr = r14,
+            r15,
+            pc = r15
+        } RegisterID;
+
+        typedef enum {
+            d0,
+            d1,
+            d2,
+            d3,
+            SD0 = d3,
+            d4,
+            d5,
+            d6,
+            d7,
+            d8,
+            d9,
+            d10,
+            d11,
+            d12,
+            d13,
+            d14,
+            d15,
+            d16,
+            d17,
+            d18,
+            d19,
+            d20,
+            d21,
+            d22,
+            d23,
+            d24,
+            d25,
+            d26,
+            d27,
+            d28,
+            d29,
+            d30,
+            d31
+        } FPRegisterID;
+
+        inline FPRegisterID floatShadow(FPRegisterID s)
+        {
+            return (FPRegisterID)(s*2);
+        }
+        inline FPRegisterID doubleShadow(FPRegisterID d)
+        {
+            return (FPRegisterID)(d / 2);
+        }
+    }
+
+    class ARMAssembler {
+    public:
+
+
+
+
+
+
+        ARMAssembler() { }
+
+
+        typedef ARMRegisters::RegisterID RegisterID;
+        typedef ARMRegisters::FPRegisterID FPRegisterID;
+        typedef AssemblerBufferWithConstantPool<2048, 4, 4, ARMAssembler> ARMBuffer;
+        typedef SegmentedVector<int, 64> Jumps;
+
+        unsigned char *buffer() const { return m_buffer.buffer(); }
+        bool oom() const { return m_buffer.oom(); }
+
+
+        typedef enum {
+            EQ = 0x00000000,
+            NE = 0x10000000,
+            CS = 0x20000000,
+            CC = 0x30000000,
+            MI = 0x40000000,
+            PL = 0x50000000,
+            VS = 0x60000000,
+            VC = 0x70000000,
+            HI = 0x80000000,
+            LS = 0x90000000,
+            GE = 0xa0000000,
+            LT = 0xb0000000,
+            GT = 0xc0000000,
+            LE = 0xd0000000,
+            AL = 0xe0000000
+        } Condition;
+
+
+        enum {
+            AND = (0x0 << 21),
+            EOR = (0x1 << 21),
+            SUB = (0x2 << 21),
+            RSB = (0x3 << 21),
+            ADD = (0x4 << 21),
+            ADC = (0x5 << 21),
+            SBC = (0x6 << 21),
+            RSC = (0x7 << 21),
+            TST = (0x8 << 21),
+            TEQ = (0x9 << 21),
+            CMP = (0xa << 21),
+            CMN = (0xb << 21),
+            ORR = (0xc << 21),
+            MOV = (0xd << 21),
+            BIC = (0xe << 21),
+            MVN = (0xf << 21),
+            MUL = 0x00000090,
+            MULL = 0x00c00090,
+            FCPYD = 0x0eb00b40,
+            FADDD = 0x0e300b00,
+            FNEGD = 0x0eb10b40,
+            FABSD = 0x0eb00bc0,
+            FDIVD = 0x0e800b00,
+            FSUBD = 0x0e300b40,
+            FMULD = 0x0e200b00,
+            FCMPD = 0x0eb40b40,
+            FSQRTD = 0x0eb10bc0,
+            DTR = 0x05000000,
+            LDRH = 0x00100090,
+            STRH = 0x00000090,
+            DTRH = 0x00000090,
+            STMDB = 0x09200000,
+            LDMIA = 0x08b00000,
+            B = 0x0a000000,
+            BL = 0x0b000000
+
+           ,BX = 0x012fff10
+
+
+           ,CLZ = 0x016f0f10,
+            BKPT = 0xe1200070,
+            BLX = 0x012fff30
+
+
+           ,MOVW = 0x03000000,
+            MOVT = 0x03400000
+
+        };
+
+        enum {
+            OP2_IMM = (1 << 25),
+            OP2_IMMh = (1 << 22),
+            OP2_INV_IMM = (1 << 26),
+            SET_CC = (1 << 20),
+            OP2_OFSREG = (1 << 25),
+            DT_UP = (1 << 23),
+            DT_BYTE = (1 << 22),
+            DT_WB = (1 << 21),
+
+            DT_PRE = (1 << 24),
+
+            HDT_UH = (1 << 5),
+
+            HDT_IMM = (1 << 22),
+
+            HDT_S = (1 << 6),
+            DT_LOAD = (1 << 20)
+        };
+
+
+        enum {
+            BRANCH_MASK = 0x00ffffff,
+            NONARM = 0xf0000000,
+            SDT_MASK = 0x0c000000,
+            SDT_OFFSET_MASK = 0xfff
+        };
+
+        enum {
+            BOFFSET_MIN = -0x00800000,
+            BOFFSET_MAX = 0x007fffff,
+            SDT = 0x04000000
+        };
+
+        enum {
+            padForAlign8 = (int)0x00,
+            padForAlign16 = (int)0x0000,
+            padForAlign32 = (int)0xe12fff7f
+        };
+
+        typedef enum {
+            LSL = 0,
+            LSR = 1,
+            ASR = 2,
+            ROR = 3
+        } Shift;
+
+        static const ARMWord INVALID_IMM = 0xf0000000;
+        static const ARMWord InvalidBranchTarget = 0xffffffff;
+        static const int DefaultPrefetching = 2;
+
+        class JmpSrc {
+            friend class ARMAssembler;
+        public:
+            JmpSrc()
+                : m_offset(-1)
+            {
+            }
+
+        private:
+            JmpSrc(int offset)
+                : m_offset(offset)
+            {
+            }
+
+            int m_offset;
+        };
+
+        class JmpDst {
+            friend class ARMAssembler;
+        public:
+            JmpDst()
+                : m_offset(-1)
+                , m_used(false)
+            {
+            }
+
+            bool isUsed() const { return m_used; }
+            void used() { m_used = true; }
+            bool isValid() const { return m_offset != -1; }
+        private:
+            JmpDst(int offset)
+                : m_offset(offset)
+                , m_used(false)
+            {
+                do { } while(0);
+            }
+
+            int m_offset : 31;
+            bool m_used : 1;
+        };
+
+
+
+        void emitInst(ARMWord op, int rd, int rn, ARMWord op2)
+        {
+            do { } while(0);
+            m_buffer.putInt(op | RN(rn) | RD(rd) | op2);
+        }
+
+
+
+
+
+
+        ARMWord getOp2RotLSL(int lsl)
+        {
+            do { } while(0);
+            do { } while(0);
+
+            return (-(lsl/2) & 0xf) << 8;
+        }
+
+        void and_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("and", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | AND, rd, rn, op2);
+        }
+
+        void ands_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("ands", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | AND | SET_CC, rd, rn, op2);
+        }
+
+        void eor_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("eor", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | EOR, rd, rn, op2);
+        }
+
+        void eors_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("eors", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | EOR | SET_CC, rd, rn, op2);
+        }
+
+        void sub_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("sub", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | SUB, rd, rn, op2);
+        }
+
+        void subs_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("subs", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | SUB | SET_CC, rd, rn, op2);
+        }
+
+        void rsb_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("rsb", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | RSB, rd, rn, op2);
+        }
+
+        void rsbs_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("rsbs", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | RSB | SET_CC, rd, rn, op2);
+        }
+
+        void add_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("add", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | ADD, rd, rn, op2);
+        }
+
+        void adds_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("adds", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | ADD | SET_CC, rd, rn, op2);
+        }
+
+        void adc_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("adc", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | ADC, rd, rn, op2);
+        }
+
+        void adcs_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("adcs", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | ADC | SET_CC, rd, rn, op2);
+        }
+
+        void sbc_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("sbc", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | SBC, rd, rn, op2);
+        }
+
+        void sbcs_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("sbcs", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | SBC | SET_CC, rd, rn, op2);
+        }
+
+        void rsc_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("rsc", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | RSC, rd, rn, op2);
+        }
+
+        void rscs_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("rscs", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | RSC | SET_CC, rd, rn, op2);
+        }
+
+        void tst_r(int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("tst", cc, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | TST | SET_CC, 0, rn, op2);
+        }
+
+        void teq_r(int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("teq", cc, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | TEQ | SET_CC, 0, rn, op2);
+        }
+
+        void cmp_r(int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("cmp", cc, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | CMP | SET_CC, 0, rn, op2);
+        }
+
+        void cmn_r(int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("cmn", cc, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | CMN | SET_CC, 0, rn, op2);
+        }
+
+        void orr_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("orr", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | ORR, rd, rn, op2);
+        }
+
+        void orrs_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("orrs", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | ORR | SET_CC, rd, rn, op2);
+        }
+
+        void mov_r(int rd, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("mov", cc, rd, op2);
+            emitInst(static_cast<ARMWord>(cc) | MOV, rd, ARMRegisters::r0, op2);
+        }
+
+
+        void movw_r(int rd, ARMWord op2, Condition cc = AL)
+        {
+            do { } while(0);
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, 0x%04x\n", "", "movw", nameGpReg(rd), (op2 & 0xfff) | ((op2 >> 4) & 0xf000));
+            m_buffer.putInt(static_cast<ARMWord>(cc) | MOVW | RD(rd) | op2);
+        }
+
+        void movt_r(int rd, ARMWord op2, Condition cc = AL)
+        {
+            do { } while(0);
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, 0x%04x\n", "", "movt", nameGpReg(rd), (op2 & 0xfff) | ((op2 >> 4) & 0xf000));
+            m_buffer.putInt(static_cast<ARMWord>(cc) | MOVT | RD(rd) | op2);
+        }
+
+
+        void movs_r(int rd, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("movs", cc, rd, op2);
+            emitInst(static_cast<ARMWord>(cc) | MOV | SET_CC, rd, ARMRegisters::r0, op2);
+        }
+
+        void bic_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("bic", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | BIC, rd, rn, op2);
+        }
+
+        void bics_r(int rd, int rn, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("bics", cc, rd, rn, op2);
+            emitInst(static_cast<ARMWord>(cc) | BIC | SET_CC, rd, rn, op2);
+        }
+
+        void mvn_r(int rd, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("mvn", cc, rd, op2);
+            emitInst(static_cast<ARMWord>(cc) | MVN, rd, ARMRegisters::r0, op2);
+        }
+
+        void mvns_r(int rd, ARMWord op2, Condition cc = AL)
+        {
+            spewInsWithOp2("mvns", cc, rd, op2);
+            emitInst(static_cast<ARMWord>(cc) | MVN | SET_CC, rd, ARMRegisters::r0, op2);
+        }
+
+        void mul_r(int rd, int rn, int rm, Condition cc = AL)
+        {
+            spewInsWithOp2("mul", cc, rd, rn, static_cast<ARMWord>(rm));
+            m_buffer.putInt(static_cast<ARMWord>(cc) | MUL | RN(rd) | RS(rn) | RM(rm));
+        }
+
+        void muls_r(int rd, int rn, int rm, Condition cc = AL)
+        {
+            spewInsWithOp2("muls", cc, rd, rn, static_cast<ARMWord>(rm));
+            m_buffer.putInt(static_cast<ARMWord>(cc) | MUL | SET_CC | RN(rd) | RS(rn) | RM(rm));
+        }
+
+        void mull_r(int rdhi, int rdlo, int rn, int rm, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, %s, %s, %s\n", "", "mull", nameGpReg(rdlo), nameGpReg(rdhi), nameGpReg(rn), nameGpReg(rm));
+            m_buffer.putInt(static_cast<ARMWord>(cc) | MULL | RN(rdhi) | RD(rdlo) | RS(rn) | RM(rm));
+        }
+
+
+        void ldr_imm(int rd, ARMWord imm, Condition cc = AL)
+        {
+            char mnemonic[16];
+            snprintf(mnemonic, 16, "ldr%s", nameCC(cc));
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, =0x%x @ (%d) (reusable pool entry)\n", "", mnemonic, nameGpReg(rd), imm, static_cast<int32_t>(imm));
+            m_buffer.putIntWithConstantInt(static_cast<ARMWord>(cc) | DTR | DT_LOAD | DT_UP | RN(ARMRegisters::pc) | RD(rd), imm, true);
+        }
+
+        void ldr_un_imm(int rd, ARMWord imm, Condition cc = AL)
+        {
+            char mnemonic[16];
+            snprintf(mnemonic, 16, "ldr%s", nameCC(cc));
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, =0x%x @ (%d)\n", "", mnemonic, nameGpReg(rd), imm, static_cast<int32_t>(imm));
+            m_buffer.putIntWithConstantInt(static_cast<ARMWord>(cc) | DTR | DT_LOAD | DT_UP | RN(ARMRegisters::pc) | RD(rd), imm);
+        }
+
+        void mem_imm_off(bool isLoad, bool isSigned, int size, bool posOffset,
+                         int rd, int rb, ARMWord offset, Condition cc = AL)
+        {
+            do { } while(0);
+            char const * mnemonic_act = (isLoad) ? ("ld") : ("st");
+            char const * mnemonic_sign = (isSigned) ? ("s") : ("");
+
+            char const * mnemonic_size = __null;
+            switch (size / 8) {
+            case 1:
+                mnemonic_size = "b";
+                break;
+            case 2:
+                mnemonic_size = "h";
+                break;
+            case 4:
+                mnemonic_size = "";
+                break;
+            }
+            char const * off_sign = (posOffset) ? ("+") : ("-");
+            js::JaegerSpew(js::JSpew_Insns,
+                           "        %s" "%sr%s%s %s, [%s, #%s%u]\n",
+                           "", mnemonic_act, mnemonic_sign, mnemonic_size,
+                           nameGpReg(rd), nameGpReg(rb), off_sign, offset);
+            if (size == 32 || (size == 8 && !isSigned)) {
+
+                emitInst(static_cast<ARMWord>(cc) | DTR |
+                         (isLoad ? DT_LOAD : 0) |
+                         (size == 8 ? DT_BYTE : 0) |
+                         (posOffset ? DT_UP : 0), rd, rb, offset);
+            } else {
+
+                emitInst(static_cast<ARMWord>(cc) | DTRH | HDT_IMM | DT_PRE |
+                         (isLoad ? DT_LOAD : 0) |
+                         (size == 16 ? HDT_UH : 0) |
+                         (isSigned ? HDT_S : 0) |
+                         (posOffset ? DT_UP : 0), rd, rb, offset);
+            }
+        }
+
+        void mem_reg_off(bool isLoad, bool isSigned, int size, bool posOffset, int rd, int rb, int rm, Condition cc = AL)
+        {
+            char const * mnemonic_act = (isLoad) ? ("ld") : ("st");
+            char const * mnemonic_sign = (isSigned) ? ("s") : ("");
+
+            char const * mnemonic_size = __null;
+            switch (size / 8) {
+            case 1:
+                mnemonic_size = "b";
+                break;
+            case 2:
+                mnemonic_size = "h";
+                break;
+            case 4:
+                mnemonic_size = "";
+                break;
+            }
+            char const * off_sign = (posOffset) ? ("+") : ("-");
+            js::JaegerSpew(js::JSpew_Insns,
+                           "        %s" "%sr%s%s %s, [%s, #%s%s]\n", "", mnemonic_act, mnemonic_sign, mnemonic_size,
+                           nameGpReg(rd), nameGpReg(rb), off_sign, nameGpReg(rm));
+            if (size == 32 || (size == 8 && !isSigned)) {
+
+                emitInst(static_cast<ARMWord>(cc) | DTR |
+                         (isLoad ? DT_LOAD : 0) |
+                         (size == 8 ? DT_BYTE : 0) |
+                         (posOffset ? DT_UP : 0) |
+                         OP2_OFSREG, rd, rb, rm);
+            } else {
+
+                emitInst(static_cast<ARMWord>(cc) | DTRH | DT_PRE |
+                         (isLoad ? DT_LOAD : 0) |
+                         (size == 16 ? HDT_UH : 0) |
+                         (isSigned ? HDT_S : 0) |
+                         (posOffset ? DT_UP : 0), rd, rb, rm);
+            }
+        }
+
+
+
+
+        void dtr_u(bool isLoad, int rd, int rb, ARMWord offset, Condition cc = AL)
+        {
+            char const * mnemonic = (isLoad) ? ("ldr") : ("str");
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, #+%u]\n", "", mnemonic, nameGpReg(rd), nameGpReg(rb), offset);
+            emitInst(static_cast<ARMWord>(cc) | DTR | (isLoad ? DT_LOAD : 0) | DT_UP, rd, rb, offset);
+        }
+
+
+
+
+        void dtr_ur(bool isLoad, int rd, int rb, int rm, Condition cc = AL)
+        {
+            char const * mnemonic = (isLoad) ? ("ldr") : ("str");
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, +%s]\n", "", mnemonic, nameGpReg(rd), nameGpReg(rb), nameGpReg(rm));
+            emitInst(static_cast<ARMWord>(cc) | DTR | (isLoad ? DT_LOAD : 0) | DT_UP | OP2_OFSREG, rd, rb, rm);
+        }
+
+
+
+
+        void dtr_d(bool isLoad, int rd, int rb, ARMWord offset, Condition cc = AL)
+        {
+            char const * mnemonic = (isLoad) ? ("ldr") : ("str");
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, #-%u]\n", "", mnemonic, nameGpReg(rd), nameGpReg(rb), offset);
+            emitInst(static_cast<ARMWord>(cc) | DTR | (isLoad ? DT_LOAD : 0), rd, rb, offset);
+        }
+
+
+
+
+        void dtr_dr(bool isLoad, int rd, int rb, int rm, Condition cc = AL)
+        {
+            char const * mnemonic = (isLoad) ? ("ldr") : ("str");
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, -%s]\n", "", mnemonic, nameGpReg(rd), nameGpReg(rb), nameGpReg(rm));
+            emitInst(static_cast<ARMWord>(cc) | DTR | (isLoad ? DT_LOAD : 0) | OP2_OFSREG, rd, rb, rm);
+        }
+
+
+
+
+        void dtrb_u(bool isLoad, int rd, int rb, ARMWord offset, Condition cc = AL)
+        {
+            char const * mnemonic = (isLoad) ? ("ldrb") : ("strb");
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, #+%u]\n", "", mnemonic, nameGpReg(rd), nameGpReg(rb), offset);
+            emitInst(static_cast<ARMWord>(cc) | DTR | DT_BYTE | (isLoad ? DT_LOAD : 0) | DT_UP, rd, rb, offset);
+        }
+
+
+
+
+        void dtrsb_u(bool isLoad, int rd, int rb, ARMWord offset, Condition cc = AL)
+        {
+            char const * mnemonic = (isLoad) ? ("ldrsb") : ("strb");
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, #+%u]\n", "", mnemonic, nameGpReg(rd), nameGpReg(rb), offset);
+            emitInst(static_cast<ARMWord>(cc) | DTRH | HDT_S | (isLoad ? DT_LOAD : 0) | DT_UP, rd, rb, offset);
+        }
+
+
+
+
+        void dtrb_ur(bool isLoad, int rd, int rb, int rm, Condition cc = AL)
+        {
+            char const * mnemonic = (isLoad) ? ("ldrb") : ("strb");
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, +%s]\n", "", mnemonic, nameGpReg(rd), nameGpReg(rb), nameGpReg(rm));
+            emitInst(static_cast<ARMWord>(cc) | DTR | DT_BYTE | (isLoad ? DT_LOAD : 0) | DT_UP | OP2_OFSREG, rd, rb, rm);
+        }
+
+
+
+
+        void dtrb_d(bool isLoad, int rd, int rb, ARMWord offset, Condition cc = AL)
+        {
+            char const * mnemonic = (isLoad) ? ("ldrb") : ("strb");
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, #-%u]\n", "", mnemonic, nameGpReg(rd), nameGpReg(rb), offset);
+            emitInst(static_cast<ARMWord>(cc) | DTR | DT_BYTE | (isLoad ? DT_LOAD : 0), rd, rb, offset);
+        }
+
+
+
+
+        void dtrsb_d(bool isLoad, int rd, int rb, ARMWord offset, Condition cc = AL)
+        {
+            do { } while(0);
+            char const * mnemonic = (isLoad) ? ("ldrsb") : ("strb");
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, #-%u]\n", "", mnemonic, nameGpReg(rd), nameGpReg(rb), offset);
+            emitInst(static_cast<ARMWord>(cc) | DTRH | HDT_S | (isLoad ? DT_LOAD : 0), rd, rb, offset);
+        }
+
+
+
+
+        void dtrb_dr(bool isLoad, int rd, int rb, int rm, Condition cc = AL)
+        {
+            char const * mnemonic = (isLoad) ? ("ldrb") : ("strb");
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, -%s]\n", "", mnemonic, nameGpReg(rd), nameGpReg(rb), nameGpReg(rm));
+            emitInst(static_cast<ARMWord>(cc) | DTR | DT_BYTE | (isLoad ? DT_LOAD : 0) | OP2_OFSREG, rd, rb, rm);
+        }
+
+        void ldrh_r(int rd, int rb, int rm, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, +%s]\n", "", "ldrh", nameGpReg(rd), nameGpReg(rb), nameGpReg(rm));
+            emitInst(static_cast<ARMWord>(cc) | LDRH | HDT_UH | DT_UP | DT_PRE, rd, rb, rm);
+        }
+
+        void ldrh_d(int rd, int rb, ARMWord offset, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, #-%u]\n", "", "ldrh", nameGpReg(rd), nameGpReg(rb), offset);
+            emitInst(static_cast<ARMWord>(cc) | LDRH | HDT_UH | DT_PRE, rd, rb, offset);
+        }
+
+        void ldrh_u(int rd, int rb, ARMWord offset, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, #+%u]\n", "", "ldrh", nameGpReg(rd), nameGpReg(rb), offset);
+            emitInst(static_cast<ARMWord>(cc) | LDRH | HDT_UH | DT_UP | DT_PRE, rd, rb, offset);
+        }
+
+        void ldrsh_d(int rd, int rb, ARMWord offset, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, #-%u]\n", "", "ldrsh", nameGpReg(rd), nameGpReg(rb), offset);
+            emitInst(static_cast<ARMWord>(cc) | LDRH | HDT_UH | HDT_S | DT_PRE, rd, rb, offset);
+       }
+
+        void ldrsh_u(int rd, int rb, ARMWord offset, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, #+%u]\n", "", "ldrsh", nameGpReg(rd), nameGpReg(rb), offset);
+            emitInst(static_cast<ARMWord>(cc) | LDRH | HDT_UH | HDT_S | DT_UP | DT_PRE, rd, rb, offset);
+        }
+
+        void strh_r(int rb, int rm, int rd, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, [%s, +%s]\n", "", "strh", nameGpReg(rd), nameGpReg(rb), nameGpReg(rm));
+            emitInst(static_cast<ARMWord>(cc) | STRH | HDT_UH | DT_UP | DT_PRE, rd, rb, rm);
+        }
+
+        void push_r(int reg, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s {%s}\n", "", "push", nameGpReg(reg));
+            do { } while(0);
+            m_buffer.putInt(cc | DTR | DT_WB | RN(ARMRegisters::sp) | RD(reg) | 0x4);
+        }
+
+        void pop_r(int reg, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s {%s}\n", "", "pop", nameGpReg(reg));
+            do { } while(0);
+            m_buffer.putInt(cc | (DTR ^ DT_PRE) | DT_LOAD | DT_UP | RN(ARMRegisters::sp) | RD(reg) | 0x4);
+        }
+
+        inline void poke_r(int reg, Condition cc = AL)
+        {
+            dtr_d(false, ARMRegisters::sp, 0, reg, cc);
+        }
+
+        inline void peek_r(int reg, Condition cc = AL)
+        {
+            dtr_u(true, reg, ARMRegisters::sp, 0, cc);
+        }
+
+
+
+
+        void clz_r(int rd, int rm, Condition cc = AL)
+        {
+            spewInsWithOp2("clz", cc, rd, static_cast<ARMWord>(rm));
+            m_buffer.putInt(static_cast<ARMWord>(cc) | CLZ | RD(rd) | RM(rm));
+        }
+
+
+        void bkpt(ARMWord value)
+        {
+
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s #0x%04x\n", "", "bkpt", value);
+            m_buffer.putInt(BKPT | ((value & 0xfff0) << 4) | (value & 0xf));
+
+
+
+
+        }
+
+        void bx(int rm, Condition cc = AL)
+        {
+
+            js::JaegerSpew(
+                    js::JSpew_Insns,
+                    "        %s" "bx%-13s %s\n", "", nameCC(cc), nameGpReg(rm));
+            emitInst(static_cast<ARMWord>(cc) | BX, 0, 0, RM(rm));
+
+
+
+        }
+
+        JmpSrc blx(int rm, Condition cc = AL)
+        {
+
+            int s = m_buffer.uncheckedSize();
+            js::JaegerSpew(
+                    js::JSpew_Insns,
+                    "        %s" "blx%-12s %s\n", "", nameCC(cc), nameGpReg(rm));
+            emitInst(static_cast<ARMWord>(cc) | BLX, 0, 0, RM(rm));
+
+
+
+
+
+
+
+            return JmpSrc(s);
+        }
+
+        static ARMWord lsl(int reg, ARMWord value)
+        {
+            do { } while(0);
+            do { } while(0);
+            return reg | (value << 7) | (LSL << 5);
+        }
+
+        static ARMWord lsr(int reg, ARMWord value)
+        {
+            do { } while(0);
+            do { } while(0);
+            return reg | (value << 7) | (LSR << 5);
+        }
+
+        static ARMWord asr(int reg, ARMWord value)
+        {
+            do { } while(0);
+            do { } while(0);
+            return reg | (value << 7) | (ASR << 5);
+        }
+
+        static ARMWord lsl_r(int reg, int shiftReg)
+        {
+            do { } while(0);
+            do { } while(0);
+            return reg | (shiftReg << 8) | (LSL << 5) | 0x10;
+        }
+
+        static ARMWord lsr_r(int reg, int shiftReg)
+        {
+            do { } while(0);
+            do { } while(0);
+            return reg | (shiftReg << 8) | (LSR << 5) | 0x10;
+        }
+
+        static ARMWord asr_r(int reg, int shiftReg)
+        {
+            do { } while(0);
+            do { } while(0);
+            return reg | (shiftReg << 8) | (ASR << 5) | 0x10;
+        }
+
+
+
+        void forceFlushConstantPool()
+        {
+            m_buffer.flushWithoutBarrier(true);
+        }
+
+        int size()
+        {
+            return m_buffer.size();
+        }
+
+        void ensureSpace(int insnSpace, int constSpace)
+        {
+            m_buffer.ensureSpace(insnSpace, constSpace);
+        }
+
+        void ensureSpace(int space)
+        {
+            m_buffer.ensureSpace(space);
+        }
+
+        int sizeOfConstantPool()
+        {
+            return m_buffer.sizeOfConstantPool();
+        }
+
+        int flushCount()
+        {
+            return m_buffer.flushCount();
+        }
+
+        JmpDst label()
+        {
+            JmpDst label(m_buffer.size());
+            js::JaegerSpew(js::JSpew_Insns, "        %s" "#label     ((%d))\n", "", label.m_offset);
+            return label;
+        }
+
+        JmpDst align(int alignment)
+        {
+            while (!m_buffer.isAligned(alignment))
+                mov_r(ARMRegisters::r0, ARMRegisters::r0);
+
+            return label();
+        }
+
+        JmpSrc loadBranchTarget(int rd, Condition cc = AL, int useConstantPool = 0)
+        {
+
+
+
+
+            ensureSpace(sizeof(ARMWord), sizeof(ARMWord));
+            int s = m_buffer.uncheckedSize();
+            ldr_un_imm(rd, InvalidBranchTarget, cc);
+            m_jumps.append(s | (useConstantPool & 0x1));
+            return JmpSrc(s);
+        }
+
+        JmpSrc jmp(Condition cc = AL, int useConstantPool = 0)
+        {
+            return loadBranchTarget(ARMRegisters::pc, cc, useConstantPool);
+        }
+
+        void* executableAllocAndCopy(ExecutableAllocator* allocator, ExecutablePool **poolp, CodeKind kind);
+        void executableCopy(void* buffer);
+        void fixUpOffsets(void* buffer);
+
+
+
+        static ARMWord* getLdrImmAddress(ARMWord* insn)
+        {
+
+
+            if ((*insn & 0x0f7f0000) != 0x051f0000) {
+
+                do { } while(0);
+                insn--;
+            }
+
+
+            do { } while(0);
+
+            ARMWord addr = reinterpret_cast<ARMWord>(insn) + DefaultPrefetching * sizeof(ARMWord);
+            if (*insn & DT_UP)
+                return reinterpret_cast<ARMWord*>(addr + (*insn & SDT_OFFSET_MASK));
+            return reinterpret_cast<ARMWord*>(addr - (*insn & SDT_OFFSET_MASK));
+        }
+
+        static ARMWord* getLdrImmAddressOnPool(ARMWord* insn, uint32_t* constPool)
+        {
+
+            do { } while(0);
+
+            if (*insn & 0x1)
+                return reinterpret_cast<ARMWord*>(constPool + ((*insn & SDT_OFFSET_MASK) >> 1));
+            return getLdrImmAddress(insn);
+        }
+
+        static void patchPointerInternal(intptr_t from, void* to)
+        {
+            ARMWord* insn = reinterpret_cast<ARMWord*>(from);
+            ARMWord* addr = getLdrImmAddress(insn);
+            *addr = reinterpret_cast<ARMWord>(to);
+        }
+
+        static ARMWord patchConstantPoolLoad(ARMWord load, ARMWord value)
+        {
+            value = (value << 1) + 1;
+            do { } while(0);
+            return (load & ~0xfff) | value;
+        }
+
+        static void patchConstantPoolLoad(void* loadAddr, void* constPoolAddr);
+
+
+
+        static void linkPointer(void* code, JmpDst from, void* to)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                           "        " "##linkPointer     ((%p + %#x)) points to ((%p))\n",
+                           code, from.m_offset, to);
+
+            patchPointerInternal(reinterpret_cast<intptr_t>(code) + from.m_offset, to);
+        }
+
+        static void repatchInt32(void* from, int32_t to)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                           "        " "##repatchInt32    ((%p)) holds ((%#x))\n",
+                           from, to);
+
+            patchPointerInternal(reinterpret_cast<intptr_t>(from), reinterpret_cast<void*>(to));
+        }
+
+        static void repatchPointer(void* from, void* to)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                           "        " "##repatchPointer  ((%p)) points to ((%p))\n",
+                           from, to);
+
+            patchPointerInternal(reinterpret_cast<intptr_t>(from), to);
+        }
+
+        static void repatchLoadPtrToLEA(void* from)
+        {
+
+
+            ARMWord* insn = reinterpret_cast<ARMWord*>(from);
+            do { } while(0);
+
+            *insn = (*insn & 0xf00ff0ff) | 0x02800000;
+            ExecutableAllocator::cacheFlush(insn, sizeof(ARMWord));
+        }
+
+        static void repatchLEAToLoadPtr(void* from)
+        {
+
+            ARMWord* insn = reinterpret_cast<ARMWord*>(from);
+     if ((*insn & 0x0ff00f00) == 0x05900000)
+  return;
+            do { } while(0);
+            do { } while(0);
+
+            *insn = (*insn & 0xf00ff0ff) | 0x05900000;
+            ExecutableAllocator::cacheFlush(insn, sizeof(ARMWord));
+        }
+
+
+
+        void linkJump(JmpSrc from, JmpDst to)
+        {
+            ARMWord code = reinterpret_cast<ARMWord>(m_buffer.data());
+            ARMWord* insn = reinterpret_cast<ARMWord*>(code + from.m_offset);
+            ARMWord* addr = getLdrImmAddressOnPool(insn, m_buffer.poolAddress());
+
+            js::JaegerSpew(js::JSpew_Insns,
+                           "        %s" "##linkJump         ((%#x)) jumps to ((%#x))\n", "",
+                           from.m_offset, to.m_offset);
+
+            *addr = to.m_offset;
+        }
+
+        static void linkJump(void* code, JmpSrc from, void* to)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                           "        " "##linkJump        ((%p + %#x)) jumps to ((%p))\n",
+                           code, from.m_offset, to);
+
+            patchPointerInternal(reinterpret_cast<intptr_t>(code) + from.m_offset, to);
+        }
+
+        static void relinkJump(void* from, void* to)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                           "        " "##relinkJump      ((%p)) jumps to ((%p))\n",
+                           from, to);
+
+            patchPointerInternal(reinterpret_cast<intptr_t>(from), to);
+        }
+
+        static bool canRelinkJump(void* from, void* to)
+        {
+            return true;
+        }
+
+        static void linkCall(void* code, JmpSrc from, void* to)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                           "        " "##linkCall        ((%p + %#x)) jumps to ((%p))\n",
+                           code, from.m_offset, to);
+
+            patchPointerInternal(reinterpret_cast<intptr_t>(code) + from.m_offset, to);
+        }
+
+        static void relinkCall(void* from, void* to)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                           "        " "##relinkCall      ((%p)) jumps to ((%p))\n",
+                           from, to);
+
+            patchPointerInternal(reinterpret_cast<intptr_t>(from), to);
+        }
+
+
+
+        static void* getRelocatedAddress(void* code, JmpSrc jump)
+        {
+            return reinterpret_cast<void*>(reinterpret_cast<ARMWord*>(code) + jump.m_offset / sizeof(ARMWord));
+        }
+
+        static void* getRelocatedAddress(void* code, JmpDst label)
+        {
+            return reinterpret_cast<void*>(reinterpret_cast<ARMWord*>(code) + label.m_offset / sizeof(ARMWord));
+        }
+
+
+
+        static int getDifferenceBetweenLabels(JmpDst from, JmpSrc to)
+        {
+            return to.m_offset - from.m_offset;
+        }
+
+        static int getDifferenceBetweenLabels(JmpDst from, JmpDst to)
+        {
+            return to.m_offset - from.m_offset;
+        }
+
+        static unsigned getCallReturnOffset(JmpSrc call)
+        {
+            return call.m_offset + sizeof(ARMWord);
+        }
+
+
+
+        static ARMWord getOp2Byte(ARMWord imm)
+        {
+            do { } while(0);
+            return OP2_IMMh | (imm & 0x0f) | ((imm & 0xf0) << 4) ;
+        }
+
+        static ARMWord getOp2(ARMWord imm);
+
+
+
+        static ARMWord getOp2RegScale(RegisterID reg, ARMWord scale);
+
+
+        static ARMWord getImm16Op2(ARMWord imm)
+        {
+            if (imm <= 0xffff)
+                return (imm & 0xf000) << 4 | (imm & 0xfff);
+            return INVALID_IMM;
+        }
+
+        ARMWord getImm(ARMWord imm, int tmpReg, bool invert = false);
+        void moveImm(ARMWord imm, int dest);
+        ARMWord encodeComplexImm(ARMWord imm, int dest);
+
+        ARMWord getOffsetForHalfwordDataTransfer(ARMWord imm, int tmpReg)
+        {
+
+            if (imm <= 0xff)
+                return getOp2Byte(imm);
+
+            return encodeComplexImm(imm, tmpReg);
+        }
+
+
+        void dataTransferN(bool isLoad, bool isSigned, int size, RegisterID srcDst, RegisterID base, int32_t offset);
+
+        void dataTransfer32(bool isLoad, RegisterID srcDst, RegisterID base, int32_t offset);
+        void dataTransfer8(bool isLoad, RegisterID srcDst, RegisterID base, int32_t offset, bool isSigned);
+        void baseIndexTransferN(bool isLoad, bool isSigned, int size, RegisterID srcDst, RegisterID base, RegisterID index, int scale, int32_t offset);
+        void baseIndexTransfer32(bool isLoad, RegisterID srcDst, RegisterID base, RegisterID index, int scale, int32_t offset);
+        void doubleTransfer(bool isLoad, FPRegisterID srcDst, RegisterID base, int32_t offset);
+        void doubleTransfer(bool isLoad, FPRegisterID srcDst, RegisterID base, int32_t offset, RegisterID index, int32_t scale);
+
+        void floatTransfer(bool isLoad, FPRegisterID srcDst, RegisterID base, int32_t offset);
+
+        void baseIndexFloatTransfer(bool isLoad, bool isDouble, FPRegisterID srcDst, RegisterID base, RegisterID index, int scale, int32_t offset);
+
+
+
+        static ARMWord placeConstantPoolBarrier(int offset)
+        {
+            offset = (offset - sizeof(ARMWord)) >> 2;
+            do { } while(0);
+            return AL | B | (offset & BRANCH_MASK);
+        }
+
+
+        static char const * nameGpReg(int reg)
+        {
+            do { } while(0);
+            do { } while(0);
+            static char const * names[] = {
+                "r0", "r1", "r2", "r3",
+                "r4", "r5", "r6", "r7",
+                "r8", "r9", "r10", "r11",
+                "ip", "sp", "lr", "pc"
+            };
+            return names[reg];
+        }
+
+        static char const * nameFpRegD(int reg)
+        {
+            do { } while(0);
+            do { } while(0);
+            static char const * names[] = {
+                 "d0", "d1", "d2", "d3",
+                 "d4", "d5", "d6", "d7",
+                 "d8", "d9", "d10", "d11",
+                "d12", "d13", "d14", "d15",
+                "d16", "d17", "d18", "d19",
+                "d20", "d21", "d22", "d23",
+                "d24", "d25", "d26", "d27",
+                "d28", "d29", "d30", "d31"
+            };
+            return names[reg];
+        }
+        static char const * nameFpRegS(int reg)
+        {
+            do { } while(0);
+            do { } while(0);
+            static char const * names[] = {
+                 "s0", "s1", "s2", "s3",
+                 "s4", "s5", "s6", "s7",
+                 "s8", "s9", "s10", "s11",
+                "s12", "s13", "s14", "s15",
+                "s16", "s17", "s18", "s19",
+                "s20", "s21", "s22", "s23",
+                "s24", "s25", "s26", "s27",
+                "s28", "s29", "s30", "s31"
+            };
+            return names[reg];
+        }
+
+        static char const * nameCC(Condition cc)
+        {
+            do { } while(0);
+            do { } while(0);
+            do { } while(0);
+
+            uint32_t ccIndex = cc >> 28;
+            static char const * names[] = {
+                "eq", "ne",
+                "cs", "cc",
+                "mi", "pl",
+                "vs", "vc",
+                "hi", "ls",
+                "ge", "lt",
+                "gt", "le",
+                "  "
+            };
+            return names[ccIndex];
+        }
+
+    private:
+
+        inline uint32_t decOp2Imm(uint32_t op2)
+        {
+            do { } while(0);
+
+            uint32_t imm8 = op2 & 0xff;
+            uint32_t rot = ((op2 >> 7) & 0x1e);
+
+
+
+            uint32_t imm = (imm8 >> rot);
+            if (rot > 0) {
+                imm |= (imm8 << (32-rot));
+            }
+
+            return imm;
+        }
+
+
+
+        void fmtOp2(char * out, ARMWord op2)
+        {
+            static char const * const shifts[4] = {"LSL", "LSR", "ASR", "ROR"};
+
+            if ((op2 & OP2_IMM) || (op2 & OP2_IMMh)) {
+
+
+                uint32_t imm = decOp2Imm(op2 & ~(OP2_IMM | OP2_IMMh));
+                sprintf(out, "#0x%x @ (%d)", imm, static_cast<int32_t>(imm));
+            } else {
+
+
+                char const * rm = nameGpReg(op2 & 0xf);
+                Shift type = static_cast<Shift>((op2 >> 5) & 0x3);
+
+
+                if (op2 & (1<<4)) {
+
+
+                    char const * rs = nameGpReg((op2 >> 8) & 0xf);
+                    sprintf(out, "%s, %s %s", rm, shifts[type], rs);
+                } else {
+
+
+                    uint32_t imm = (op2 >> 7) & 0x1f;
+
+
+                    if ((type == LSL) && (imm == 0)) {
+
+                        sprintf(out, "%s", rm);
+                        return;
+                    }
+
+                    if ((type == ROR) && (imm == 0)) {
+
+                        sprintf(out, "%s, RRX", rm);
+                        return;
+                    }
+
+                    if (((type == LSR) || (type == ASR)) && (imm == 0)) {
+
+
+                        imm = 32;
+                    }
+
+
+
+                    sprintf(out, "%s, %s #%u", rm, shifts[type], imm);
+                }
+            }
+        }
+
+        void spewInsWithOp2(char const * ins, Condition cc, int rd, int rn, ARMWord op2)
+        {
+            char mnemonic[16];
+            snprintf(mnemonic, 16, "%s%s", ins, nameCC(cc));
+
+            char op2_fmt[48];
+            fmtOp2(op2_fmt, op2);
+
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, %s, %s\n", "", mnemonic, nameGpReg(rd), nameGpReg(rn), op2_fmt);
+        }
+
+        void spewInsWithOp2(char const * ins, Condition cc, int r, ARMWord op2)
+        {
+            char mnemonic[16];
+            snprintf(mnemonic, 16, "%s%s", ins, nameCC(cc));
+
+            char op2_fmt[48];
+            fmtOp2(op2_fmt, op2);
+
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, %s\n", "", mnemonic, nameGpReg(r), op2_fmt);
+        }
+
+        ARMWord RM(int reg)
+        {
+            do { } while(0);
+            return reg;
+        }
+
+        ARMWord RS(int reg)
+        {
+            do { } while(0);
+            return reg << 8;
+        }
+
+        ARMWord RD(int reg)
+        {
+            do { } while(0);
+            return reg << 12;
+        }
+
+        ARMWord RN(int reg)
+        {
+            do { } while(0);
+            return reg << 16;
+        }
+
+        ARMWord DD(int reg)
+        {
+            do { } while(0);
+
+            return ((reg << 12) | (reg << 18)) & 0x0040f000;
+        }
+
+        ARMWord DN(int reg)
+        {
+            do { } while(0);
+
+            return ((reg << 16) | (reg << 3)) & 0x000f0080;
+        }
+
+        ARMWord DM(int reg)
+        {
+            do { } while(0);
+
+            return ((reg << 1) & 0x20) | (reg & 0xf);
+        }
+
+        ARMWord SD(int reg)
+        {
+            do { } while(0);
+
+            return ((reg << 11) | (reg << 22)) & 0x0040f000;
+        }
+
+        ARMWord SM(int reg)
+        {
+            do { } while(0);
+
+            return ((reg << 5) & 0x20) | ((reg >> 1) & 0xf);
+        }
+        ARMWord SN(int reg)
+        {
+            do { } while(0);
+
+            return ((reg << 15) & 0xf0000) | ((reg & 1) << 7);
+        }
+        static ARMWord getConditionalField(ARMWord i)
+        {
+            return i & 0xf0000000;
+        }
+
+        int genInt(int reg, ARMWord imm, bool positive);
+
+        ARMBuffer m_buffer;
+        Jumps m_jumps;
+    public:
+
+        enum {
+            VFP_DATA = 0x0E000A00,
+            VFP_EXT = 0x0C000A00,
+            VFP_XFER = 0x0E000A08,
+            VFP_DXFER = 0x0C400A00,
+
+            VFP_DBL = (1<<8),
+
+
+            VFP_ICVT = 0x00B80040,
+            VFP_FPCVT = 0x00B700C0,
+
+            VFP_DTR = 0x01000000,
+            VFP_MOV = 0x00000010,
+
+            FMSR = 0x0e000a10,
+            FMRS = 0x0e100a10,
+            FSITOD = 0x0eb80bc0,
+            FUITOD = 0x0eb80b40,
+            FTOSID = 0x0ebd0b40,
+            FTOSIZD = 0x0ebd0bc0,
+            FMSTAT = 0x0ef1fa10,
+            FDTR = 0x0d000b00
+
+        };
+        enum RegType {
+            SIntReg32,
+            UIntReg32,
+            FloatReg32,
+            FloatReg64
+        };
+
+        const char * nameType(RegType t)
+        {
+            const char * const name[4] =
+                {"S32", "U32", "F32", "F64"};
+            return name[t];
+        }
+
+        const char * nameTypedReg(RegType t, int reg)
+        {
+            switch(t) {
+            case SIntReg32:
+            case UIntReg32:
+                return nameGpReg(reg);
+            case FloatReg32:
+                return nameFpRegS(reg);
+            case FloatReg64:
+                return nameFpRegD(reg);
+            }
+            return "";
+        }
+
+        bool isFloatType(RegType rt)
+        {
+            if (rt == FloatReg32 || rt == FloatReg64)
+                return true;
+            return false;
+        }
+
+        bool isIntType(RegType rt)
+        {
+            if (rt == FloatReg32 || rt == FloatReg64)
+                return false;
+            return true;
+        }
+
+
+
+
+
+        void emitVFPInst(ARMWord op, ARMWord rd, ARMWord rn, ARMWord op2)
+        {
+            m_buffer.putInt(op | rn | rd | op2);
+        }
+
+
+        void fmem_imm_off(bool isLoad, bool isDouble, bool isUp, int dest, int rn, ARMWord offset, Condition cc = AL)
+        {
+            char const * ins = isLoad ? "vldr.f" : "vstr.f";
+            js::JaegerSpew(js::JSpew_Insns,
+                           "        %s" "%s%d %s, [%s, #%s%u]\n", "",
+                           ins, (isDouble ? 64 : 32), (isDouble ? nameFpRegD(dest) : nameFpRegS(dest)),
+                           nameGpReg(rn), (isUp ? "+" : "-"), offset);
+            do { } while(0);
+            emitVFPInst(static_cast<ARMWord>(cc) |
+                        VFP_EXT | VFP_DTR |
+                        (isDouble ? VFP_DBL : 0) |
+                        (isUp ? DT_UP : 0) |
+                        (isLoad ? DT_LOAD : 0), isDouble ? DD(dest) : SD(dest), RN(rn), offset);
+
+        }
+
+
+
+        void vcvt(RegType srcType, RegType dstType, int src, int dest, Condition cc = AL)
+        {
+            do { } while(0);
+            do { } while(0);
+
+            js::JaegerSpew(js::JSpew_Insns,
+                           "        %s" "vcvt.%s.%-15s, %s,%s\n", "",
+                           nameType(dstType), nameType(srcType),
+                           nameTypedReg(dstType,dest), nameTypedReg(srcType,src));
+
+            if (isFloatType(srcType) && isFloatType (dstType)) {
+
+                bool dblToFloat = srcType == FloatReg64;
+                emitVFPInst(static_cast<ARMWord>(cc) | VFP_DATA | VFP_FPCVT |
+                            (dblToFloat ? VFP_DBL : 0),
+                            dblToFloat ? SD(dest) : DD(dest),
+                            dblToFloat ? DM(src) : SM(src), 0);
+            } else {
+                __builtin_unreachable();
+            }
+        }
+
+
+        void vmov64 (bool fromFP, bool isDbl, int r1, int r2, int rFP, Condition cc = AL)
+        {
+            if (fromFP) {
+                js::JaegerSpew(js::JSpew_Insns,
+                               "        %s" "%-15s %s, %s, %s\n", "", "vmov",
+                               nameGpReg(r1), nameGpReg(r2), nameFpRegD(rFP));
+            } else {
+                js::JaegerSpew(js::JSpew_Insns,
+                               "        %s" "%-15s %s, %s, %s\n", "", "vmov",
+                               nameFpRegD(rFP), nameGpReg(r1), nameGpReg(r2));
+            }
+            emitVFPInst(static_cast<ARMWord>(cc) | VFP_DXFER | VFP_MOV |
+                        (fromFP ? DT_LOAD : 0) |
+                        (isDbl ? VFP_DBL : 0), RD(r1), RN(r2), isDbl ? DM(rFP) : SM(rFP));
+        }
+
+        void fcpyd_r(int dd, int dm, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, %s\n", "", "vmov.f64",
+                           nameFpRegD(dd), nameFpRegD(dm));
+
+
+            emitVFPInst(static_cast<ARMWord>(cc) | FCPYD, DD(dd), DM(dm), 0);
+        }
+
+        void faddd_r(int dd, int dn, int dm, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, %s, %s\n", "", "vadd.f64", nameFpRegD(dd), nameFpRegD(dn), nameFpRegD(dm));
+
+
+            emitVFPInst(static_cast<ARMWord>(cc) | FADDD, DD(dd), DN(dn), DM(dm));
+        }
+
+        void fnegd_r(int dd, int dm, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, %s\n", "", "fnegd", nameFpRegD(dd), nameFpRegD(dm));
+            m_buffer.putInt(static_cast<ARMWord>(cc) | FNEGD | DD(dd) | DM(dm));
+        }
+
+        void fdivd_r(int dd, int dn, int dm, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, %s, %s\n", "", "vdiv.f64", nameFpRegD(dd), nameFpRegD(dn), nameFpRegD(dm));
+
+
+            emitVFPInst(static_cast<ARMWord>(cc) | FDIVD, DD(dd), DN(dn), DM(dm));
+        }
+
+        void fsubd_r(int dd, int dn, int dm, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, %s, %s\n", "", "vsub.f64", nameFpRegD(dd), nameFpRegD(dn), nameFpRegD(dm));
+
+
+            emitVFPInst(static_cast<ARMWord>(cc) | FSUBD, DD(dd), DN(dn), DM(dm));
+        }
+
+        void fabsd_r(int dd, int dm, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, %s\n", "", "fabsd", nameFpRegD(dd), nameFpRegD(dm));
+            m_buffer.putInt(static_cast<ARMWord>(cc) | FABSD | DD(dd) | DM(dm));
+        }
+
+        void fmuld_r(int dd, int dn, int dm, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, %s, %s\n", "", "vmul.f64", nameFpRegD(dd), nameFpRegD(dn), nameFpRegD(dm));
+
+
+            emitVFPInst(static_cast<ARMWord>(cc) | FMULD, DD(dd), DN(dn), DM(dm));
+        }
+
+        void fcmpd_r(int dd, int dm, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, %s\n", "", "vcmp.f64", nameFpRegD(dd), nameFpRegD(dm));
+
+
+            emitVFPInst(static_cast<ARMWord>(cc) | FCMPD, DD(dd), 0, DM(dm));
+        }
+
+        void fsqrtd_r(int dd, int dm, Condition cc = AL)
+        {
+            js::JaegerSpew(js::JSpew_Insns,
+                    "        %s" "%-15s %s, %s\n", "", "vsqrt.f64", nameFpRegD(dd), nameFpRegD(dm));
+
+
+            emitVFPInst(static_cast<ARMWord>(cc) | FSQRTD, DD(dd), 0, DM(dm));
+        }
+
+        void fmsr_r(int dd, int rn, Condition cc = AL)
+        {
+
+
+            emitVFPInst(static_cast<ARMWord>(cc) | FMSR, RD(rn), SN(dd), 0);
+        }
+
+        void fmrs_r(int rd, int dn, Condition cc = AL)
+        {
+
+
+            emitVFPInst(static_cast<ARMWord>(cc) | FMRS, RD(rd), SN(dn), 0);
+        }
+
+
+
+        void fsitod_r(int dd, int dm, Condition cc = AL)
+        {
+
+
+            emitVFPInst(static_cast<ARMWord>(cc) | FSITOD, DD(dd), 0, SM(dm));
+        }
+
+        void fuitod_r(int dd, int dm, Condition cc = AL)
+        {
+
+
+            emitVFPInst(static_cast<ARMWord>(cc) | FUITOD, DD(dd), 0, SM(dm));
+        }
+
+        void ftosid_r(int fd, int dm, Condition cc = AL)
+        {
+
+            emitVFPInst(static_cast<ARMWord>(cc) | FTOSID, SD(fd), 0, DM(dm));
+        }
+
+        void ftosizd_r(int fd, int dm, Condition cc = AL)
+        {
+
+            emitVFPInst(static_cast<ARMWord>(cc) | FTOSIZD, SD(fd), 0, DM(dm));
+        }
+
+        void fmstat(Condition cc = AL)
+        {
+
+
+            m_buffer.putInt(static_cast<ARMWord>(cc) | FMSTAT);
+        }
+    };
+
+}
+# 40 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssemblerARM.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AbstractMacroAssembler.h" 1
+# 31 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AbstractMacroAssembler.h"
+#define AbstractMacroAssembler_h 
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssemblerCodeRef.h" 1
+# 31 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssemblerCodeRef.h"
+#define MacroAssemblerCodeRef_h 
+# 52 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssemblerCodeRef.h"
+#define ASSERT_VALID_CODE_POINTER(ptr) ASSERT(ptr)
+
+#define ASSERT_VALID_CODE_OFFSET(offset) 
+
+
+namespace JSC {
+
+
+
+
+
+class FunctionPtr {
+public:
+    FunctionPtr()
+        : m_value(0)
+    {
+    }
+
+    template<typename FunctionType>
+    explicit FunctionPtr(FunctionType* value)
+
+
+
+
+
+        : m_value(reinterpret_cast<void*>(value))
+
+    {
+        do { } while(0);
+    }
+
+    void* value() const { return m_value; }
+    void* executableAddress() const { return m_value; }
+
+
+private:
+    void* m_value;
+};
+
+
+
+
+
+
+
+class ReturnAddressPtr {
+public:
+    ReturnAddressPtr()
+        : m_value(0)
+    {
+    }
+
+    explicit ReturnAddressPtr(void* value)
+        : m_value(value)
+    {
+        do { } while(0);
+    }
+
+    explicit ReturnAddressPtr(FunctionPtr function)
+        : m_value(function.value())
+    {
+        do { } while(0);
+    }
+
+    void* value() const { return m_value; }
+
+private:
+    void* m_value;
+};
+
+
+
+
+class MacroAssemblerCodePtr {
+public:
+    MacroAssemblerCodePtr()
+        : m_value(0)
+    {
+    }
+
+    explicit MacroAssemblerCodePtr(void* value)
+
+
+
+
+        : m_value(value)
+
+    {
+        do { } while(0);
+    }
+
+    explicit MacroAssemblerCodePtr(ReturnAddressPtr ra)
+        : m_value(ra.value())
+    {
+        do { } while(0);
+    }
+
+    void* executableAddress() const {
+        return m_value;
+    }
+
+
+
+
+    void* dataLocation() const { do { } while(0); return m_value; }
+
+
+    bool operator!()
+    {
+        return !m_value;
+    }
+
+    ptrdiff_t operator -(const MacroAssemblerCodePtr &other) const
+    {
+        do { } while(0);
+        return reinterpret_cast<uint8_t *>(m_value) -
+               reinterpret_cast<uint8_t *>(other.m_value);
+    }
+
+private:
+    void* m_value;
+};
+
+
+
+
+
+
+class MacroAssemblerCodeRef {
+public:
+    MacroAssemblerCodeRef()
+        : m_executablePool(__null),
+          m_size(0)
+    {
+    }
+
+    MacroAssemblerCodeRef(void* code, ExecutablePool* executablePool, size_t size)
+        : m_code(code)
+        , m_executablePool(executablePool)
+        , m_size(size)
+    {
+    }
+
+
+    void release()
+    {
+        if (!m_executablePool)
+            return;
+
+
+
+
+
+        m_executablePool->release();
+        m_executablePool = __null;
+    }
+
+    MacroAssemblerCodePtr m_code;
+    ExecutablePool* m_executablePool;
+    size_t m_size;
+};
+
+}
+# 35 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AbstractMacroAssembler.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/CodeLocation.h" 1
+# 31 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/CodeLocation.h"
+#define CodeLocation_h 
+
+
+
+
+
+
+namespace JSC {
+
+class CodeLocationInstruction;
+class CodeLocationLabel;
+class CodeLocationJump;
+class CodeLocationCall;
+class CodeLocationNearCall;
+class CodeLocationDataLabel32;
+class CodeLocationDataLabelPtr;
+# 59 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/CodeLocation.h"
+class CodeLocationCommon : public MacroAssemblerCodePtr {
+public:
+    CodeLocationInstruction instructionAtOffset(int offset);
+    CodeLocationLabel labelAtOffset(int offset);
+    CodeLocationJump jumpAtOffset(int offset);
+    CodeLocationCall callAtOffset(int offset);
+    CodeLocationNearCall nearCallAtOffset(int offset);
+    CodeLocationDataLabelPtr dataLabelPtrAtOffset(int offset);
+    CodeLocationDataLabel32 dataLabel32AtOffset(int offset);
+
+protected:
+    CodeLocationCommon()
+    {
+    }
+
+    CodeLocationCommon(MacroAssemblerCodePtr location)
+        : MacroAssemblerCodePtr(location)
+    {
+    }
+};
+
+class CodeLocationInstruction : public CodeLocationCommon {
+public:
+    CodeLocationInstruction() {}
+    explicit CodeLocationInstruction(MacroAssemblerCodePtr location)
+        : CodeLocationCommon(location) {}
+    explicit CodeLocationInstruction(void* location)
+        : CodeLocationCommon(MacroAssemblerCodePtr(location)) {}
+};
+
+class CodeLocationLabel : public CodeLocationCommon {
+public:
+    CodeLocationLabel() {}
+    explicit CodeLocationLabel(MacroAssemblerCodePtr location)
+        : CodeLocationCommon(location) {}
+    explicit CodeLocationLabel(void* location)
+        : CodeLocationCommon(MacroAssemblerCodePtr(location)) {}
+};
+
+class CodeLocationJump : public CodeLocationCommon {
+public:
+    CodeLocationJump() {}
+    explicit CodeLocationJump(MacroAssemblerCodePtr location)
+        : CodeLocationCommon(location) {}
+    explicit CodeLocationJump(void* location)
+        : CodeLocationCommon(MacroAssemblerCodePtr(location)) {}
+};
+
+class CodeLocationCall : public CodeLocationCommon {
+public:
+    CodeLocationCall() {}
+    explicit CodeLocationCall(MacroAssemblerCodePtr location)
+        : CodeLocationCommon(location) {}
+    explicit CodeLocationCall(void* location)
+        : CodeLocationCommon(MacroAssemblerCodePtr(location)) {}
+};
+
+class CodeLocationNearCall : public CodeLocationCommon {
+public:
+    CodeLocationNearCall() {}
+    explicit CodeLocationNearCall(MacroAssemblerCodePtr location)
+        : CodeLocationCommon(location) {}
+    explicit CodeLocationNearCall(void* location)
+        : CodeLocationCommon(MacroAssemblerCodePtr(location)) {}
+};
+
+class CodeLocationDataLabel32 : public CodeLocationCommon {
+public:
+    CodeLocationDataLabel32() {}
+    explicit CodeLocationDataLabel32(MacroAssemblerCodePtr location)
+        : CodeLocationCommon(location) {}
+    explicit CodeLocationDataLabel32(void* location)
+        : CodeLocationCommon(MacroAssemblerCodePtr(location)) {}
+};
+
+class CodeLocationDataLabelPtr : public CodeLocationCommon {
+public:
+    CodeLocationDataLabelPtr() {}
+    explicit CodeLocationDataLabelPtr(MacroAssemblerCodePtr location)
+        : CodeLocationCommon(location) {}
+    explicit CodeLocationDataLabelPtr(void* location)
+        : CodeLocationCommon(MacroAssemblerCodePtr(location)) {}
+};
+
+inline CodeLocationInstruction CodeLocationCommon::instructionAtOffset(int offset)
+{
+    ;
+    return CodeLocationInstruction(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+inline CodeLocationLabel CodeLocationCommon::labelAtOffset(int offset)
+{
+    ;
+    return CodeLocationLabel(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+inline CodeLocationJump CodeLocationCommon::jumpAtOffset(int offset)
+{
+    ;
+    return CodeLocationJump(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+inline CodeLocationCall CodeLocationCommon::callAtOffset(int offset)
+{
+    ;
+    return CodeLocationCall(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+inline CodeLocationNearCall CodeLocationCommon::nearCallAtOffset(int offset)
+{
+    ;
+    return CodeLocationNearCall(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+inline CodeLocationDataLabelPtr CodeLocationCommon::dataLabelPtrAtOffset(int offset)
+{
+    ;
+    return CodeLocationDataLabelPtr(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+inline CodeLocationDataLabel32 CodeLocationCommon::dataLabel32AtOffset(int offset)
+{
+    ;
+    return CodeLocationDataLabel32(reinterpret_cast<char*>(dataLocation()) + offset);
+}
+
+}
+# 36 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AbstractMacroAssembler.h" 2
+
+
+
+namespace JSC {
+
+class LinkBuffer;
+class RepatchBuffer;
+
+template <class AssemblerType>
+class AbstractMacroAssembler {
+public:
+    typedef AssemblerType AssemblerType_T;
+
+    typedef MacroAssemblerCodePtr CodePtr;
+    typedef MacroAssemblerCodeRef CodeRef;
+
+    class Jump;
+
+    typedef typename AssemblerType::RegisterID RegisterID;
+    typedef typename AssemblerType::FPRegisterID FPRegisterID;
+    typedef typename AssemblerType::JmpSrc JmpSrc;
+    typedef typename AssemblerType::JmpDst JmpDst;
+# 72 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AbstractMacroAssembler.h"
+    enum Scale {
+        TimesOne,
+        TimesTwo,
+        TimesFour,
+        TimesEight
+    };
+
+
+
+
+    struct Address {
+        explicit Address() {}
+
+        explicit Address(RegisterID base, int32_t offset = 0)
+            : base(base)
+            , offset(offset)
+        {
+        }
+
+        RegisterID base;
+        int32_t offset;
+    };
+
+    struct ExtendedAddress {
+        explicit ExtendedAddress(RegisterID base, intptr_t offset = 0)
+            : base(base)
+            , offset(offset)
+        {
+        }
+
+        RegisterID base;
+        intptr_t offset;
+    };
+# 120 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AbstractMacroAssembler.h"
+    struct ImplicitAddress {
+        ImplicitAddress(RegisterID base)
+            : base(base)
+            , offset(0)
+        {
+        }
+
+        ImplicitAddress(Address address)
+            : base(address.base)
+            , offset(address.offset)
+        {
+        }
+
+        RegisterID base;
+        int32_t offset;
+    };
+
+
+
+
+    struct BaseIndex {
+        BaseIndex(RegisterID base, RegisterID index, Scale scale, int32_t offset = 0)
+            : base(base)
+            , index(index)
+            , scale(scale)
+            , offset(offset)
+        {
+        }
+
+        RegisterID base;
+        RegisterID index;
+        Scale scale;
+        int32_t offset;
+    };
+
+
+
+
+
+    struct AbsoluteAddress {
+        explicit AbsoluteAddress(void* ptr)
+            : m_ptr(ptr)
+        {
+        }
+
+        void* m_ptr;
+    };
+
+
+
+
+
+
+    struct TrustedImmPtr {
+        explicit TrustedImmPtr(const void* value)
+            : m_value(value)
+        {
+        }
+
+        intptr_t asIntptr()
+        {
+            return reinterpret_cast<intptr_t>(m_value);
+        }
+
+        const void* m_value;
+    };
+
+    struct ImmPtr : public TrustedImmPtr {
+        explicit ImmPtr(const void* value)
+            : TrustedImmPtr(value)
+        {
+        }
+    };
+
+
+
+
+
+
+
+    struct TrustedImm32 {
+        explicit TrustedImm32(int32_t value)
+            : m_value(value)
+
+            , m_isPointer(false)
+
+        {
+        }
+
+
+        explicit TrustedImm32(TrustedImmPtr ptr)
+            : m_value(ptr.asIntptr())
+
+            , m_isPointer(true)
+
+        {
+        }
+
+
+        int32_t m_value;
+# 228 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AbstractMacroAssembler.h"
+        bool m_isPointer;
+
+    };
+
+
+    struct Imm32 : public TrustedImm32 {
+        explicit Imm32(int32_t value)
+            : TrustedImm32(value)
+        {
+        }
+
+        explicit Imm32(TrustedImmPtr ptr)
+            : TrustedImm32(ptr)
+        {
+        }
+
+    };
+
+    struct ImmDouble {
+        union {
+            struct {
+
+
+
+                uint32_t lsb, msb;
+
+            } s;
+            uint64_t u64;
+            double d;
+        } u;
+
+        explicit ImmDouble(double d) {
+            u.d = d;
+        }
+    };
+# 276 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/AbstractMacroAssembler.h"
+    class Label {
+        template<class TemplateAssemblerType>
+        friend class AbstractMacroAssembler;
+        friend class Jump;
+        friend class MacroAssemblerCodeRef;
+        friend class LinkBuffer;
+
+    public:
+        Label()
+        {
+        }
+
+        Label(AbstractMacroAssembler<AssemblerType>* masm)
+            : m_label(masm->m_assembler.label())
+        {
+        }
+
+        bool isUsed() const { return m_label.isUsed(); }
+        void used() { m_label.used(); }
+        bool isSet() const { return m_label.isValid(); }
+    private:
+        JmpDst m_label;
+    };
+
+
+
+
+
+    class DataLabelPtr {
+        template<class TemplateAssemblerType>
+        friend class AbstractMacroAssembler;
+        friend class LinkBuffer;
+    public:
+        DataLabelPtr()
+        {
+        }
+
+        DataLabelPtr(AbstractMacroAssembler<AssemblerType>* masm)
+            : m_label(masm->m_assembler.label())
+        {
+        }
+
+        bool isSet() const { return m_label.isValid(); }
+
+    private:
+        JmpDst m_label;
+    };
+
+
+
+
+
+    class DataLabel32 {
+        template<class TemplateAssemblerType>
+        friend class AbstractMacroAssembler;
+        friend class LinkBuffer;
+    public:
+        DataLabel32()
+        {
+        }
+
+        DataLabel32(AbstractMacroAssembler<AssemblerType>* masm)
+            : m_label(masm->m_assembler.label())
+        {
+        }
+
+    private:
+        JmpDst m_label;
+    };
+
+
+
+
+
+
+
+    class Call {
+        template<class TemplateAssemblerType>
+        friend class AbstractMacroAssembler;
+
+    public:
+        enum Flags {
+            None = 0x0,
+            Linkable = 0x1,
+            Near = 0x2,
+            LinkableNear = 0x3
+        };
+
+        Call()
+            : m_flags(None)
+        {
+        }
+
+        Call(JmpSrc jmp, Flags flags)
+            : m_jmp(jmp)
+            , m_flags(flags)
+        {
+        }
+
+        bool isFlagSet(Flags flag)
+        {
+            return !!(m_flags & flag);
+        }
+
+        static Call fromTailJump(Jump jump)
+        {
+            return Call(jump.m_jmp, Linkable);
+        }
+
+        JmpSrc m_jmp;
+    private:
+        Flags m_flags;
+    };
+
+
+
+
+
+
+
+    class Jump {
+        template<class TemplateAssemblerType>
+        friend class AbstractMacroAssembler;
+        friend class Call;
+        friend class LinkBuffer;
+    public:
+        Jump()
+        {
+        }
+
+        Jump(JmpSrc jmp)
+            : m_jmp(jmp)
+        {
+        }
+
+        void link(AbstractMacroAssembler<AssemblerType>* masm)
+        {
+            masm->m_assembler.linkJump(m_jmp, masm->m_assembler.label());
+        }
+
+        void linkTo(Label label, AbstractMacroAssembler<AssemblerType>* masm)
+        {
+            masm->m_assembler.linkJump(m_jmp, label.m_label);
+        }
+
+    private:
+        JmpSrc m_jmp;
+    };
+
+
+
+
+
+    class JumpList {
+        friend class LinkBuffer;
+
+    public:
+        typedef js::Vector<Jump, 16 ,js::SystemAllocPolicy > JumpVector;
+
+        JumpList() {}
+
+        JumpList(const JumpList &other)
+        {
+            m_jumps.append(other.m_jumps);
+        }
+
+        JumpList &operator=(const JumpList &other)
+        {
+            m_jumps.clear();
+            m_jumps.append(other.m_jumps);
+            return *this;
+        }
+
+        void link(AbstractMacroAssembler<AssemblerType>* masm)
+        {
+            size_t size = m_jumps.length();
+            for (size_t i = 0; i < size; ++i)
+                m_jumps[i].link(masm);
+            m_jumps.clear();
+        }
+
+        void linkTo(Label label, AbstractMacroAssembler<AssemblerType>* masm)
+        {
+            size_t size = m_jumps.length();
+            for (size_t i = 0; i < size; ++i)
+                m_jumps[i].linkTo(label, masm);
+            m_jumps.clear();
+        }
+
+        void append(Jump jump)
+        {
+            m_jumps.append(jump);
+        }
+
+        void append(const JumpList& other)
+        {
+            m_jumps.append(other.m_jumps.begin(), other.m_jumps.length());
+        }
+
+        void clear()
+        {
+            m_jumps.clear();
+        }
+
+        bool empty()
+        {
+            return !m_jumps.length();
+        }
+
+        const JumpVector& jumps() const { return m_jumps; }
+
+    private:
+        JumpVector m_jumps;
+    };
+
+
+
+
+    static CodePtr trampolineAt(CodeRef ref, Label label)
+    {
+        return CodePtr(AssemblerType::getRelocatedAddress(ref.m_code.dataLocation(), label.m_label));
+    }
+
+    size_t size()
+    {
+        return m_assembler.size();
+    }
+
+    unsigned char *buffer()
+    {
+        return m_assembler.buffer();
+    }
+
+    bool oom()
+    {
+        return m_assembler.oom();
+    }
+
+    void executableCopy(void* buffer)
+    {
+        do { } while(0);
+        m_assembler.executableCopy(buffer);
+    }
+
+    Label label()
+    {
+        return Label(this);
+    }
+
+    DataLabel32 dataLabel32()
+    {
+        return DataLabel32(this);
+    }
+
+    Label align()
+    {
+        m_assembler.align(16);
+        return Label(this);
+    }
+
+    ptrdiff_t differenceBetween(Label from, Jump to)
+    {
+        return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_jmp);
+    }
+
+    ptrdiff_t differenceBetween(Label from, Call to)
+    {
+        return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_jmp);
+    }
+
+    ptrdiff_t differenceBetween(Label from, Label to)
+    {
+        return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label);
+    }
+
+    ptrdiff_t differenceBetween(Label from, DataLabelPtr to)
+    {
+        return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label);
+    }
+
+    ptrdiff_t differenceBetween(Label from, DataLabel32 to)
+    {
+        return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label);
+    }
+
+    ptrdiff_t differenceBetween(DataLabel32 from, Label to)
+    {
+        return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label);
+    }
+
+    ptrdiff_t differenceBetween(DataLabelPtr from, Label to)
+    {
+        return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label);
+    }
+
+    ptrdiff_t differenceBetween(DataLabelPtr from, Jump to)
+    {
+        return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_jmp);
+    }
+
+    ptrdiff_t differenceBetween(DataLabelPtr from, DataLabelPtr to)
+    {
+        return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_label);
+    }
+
+    ptrdiff_t differenceBetween(DataLabelPtr from, Call to)
+    {
+        return AssemblerType::getDifferenceBetweenLabels(from.m_label, to.m_jmp);
+    }
+
+protected:
+    AssemblerType m_assembler;
+
+    friend class LinkBuffer;
+    friend class RepatchBuffer;
+
+    static void linkJump(void* code, Jump jump, CodeLocationLabel target)
+    {
+        AssemblerType::linkJump(code, jump.m_jmp, target.dataLocation());
+    }
+
+    static void linkPointer(void* code, typename AssemblerType::JmpDst label, void* value)
+    {
+        AssemblerType::linkPointer(code, label, value);
+    }
+
+    static void* getLinkerAddress(void* code, typename AssemblerType::JmpSrc label)
+    {
+        return AssemblerType::getRelocatedAddress(code, label);
+    }
+
+    static void* getLinkerAddress(void* code, typename AssemblerType::JmpDst label)
+    {
+        return AssemblerType::getRelocatedAddress(code, label);
+    }
+
+    static unsigned getLinkerCallReturnOffset(Call call)
+    {
+        return AssemblerType::getCallReturnOffset(call.m_jmp);
+    }
+
+    static void repatchJump(CodeLocationJump jump, CodeLocationLabel destination)
+    {
+        AssemblerType::relinkJump(jump.dataLocation(), destination.dataLocation());
+    }
+
+    static bool canRepatchJump(CodeLocationJump jump, CodeLocationLabel destination)
+    {
+        return AssemblerType::canRelinkJump(jump.dataLocation(), destination.dataLocation());
+    }
+
+    static void repatchNearCall(CodeLocationNearCall nearCall, CodeLocationLabel destination)
+    {
+        AssemblerType::relinkCall(nearCall.dataLocation(), destination.executableAddress());
+    }
+
+    static void repatchInt32(CodeLocationDataLabel32 dataLabel32, int32_t value)
+    {
+        AssemblerType::repatchInt32(dataLabel32.dataLocation(), value);
+    }
+
+    static void repatchPointer(CodeLocationDataLabelPtr dataLabelPtr, void* value)
+    {
+        AssemblerType::repatchPointer(dataLabelPtr.dataLocation(), value);
+    }
+
+    static void repatchLoadPtrToLEA(CodeLocationInstruction instruction)
+    {
+        AssemblerType::repatchLoadPtrToLEA(instruction.dataLocation());
+    }
+
+    static void repatchLEAToLoadPtr(CodeLocationInstruction instruction)
+    {
+        AssemblerType::repatchLEAToLoadPtr(instruction.dataLocation());
+    }
+};
+
+}
+# 41 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssemblerARM.h" 2
+
+namespace JSC {
+
+class MacroAssemblerARM : public AbstractMacroAssembler<ARMAssembler> {
+    static const int DoubleConditionMask = 0x0f;
+    static const int DoubleConditionBitSpecial = 0x8;
+public:
+    enum Condition {
+        Equal = ARMAssembler::EQ,
+        NotEqual = ARMAssembler::NE,
+        Above = ARMAssembler::HI,
+        AboveOrEqual = ARMAssembler::CS,
+        Below = ARMAssembler::CC,
+        BelowOrEqual = ARMAssembler::LS,
+        GreaterThan = ARMAssembler::GT,
+        GreaterThanOrEqual = ARMAssembler::GE,
+        LessThan = ARMAssembler::LT,
+        LessThanOrEqual = ARMAssembler::LE,
+        Overflow = ARMAssembler::VS,
+        Signed = ARMAssembler::MI,
+        Zero = ARMAssembler::EQ,
+        NonZero = ARMAssembler::NE
+    };
+
+    enum DoubleCondition {
+
+        DoubleEqual = ARMAssembler::EQ,
+        DoubleNotEqual = ARMAssembler::NE | DoubleConditionBitSpecial,
+        DoubleGreaterThan = ARMAssembler::GT,
+        DoubleGreaterThanOrEqual = ARMAssembler::GE,
+        DoubleLessThan = ARMAssembler::CC,
+        DoubleLessThanOrEqual = ARMAssembler::LS,
+
+        DoubleEqualOrUnordered = ARMAssembler::EQ | DoubleConditionBitSpecial,
+        DoubleNotEqualOrUnordered = ARMAssembler::NE,
+        DoubleGreaterThanOrUnordered = ARMAssembler::HI,
+        DoubleGreaterThanOrEqualOrUnordered = ARMAssembler::CS,
+        DoubleLessThanOrUnordered = ARMAssembler::LT,
+        DoubleLessThanOrEqualOrUnordered = ARMAssembler::LE
+    };
+
+    static const RegisterID stackPointerRegister = ARMRegisters::sp;
+    static const RegisterID linkRegister = ARMRegisters::lr;
+
+    static const Scale ScalePtr = TimesFour;
+    static const unsigned int TotalRegisters = 16;
+
+    void add32(RegisterID src, RegisterID dest)
+    {
+        m_assembler.adds_r(dest, dest, src);
+    }
+
+    void add32(TrustedImm32 imm, Address address)
+    {
+        load32(address, ARMRegisters::S1);
+        add32(imm, ARMRegisters::S1);
+        store32(ARMRegisters::S1, address);
+    }
+
+    void add32(TrustedImm32 imm, RegisterID dest)
+    {
+        m_assembler.adds_r(dest, dest, m_assembler.getImm(imm.m_value, ARMRegisters::S0));
+    }
+
+    void add32(Address src, RegisterID dest)
+    {
+        load32(src, ARMRegisters::S1);
+        add32(ARMRegisters::S1, dest);
+    }
+
+    void and32(Address src, RegisterID dest)
+    {
+        load32(src, ARMRegisters::S1);
+        and32(ARMRegisters::S1, dest);
+    }
+
+    void and32(RegisterID src, RegisterID dest)
+    {
+        m_assembler.ands_r(dest, dest, src);
+    }
+
+    void and32(Imm32 imm, RegisterID dest)
+    {
+        ARMWord w = m_assembler.getImm(imm.m_value, ARMRegisters::S0, true);
+        if (w & ARMAssembler::OP2_INV_IMM)
+            m_assembler.bics_r(dest, dest, w & ~ARMAssembler::OP2_INV_IMM);
+        else
+            m_assembler.ands_r(dest, dest, w);
+    }
+
+    void lshift32(RegisterID shift_amount, RegisterID dest)
+    {
+        ARMWord w = ARMAssembler::getOp2(0x1f);
+        do { } while(0);
+        m_assembler.and_r(ARMRegisters::S0, shift_amount, w);
+
+        m_assembler.movs_r(dest, m_assembler.lsl_r(dest, ARMRegisters::S0));
+    }
+
+    void lshift32(Imm32 imm, RegisterID dest)
+    {
+        m_assembler.movs_r(dest, m_assembler.lsl(dest, imm.m_value & 0x1f));
+    }
+
+    void mul32(RegisterID src, RegisterID dest)
+    {
+        if (src == dest) {
+            move(src, ARMRegisters::S0);
+            src = ARMRegisters::S0;
+        }
+        m_assembler.muls_r(dest, dest, src);
+    }
+
+    void mul32(Imm32 imm, RegisterID src, RegisterID dest)
+    {
+        move(imm, ARMRegisters::S0);
+        m_assembler.muls_r(dest, src, ARMRegisters::S0);
+    }
+
+    void neg32(RegisterID srcDest)
+    {
+        m_assembler.rsbs_r(srcDest, srcDest, ARMAssembler::getOp2(0));
+    }
+
+    void not32(RegisterID dest)
+    {
+        m_assembler.mvns_r(dest, dest);
+    }
+
+    void or32(RegisterID src, RegisterID dest)
+    {
+        m_assembler.orrs_r(dest, dest, src);
+    }
+
+    void or32(TrustedImm32 imm, RegisterID dest)
+    {
+        m_assembler.orrs_r(dest, dest, m_assembler.getImm(imm.m_value, ARMRegisters::S0));
+    }
+
+    void rshift32(RegisterID shift_amount, RegisterID dest)
+    {
+        ARMWord w = ARMAssembler::getOp2(0x1f);
+        do { } while(0);
+        m_assembler.and_r(ARMRegisters::S0, shift_amount, w);
+
+        m_assembler.movs_r(dest, m_assembler.asr_r(dest, ARMRegisters::S0));
+    }
+
+    void rshift32(Imm32 imm, RegisterID dest)
+    {
+        m_assembler.movs_r(dest, m_assembler.asr(dest, imm.m_value & 0x1f));
+    }
+
+    void urshift32(RegisterID shift_amount, RegisterID dest)
+    {
+        ARMWord w = ARMAssembler::getOp2(0x1f);
+        do { } while(0);
+        m_assembler.and_r(ARMRegisters::S0, shift_amount, w);
+
+        m_assembler.movs_r(dest, m_assembler.lsr_r(dest, ARMRegisters::S0));
+    }
+
+    void urshift32(Imm32 imm, RegisterID dest)
+    {
+        m_assembler.movs_r(dest, m_assembler.lsr(dest, imm.m_value & 0x1f));
+    }
+
+    void sub32(RegisterID src, RegisterID dest)
+    {
+        m_assembler.subs_r(dest, dest, src);
+    }
+
+    void sub32(TrustedImm32 imm, RegisterID dest)
+    {
+        m_assembler.subs_r(dest, dest, m_assembler.getImm(imm.m_value, ARMRegisters::S0));
+    }
+
+    void sub32(TrustedImm32 imm, Address address)
+    {
+        load32(address, ARMRegisters::S1);
+        sub32(imm, ARMRegisters::S1);
+        store32(ARMRegisters::S1, address);
+    }
+
+    void sub32(Address src, RegisterID dest)
+    {
+        load32(src, ARMRegisters::S1);
+        sub32(ARMRegisters::S1, dest);
+    }
+
+    void or32(Address address, RegisterID dest)
+    {
+        load32(address, ARMRegisters::S1);
+        or32(ARMRegisters::S1, dest);
+    }
+
+    void xor32(RegisterID src, RegisterID dest)
+    {
+        m_assembler.eors_r(dest, dest, src);
+    }
+
+    void xor32(TrustedImm32 imm, RegisterID dest)
+    {
+        m_assembler.eors_r(dest, dest, m_assembler.getImm(imm.m_value, ARMRegisters::S0));
+    }
+
+    void xor32(Address src, RegisterID dest)
+    {
+        load32(src, ARMRegisters::S1);
+        m_assembler.eors_r(dest, dest, ARMRegisters::S1);
+    }
+
+    void load8SignExtend(ImplicitAddress address, RegisterID dest)
+    {
+        m_assembler.dataTransferN(true, true, 8, dest, address.base, address.offset);
+    }
+
+    void load8ZeroExtend(ImplicitAddress address, RegisterID dest)
+    {
+        m_assembler.dataTransferN(true, false, 8, dest, address.base, address.offset);
+    }
+
+    void load8SignExtend(BaseIndex address, RegisterID dest)
+    {
+        m_assembler.baseIndexTransferN(true, true, 8, dest,
+                                       address.base, address.index, address.scale, address.offset);
+    }
+
+    void load8ZeroExtend(BaseIndex address, RegisterID dest)
+    {
+        m_assembler.baseIndexTransferN(true, false, 8, dest,
+                                       address.base, address.index, address.scale, address.offset);
+    }
+
+
+    void load8(ImplicitAddress address, RegisterID dest)
+    {
+        load8ZeroExtend(address, dest);
+    }
+
+    void load16SignExtend(ImplicitAddress address, RegisterID dest)
+    {
+        m_assembler.dataTransferN(true, true, 16, dest, address.base, address.offset);
+    }
+
+    void load16ZeroExtend(ImplicitAddress address, RegisterID dest)
+    {
+        m_assembler.dataTransferN(true, false, 16, dest, address.base, address.offset);
+    }
+    void load16SignExtend(BaseIndex address, RegisterID dest)
+    {
+        m_assembler.baseIndexTransferN(true, true, 16, dest,
+                                       address.base, address.index, address.scale, address.offset);
+    }
+    void load16ZeroExtend(BaseIndex address, RegisterID dest)
+    {
+        m_assembler.baseIndexTransferN(true, false, 16, dest,
+                                       address.base, address.index, address.scale, address.offset);
+    }
+
+    void load32(ImplicitAddress address, RegisterID dest)
+    {
+        m_assembler.dataTransfer32(true, dest, address.base, address.offset);
+    }
+
+    void load32(BaseIndex address, RegisterID dest)
+    {
+        m_assembler.baseIndexTransfer32(true, dest, address.base, address.index, static_cast<int>(address.scale), address.offset);
+    }
+
+
+
+
+    void load32WithUnalignedHalfWords(BaseIndex address, RegisterID dest)
+    {
+        load32(address, dest);
+    }
+
+
+    DataLabel32 load32WithAddressOffsetPatch(Address address, RegisterID dest)
+    {
+        do { } while(0);
+        DataLabel32 dataLabel(this);
+        m_assembler.ldr_un_imm(ARMRegisters::S0, 0);
+        m_assembler.dtr_ur(true, dest, address.base, ARMRegisters::S0);
+        return dataLabel;
+    }
+
+    DataLabel32 load64WithAddressOffsetPatch(Address address, RegisterID hi, RegisterID lo)
+    {
+        do { } while(0);
+        do { } while(0);
+        DataLabel32 dataLabel(this);
+        m_assembler.ldr_un_imm(ARMRegisters::S0, 0);
+        m_assembler.add_r(ARMRegisters::S0, ARMRegisters::S0, address.base);
+        m_assembler.dtr_u(true, lo, ARMRegisters::S0, 0);
+        m_assembler.dtr_u(true, hi, ARMRegisters::S0, 4);
+        return dataLabel;
+    }
+
+    Label loadPtrWithPatchToLEA(Address address, RegisterID dest)
+    {
+        Label label(this);
+        load32(address, dest);
+        return label;
+    }
+
+    void load16(BaseIndex address, RegisterID dest)
+    {
+        m_assembler.add_r(ARMRegisters::S1, address.base, m_assembler.lsl(address.index, address.scale));
+        load16(Address(ARMRegisters::S1, address.offset), dest);
+    }
+
+    void load16(ImplicitAddress address, RegisterID dest)
+    {
+        if (address.offset >= 0)
+            m_assembler.ldrh_u(dest, address.base, m_assembler.getOffsetForHalfwordDataTransfer(address.offset, ARMRegisters::S0));
+        else
+            m_assembler.ldrh_d(dest, address.base, m_assembler.getOffsetForHalfwordDataTransfer(-address.offset, ARMRegisters::S0));
+    }
+
+    DataLabel32 store32WithAddressOffsetPatch(RegisterID src, Address address)
+    {
+        do { } while(0);
+        DataLabel32 dataLabel(this);
+        m_assembler.ldr_un_imm(ARMRegisters::S0, 0);
+        m_assembler.dtr_ur(false, src, address.base, ARMRegisters::S0);
+        return dataLabel;
+    }
+
+    DataLabel32 store64WithAddressOffsetPatch(RegisterID hi, RegisterID lo, Address address)
+    {
+        do { } while(0);
+        do { } while(0);
+        do { } while(0);
+        DataLabel32 dataLabel(this);
+        m_assembler.ldr_un_imm(ARMRegisters::S0, address.offset);
+        m_assembler.add_r(ARMRegisters::S0, ARMRegisters::S0, address.base);
+        m_assembler.dtr_u(false, lo, ARMRegisters::S0, 0);
+        m_assembler.dtr_u(false, hi, ARMRegisters::S0, 4);
+        return dataLabel;
+    }
+
+    DataLabel32 store64WithAddressOffsetPatch(Imm32 hi, RegisterID lo, Address address)
+    {
+        do { } while(0);
+        do { } while(0);
+        do { } while(0);
+        do { } while(0);
+        do { } while(0);
+        DataLabel32 dataLabel(this);
+        m_assembler.ldr_un_imm(ARMRegisters::S0, address.offset);
+        m_assembler.moveImm(hi.m_value, ARMRegisters::S1);
+        m_assembler.add_r(ARMRegisters::S0, ARMRegisters::S0, address.base);
+        m_assembler.dtr_u(false, lo, ARMRegisters::S0, 0);
+        m_assembler.dtr_u(false, ARMRegisters::S1, ARMRegisters::S0, 4);
+        return dataLabel;
+    }
+
+    DataLabel32 store64WithAddressOffsetPatch(Imm32 hi, Imm32 lo, Address address)
+    {
+        do { } while(0);
+        do { } while(0);
+        DataLabel32 dataLabel(this);
+        m_assembler.ldr_un_imm(ARMRegisters::S0, address.offset);
+        m_assembler.add_r(ARMRegisters::S0, ARMRegisters::S0, address.base);
+        m_assembler.moveImm(lo.m_value, ARMRegisters::S1);
+        m_assembler.dtr_u(false, ARMRegisters::S1, ARMRegisters::S0, 0);
+
+        m_assembler.moveImm(hi.m_value, ARMRegisters::S1);
+        m_assembler.dtr_u(false, ARMRegisters::S1, ARMRegisters::S0, 4);
+        return dataLabel;
+    }
+
+    void store32(RegisterID src, ImplicitAddress address)
+    {
+        m_assembler.dataTransfer32(false, src, address.base, address.offset);
+    }
+
+    void store32(RegisterID src, BaseIndex address)
+    {
+        m_assembler.baseIndexTransfer32(false, src, address.base, address.index, static_cast<int>(address.scale), address.offset);
+    }
+
+    void store32(TrustedImm32 imm, BaseIndex address)
+    {
+        if (imm.m_isPointer)
+            m_assembler.ldr_un_imm(ARMRegisters::S1, imm.m_value);
+        else
+            move(imm, ARMRegisters::S1);
+        store32(ARMRegisters::S1, address);
+    }
+
+    void store32(TrustedImm32 imm, ImplicitAddress address)
+    {
+        if (imm.m_isPointer)
+            m_assembler.ldr_un_imm(ARMRegisters::S1, imm.m_value);
+        else
+            move(imm, ARMRegisters::S1);
+        store32(ARMRegisters::S1, address);
+    }
+
+    void store32(RegisterID src, void* address)
+    {
+        m_assembler.ldr_un_imm(ARMRegisters::S0, reinterpret_cast<ARMWord>(address));
+        m_assembler.dtr_u(false, src, ARMRegisters::S0, 0);
+    }
+
+    void store32(TrustedImm32 imm, void* address)
+    {
+        m_assembler.ldr_un_imm(ARMRegisters::S0, reinterpret_cast<ARMWord>(address));
+        if (imm.m_isPointer)
+            m_assembler.ldr_un_imm(ARMRegisters::S1, imm.m_value);
+        else
+            m_assembler.moveImm(imm.m_value, ARMRegisters::S1);
+        m_assembler.dtr_u(false, ARMRegisters::S1, ARMRegisters::S0, 0);
+    }
+
+    void store16(RegisterID src, ImplicitAddress address)
+    {
+        m_assembler.dataTransferN(false, false, 16, src, address.base, address.offset);
+    }
+    void store16(RegisterID src, BaseIndex address)
+    {
+        m_assembler.baseIndexTransferN(false, false, 16, src, address.base, address.index, static_cast<int>(address.scale), address.offset);
+    }
+
+    void store16(TrustedImm32 imm, BaseIndex address)
+    {
+        if (imm.m_isPointer)
+            do { } while(0);
+        else
+            move(imm, ARMRegisters::S1);
+        store16(ARMRegisters::S1, address);
+    }
+    void store16(TrustedImm32 imm, ImplicitAddress address)
+    {
+        if (imm.m_isPointer)
+            do { } while(0);
+        else
+            move(imm, ARMRegisters::S1);
+        store16(ARMRegisters::S1, address);
+    }
+
+    void store16(RegisterID src, void* address)
+    {
+        m_assembler.ldr_un_imm(ARMRegisters::S0, reinterpret_cast<ARMWord>(address));
+        m_assembler.mem_imm_off(false, false, 16, true, src, ARMRegisters::S0, 0);
+    }
+
+    void store16(TrustedImm32 imm, void* address)
+    {
+        m_assembler.ldr_un_imm(ARMRegisters::S0, reinterpret_cast<ARMWord>(address));
+        if (imm.m_isPointer)
+            do { } while(0);
+        else
+            m_assembler.moveImm(imm.m_value, ARMRegisters::S1);
+        m_assembler.mem_imm_off(false, false, 16, true, ARMRegisters::S1, ARMRegisters::S0, 0);
+    }
+
+    void store8(RegisterID src, ImplicitAddress address)
+    {
+        m_assembler.dataTransferN(false, false, 16, src, address.base, address.offset);
+    }
+
+    void store8(RegisterID src, BaseIndex address)
+    {
+        m_assembler.baseIndexTransferN(false, false, 8, src, address.base, address.index, static_cast<int>(address.scale), address.offset);
+    }
+
+    void store8(TrustedImm32 imm, BaseIndex address)
+    {
+        if (imm.m_isPointer)
+            do { } while(0);
+        else
+            move(imm, ARMRegisters::S1);
+        store8(ARMRegisters::S1, address);
+    }
+
+    void store8(TrustedImm32 imm, ImplicitAddress address)
+    {
+        if (imm.m_isPointer)
+            do { } while(0);
+        else
+            move(imm, ARMRegisters::S1);
+        store8(ARMRegisters::S1, address);
+    }
+
+    void store8(RegisterID src, void* address)
+    {
+        m_assembler.ldr_un_imm(ARMRegisters::S0, reinterpret_cast<ARMWord>(address));
+        m_assembler.mem_imm_off(false, false, 8, true, src, ARMRegisters::S0, 0);
+    }
+
+    void store8(TrustedImm32 imm, void* address)
+    {
+        m_assembler.ldr_un_imm(ARMRegisters::S0, reinterpret_cast<ARMWord>(address));
+        if (imm.m_isPointer)
+            do { } while(0);
+        else
+            m_assembler.moveImm(imm.m_value, ARMRegisters::S1);
+        m_assembler.mem_imm_off(false, false, 8, true, ARMRegisters::S1, ARMRegisters::S0, 0);
+    }
+
+    void pop(RegisterID dest)
+    {
+        m_assembler.pop_r(dest);
+    }
+
+    void push(RegisterID src)
+    {
+        m_assembler.push_r(src);
+    }
+
+    void push(Address address)
+    {
+        load32(address, ARMRegisters::S1);
+        push(ARMRegisters::S1);
+    }
+
+    void push(Imm32 imm)
+    {
+        move(imm, ARMRegisters::S0);
+        push(ARMRegisters::S0);
+    }
+
+    void move(TrustedImm32 imm, RegisterID dest)
+    {
+        if (imm.m_isPointer)
+            m_assembler.ldr_un_imm(dest, imm.m_value);
+        else
+            m_assembler.moveImm(imm.m_value, dest);
+    }
+
+    void move(RegisterID src, RegisterID dest)
+    {
+        m_assembler.mov_r(dest, src);
+    }
+
+    void move(TrustedImmPtr imm, RegisterID dest)
+    {
+        move(Imm32(imm), dest);
+    }
+
+    void swap(RegisterID reg1, RegisterID reg2)
+    {
+        m_assembler.mov_r(ARMRegisters::S0, reg1);
+        m_assembler.mov_r(reg1, reg2);
+        m_assembler.mov_r(reg2, ARMRegisters::S0);
+    }
+
+    void signExtend32ToPtr(RegisterID src, RegisterID dest)
+    {
+        if (src != dest)
+            move(src, dest);
+    }
+
+    void zeroExtend32ToPtr(RegisterID src, RegisterID dest)
+    {
+        if (src != dest)
+            move(src, dest);
+    }
+
+    Jump branch8(Condition cond, Address left, Imm32 right)
+    {
+        load8(left, ARMRegisters::S1);
+        return branch32(cond, ARMRegisters::S1, right);
+    }
+
+    Jump branch32(Condition cond, RegisterID left, RegisterID right, int useConstantPool = 0)
+    {
+        m_assembler.cmp_r(left, right);
+        return Jump(m_assembler.jmp(ARMCondition(cond), useConstantPool));
+    }
+
+    Jump branch32(Condition cond, RegisterID left, TrustedImm32 right, int useConstantPool = 0)
+    {
+        do { } while(0);
+        if (right.m_isPointer) {
+            m_assembler.ldr_un_imm(ARMRegisters::S0, right.m_value);
+            m_assembler.cmp_r(left, ARMRegisters::S0);
+        } else {
+
+
+
+
+
+
+            ARMWord arg = m_assembler.getOp2(right.m_value);
+            if (arg != m_assembler.INVALID_IMM) {
+                m_assembler.cmp_r(left, arg);
+            } else {
+
+
+                arg = m_assembler.getOp2(-right.m_value);
+                if (arg != m_assembler.INVALID_IMM) {
+                    m_assembler.cmn_r(left, arg);
+                } else {
+
+
+
+                    m_assembler.cmp_r(left, m_assembler.getImm(right.m_value, ARMRegisters::S0));
+                }
+            }
+        }
+        return Jump(m_assembler.jmp(ARMCondition(cond), useConstantPool));
+    }
+
+
+
+
+
+    Jump branch32FixedLength(Condition cond, RegisterID left, TrustedImm32 right)
+    {
+        m_assembler.ldr_un_imm(ARMRegisters::S1, right.m_value);
+        return branch32(cond, left, ARMRegisters::S1, true);
+    }
+
+
+    Jump branch32WithPatch(Condition cond, RegisterID left, TrustedImm32 right, DataLabel32 &dataLabel)
+    {
+        do { } while(0);
+        dataLabel = moveWithPatch(right, ARMRegisters::S1);
+        return branch32(cond, left, ARMRegisters::S1, true);
+    }
+
+    Jump branch32WithPatch(Condition cond, Address left, TrustedImm32 right, DataLabel32 &dataLabel)
+    {
+        do { } while(0);
+        load32(left, ARMRegisters::S1);
+        dataLabel = moveWithPatch(right, ARMRegisters::S0);
+        return branch32(cond, ARMRegisters::S1, ARMRegisters::S0, true);
+    }
+
+    Jump branch32(Condition cond, RegisterID left, Address right)
+    {
+
+        load32(right, ARMRegisters::S1);
+        return branch32(cond, left, ARMRegisters::S1);
+    }
+
+    Jump branch32(Condition cond, Address left, RegisterID right)
+    {
+        load32(left, ARMRegisters::S1);
+        return branch32(cond, ARMRegisters::S1, right);
+    }
+
+    Jump branch32(Condition cond, Address left, TrustedImm32 right)
+    {
+        load32(left, ARMRegisters::S1);
+        return branch32(cond, ARMRegisters::S1, right);
+    }
+
+    Jump branch32(Condition cond, BaseIndex left, TrustedImm32 right)
+    {
+        load32(left, ARMRegisters::S1);
+        return branch32(cond, ARMRegisters::S1, right);
+    }
+
+    Jump branch32WithUnalignedHalfWords(Condition cond, BaseIndex left, TrustedImm32 right)
+    {
+        load32WithUnalignedHalfWords(left, ARMRegisters::S1);
+        return branch32(cond, ARMRegisters::S1, right);
+    }
+
+    Jump branch16(Condition cond, BaseIndex left, RegisterID right)
+    {
+        (void)(cond);
+        (void)(left);
+        (void)(right);
+        __builtin_unreachable();
+        return jump();
+    }
+
+    Jump branch16(Condition cond, BaseIndex left, Imm32 right)
+    {
+        load16(left, ARMRegisters::S0);
+        move(right, ARMRegisters::S1);
+        m_assembler.cmp_r(ARMRegisters::S0, ARMRegisters::S1);
+        return m_assembler.jmp(ARMCondition(cond));
+    }
+
+    Jump branchTest8(Condition cond, Address address, Imm32 mask = Imm32(-1))
+    {
+        load8(address, ARMRegisters::S1);
+        return branchTest32(cond, ARMRegisters::S1, mask);
+    }
+
+    Jump branchTest32(Condition cond, RegisterID reg, RegisterID mask)
+    {
+        do { } while(0);
+        m_assembler.tst_r(reg, mask);
+        return Jump(m_assembler.jmp(ARMCondition(cond)));
+    }
+
+    Jump branchTest32(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1))
+    {
+        do { } while(0);
+        ARMWord w = m_assembler.getImm(mask.m_value, ARMRegisters::S0, true);
+        if (w & ARMAssembler::OP2_INV_IMM)
+            m_assembler.bics_r(ARMRegisters::S0, reg, w & ~ARMAssembler::OP2_INV_IMM);
+        else
+            m_assembler.tst_r(reg, w);
+        return Jump(m_assembler.jmp(ARMCondition(cond)));
+    }
+
+    Jump branchTest32(Condition cond, Address address, Imm32 mask = Imm32(-1))
+    {
+        load32(address, ARMRegisters::S1);
+        return branchTest32(cond, ARMRegisters::S1, mask);
+    }
+
+    Jump branchTest32(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1))
+    {
+        load32(address, ARMRegisters::S1);
+        return branchTest32(cond, ARMRegisters::S1, mask);
+    }
+
+    Jump jump()
+    {
+        return Jump(m_assembler.jmp());
+    }
+
+    void jump(RegisterID target)
+    {
+        m_assembler.bx(target);
+    }
+
+    void jump(Address address)
+    {
+        load32(address, ARMRegisters::pc);
+    }
+
+    Jump branchAdd32(Condition cond, RegisterID src, RegisterID dest)
+    {
+        do { } while(0);
+        add32(src, dest);
+        return Jump(m_assembler.jmp(ARMCondition(cond)));
+    }
+
+    Jump branchAdd32(Condition cond, Imm32 imm, RegisterID dest)
+    {
+        do { } while(0);
+        add32(imm, dest);
+        return Jump(m_assembler.jmp(ARMCondition(cond)));
+    }
+
+    Jump branchAdd32(Condition cond, Address src, RegisterID dest)
+    {
+        do { } while(0);
+        add32(src, dest);
+        return Jump(m_assembler.jmp(ARMCondition(cond)));
+    }
+
+    void mull32(RegisterID src1, RegisterID src2, RegisterID dest)
+    {
+        if (src1 == dest) {
+            move(src1, ARMRegisters::S0);
+            src1 = ARMRegisters::S0;
+        }
+        m_assembler.mull_r(ARMRegisters::S1, dest, src2, src1);
+        m_assembler.cmp_r(ARMRegisters::S1, m_assembler.asr(dest, 31));
+    }
+
+    Jump branchMul32(Condition cond, RegisterID src, RegisterID dest)
+    {
+        do { } while(0);
+        if (cond == Overflow) {
+            mull32(src, dest, dest);
+            cond = NonZero;
+        }
+        else
+            mul32(src, dest);
+        return Jump(m_assembler.jmp(ARMCondition(cond)));
+    }
+
+    Jump branchMul32(Condition cond, Imm32 imm, RegisterID src, RegisterID dest)
+    {
+        do { } while(0);
+        if (cond == Overflow) {
+            move(imm, ARMRegisters::S0);
+            mull32(ARMRegisters::S0, src, dest);
+            cond = NonZero;
+        }
+        else
+            mul32(imm, src, dest);
+        return Jump(m_assembler.jmp(ARMCondition(cond)));
+    }
+
+    Jump branchSub32(Condition cond, RegisterID src, RegisterID dest)
+    {
+        do { } while(0);
+        sub32(src, dest);
+        return Jump(m_assembler.jmp(ARMCondition(cond)));
+    }
+
+    Jump branchSub32(Condition cond, Imm32 imm, RegisterID dest)
+    {
+        do { } while(0);
+        sub32(imm, dest);
+        return Jump(m_assembler.jmp(ARMCondition(cond)));
+    }
+
+    Jump branchSub32(Condition cond, Address src, RegisterID dest)
+    {
+        do { } while(0);
+        sub32(src, dest);
+        return Jump(m_assembler.jmp(ARMCondition(cond)));
+    }
+
+    Jump branchSub32(Condition cond, Imm32 imm, Address dest)
+    {
+        do { } while(0);
+        sub32(imm, dest);
+        return Jump(m_assembler.jmp(ARMCondition(cond)));
+    }
+
+    Jump branchNeg32(Condition cond, RegisterID srcDest)
+    {
+        do { } while(0);
+        neg32(srcDest);
+        return Jump(m_assembler.jmp(ARMCondition(cond)));
+    }
+
+    Jump branchOr32(Condition cond, RegisterID src, RegisterID dest)
+    {
+        do { } while(0);
+        or32(src, dest);
+        return Jump(m_assembler.jmp(ARMCondition(cond)));
+    }
+
+
+
+    void nop(int tag)
+    {
+        do { } while(0);
+        m_assembler.mov_r(tag, tag);
+    }
+
+    void breakpoint()
+    {
+        m_assembler.bkpt(0);
+    }
+
+    Call nearCall()
+    {
+
+        Call call(m_assembler.loadBranchTarget(ARMRegisters::S1, ARMAssembler::AL, true), Call::LinkableNear);
+        m_assembler.blx(ARMRegisters::S1);
+        return call;
+
+
+
+
+    }
+
+    Call call(RegisterID target)
+    {
+        m_assembler.blx(target);
+        JmpSrc jmpSrc;
+        return Call(jmpSrc, Call::None);
+    }
+
+    void call(Address address)
+    {
+        call32(address.base, address.offset);
+    }
+
+    void ret()
+    {
+        m_assembler.bx(linkRegister);
+    }
+
+    void set32(Condition cond, Address left, RegisterID right, RegisterID dest)
+    {
+        load32(left, ARMRegisters::S1);
+        set32(cond, ARMRegisters::S1, right, dest);
+    }
+
+    void set32(Condition cond, RegisterID left, Address right, RegisterID dest)
+    {
+        load32(right, ARMRegisters::S1);
+        set32(cond, left, ARMRegisters::S1, dest);
+    }
+
+    void set32(Condition cond, RegisterID left, RegisterID right, RegisterID dest)
+    {
+        m_assembler.cmp_r(left, right);
+        m_assembler.mov_r(dest, ARMAssembler::getOp2(0));
+        m_assembler.mov_r(dest, ARMAssembler::getOp2(1), ARMCondition(cond));
+    }
+
+    void set32(Condition cond, RegisterID left, Imm32 right, RegisterID dest)
+    {
+        m_assembler.cmp_r(left, m_assembler.getImm(right.m_value, ARMRegisters::S0));
+        m_assembler.mov_r(dest, ARMAssembler::getOp2(0));
+        m_assembler.mov_r(dest, ARMAssembler::getOp2(1), ARMCondition(cond));
+    }
+
+    void set32(Condition cond, Address left, Imm32 right, RegisterID dest)
+    {
+        load32(left, ARMRegisters::S1);
+        set32(cond, ARMRegisters::S1, right, dest);
+    }
+
+    void set8(Condition cond, RegisterID left, RegisterID right, RegisterID dest)
+    {
+
+        set32(cond, left, right, dest);
+    }
+
+    void set8(Condition cond, Address left, RegisterID right, RegisterID dest)
+    {
+
+        load32(left, ARMRegisters::S1);
+        set32(cond, ARMRegisters::S1, right, dest);
+    }
+
+    void set8(Condition cond, RegisterID left, Imm32 right, RegisterID dest)
+    {
+
+        set32(cond, left, right, dest);
+    }
+
+    void setTest32(Condition cond, Address address, Imm32 mask, RegisterID dest)
+    {
+        load32(address, ARMRegisters::S1);
+        if (mask.m_value == -1)
+            m_assembler.cmp_r(0, ARMRegisters::S1);
+        else
+            m_assembler.tst_r(ARMRegisters::S1, m_assembler.getImm(mask.m_value, ARMRegisters::S0));
+        m_assembler.mov_r(dest, ARMAssembler::getOp2(0));
+        m_assembler.mov_r(dest, ARMAssembler::getOp2(1), ARMCondition(cond));
+    }
+
+    void setTest8(Condition cond, Address address, Imm32 mask, RegisterID dest)
+    {
+
+        setTest32(cond, address, mask, dest);
+    }
+
+    void add32(TrustedImm32 imm, RegisterID src, RegisterID dest)
+    {
+        m_assembler.add_r(dest, src, m_assembler.getImm(imm.m_value, ARMRegisters::S0));
+    }
+
+    void lea(Address address, RegisterID dest)
+    {
+        m_assembler.add_r(dest, address.base, m_assembler.getImm(address.offset, ARMRegisters::S0));
+    }
+
+    void lea(BaseIndex address, RegisterID dest)
+    {
+
+        move(address.index, ARMRegisters::S1);
+        if (address.scale != 0)
+            lshift32(Imm32(address.scale), ARMRegisters::S1);
+        if (address.offset)
+            add32(Imm32(address.offset), ARMRegisters::S1);
+        add32(address.base, ARMRegisters::S1);
+        move(ARMRegisters::S1, dest);
+    }
+
+    void add32(TrustedImm32 imm, AbsoluteAddress address)
+    {
+        m_assembler.ldr_un_imm(ARMRegisters::S1, reinterpret_cast<ARMWord>(address.m_ptr));
+        m_assembler.dtr_u(true, ARMRegisters::S1, ARMRegisters::S1, 0);
+        add32(imm, ARMRegisters::S1);
+        m_assembler.ldr_un_imm(ARMRegisters::S0, reinterpret_cast<ARMWord>(address.m_ptr));
+        m_assembler.dtr_u(false, ARMRegisters::S1, ARMRegisters::S0, 0);
+    }
+
+    void sub32(TrustedImm32 imm, AbsoluteAddress address)
+    {
+        m_assembler.ldr_un_imm(ARMRegisters::S1, reinterpret_cast<ARMWord>(address.m_ptr));
+        m_assembler.dtr_u(true, ARMRegisters::S1, ARMRegisters::S1, 0);
+        sub32(imm, ARMRegisters::S1);
+        m_assembler.ldr_un_imm(ARMRegisters::S0, reinterpret_cast<ARMWord>(address.m_ptr));
+        m_assembler.dtr_u(false, ARMRegisters::S1, ARMRegisters::S0, 0);
+    }
+
+    void load32(void* address, RegisterID dest)
+    {
+        m_assembler.ldr_un_imm(ARMRegisters::S0, reinterpret_cast<ARMWord>(address));
+        m_assembler.dtr_u(true, dest, ARMRegisters::S0, 0);
+    }
+
+    Jump branch32(Condition cond, AbsoluteAddress left, RegisterID right)
+    {
+        load32(left.m_ptr, ARMRegisters::S1);
+        return branch32(cond, ARMRegisters::S1, right);
+    }
+
+    Jump branch32(Condition cond, AbsoluteAddress left, TrustedImm32 right)
+    {
+        load32(left.m_ptr, ARMRegisters::S1);
+        return branch32(cond, ARMRegisters::S1, right);
+    }
+
+    Call call()
+    {
+
+        Call call(m_assembler.loadBranchTarget(ARMRegisters::S1, ARMAssembler::AL, true), Call::Linkable);
+        m_assembler.blx(ARMRegisters::S1);
+        return call;
+
+
+
+
+    }
+
+    Call tailRecursiveCall()
+    {
+        return Call::fromTailJump(jump());
+    }
+
+    Call makeTailRecursiveCall(Jump oldJump)
+    {
+        return Call::fromTailJump(oldJump);
+    }
+
+    DataLabelPtr moveWithPatch(TrustedImmPtr initialValue, RegisterID dest)
+    {
+        DataLabelPtr dataLabel(this);
+        m_assembler.ldr_un_imm(dest, reinterpret_cast<ARMWord>(initialValue.m_value));
+        return dataLabel;
+    }
+
+    DataLabel32 moveWithPatch(TrustedImm32 initialValue, RegisterID dest)
+    {
+        DataLabel32 dataLabel(this);
+        m_assembler.ldr_un_imm(dest, initialValue.m_value);
+        return dataLabel;
+    }
+
+    Jump branchPtrWithPatch(Condition cond, RegisterID left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0))
+    {
+        dataLabel = moveWithPatch(initialRightValue, ARMRegisters::S1);
+        Jump jump = branch32(cond, left, ARMRegisters::S1, true);
+        return jump;
+    }
+
+    Jump branchPtrWithPatch(Condition cond, Address left, DataLabelPtr& dataLabel, ImmPtr initialRightValue = ImmPtr(0))
+    {
+        load32(left, ARMRegisters::S1);
+        dataLabel = moveWithPatch(initialRightValue, ARMRegisters::S0);
+        Jump jump = branch32(cond, ARMRegisters::S0, ARMRegisters::S1, true);
+        return jump;
+    }
+
+    DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, ImplicitAddress address)
+    {
+        DataLabelPtr dataLabel = moveWithPatch(initialValue, ARMRegisters::S1);
+        store32(ARMRegisters::S1, address);
+        return dataLabel;
+    }
+
+    DataLabelPtr storePtrWithPatch(ImplicitAddress address)
+    {
+        return storePtrWithPatch(ImmPtr(0), address);
+    }
+
+
+    bool supportsFloatingPoint() const
+    {
+        return s_isVFPPresent;
+    }
+
+    bool supportsFloatingPointTruncate() const
+    {
+        return true;
+    }
+
+    bool supportsFloatingPointSqrt() const
+    {
+        return s_isVFPPresent;
+    }
+
+    void moveDouble(FPRegisterID src, FPRegisterID dest)
+    {
+        m_assembler.fcpyd_r(dest, src);
+    }
+
+    void loadDouble(ImplicitAddress address, FPRegisterID dest)
+    {
+
+        m_assembler.doubleTransfer(true, dest, address.base, address.offset);
+    }
+
+    void loadDouble(BaseIndex address, FPRegisterID dest)
+    {
+        m_assembler.baseIndexFloatTransfer(true, true, dest,
+                                           address.base, address.index,
+                                           address.scale, address.offset);
+    }
+
+    DataLabelPtr loadDouble(const void* address, FPRegisterID dest)
+    {
+        DataLabelPtr label = moveWithPatch(ImmPtr(address), ARMRegisters::S0);
+        m_assembler.doubleTransfer(true, dest, ARMRegisters::S0, 0);
+        return label;
+    }
+
+    void fastLoadDouble(RegisterID lo, RegisterID hi, FPRegisterID fpReg) {
+        m_assembler.vmov64(false, true, lo, hi, fpReg);
+    }
+
+    void loadFloat(ImplicitAddress address, FPRegisterID dest)
+    {
+
+        dest = (FPRegisterID) (dest * 2);
+        do { } while(0);
+        m_assembler.floatTransfer(true, dest, address.base, address.offset);
+        m_assembler.vcvt(m_assembler.FloatReg32, m_assembler.FloatReg64, (FPRegisterID)(dest*2), dest);
+    }
+    void loadFloat(BaseIndex address, FPRegisterID dest)
+    {
+        m_assembler.baseIndexFloatTransfer(true, false, (FPRegisterID)(dest*2),
+                                           address.base, address.index,
+                                           address.scale, address.offset);
+        m_assembler.vcvt(m_assembler.FloatReg32, m_assembler.FloatReg64, (FPRegisterID)(dest*2), dest);
+    }
+
+    DataLabelPtr loadFloat(const void* address, FPRegisterID dest)
+    {
+        DataLabelPtr label = moveWithPatch(ImmPtr(address), ARMRegisters::S0);
+        m_assembler.fmem_imm_off(true, false, true, (FPRegisterID)(dest*2), ARMRegisters::S0, 0);
+        m_assembler.vcvt(m_assembler.FloatReg32, m_assembler.FloatReg64, (FPRegisterID)(dest*2), dest);
+        return label;
+    }
+
+    void storeDouble(FPRegisterID src, ImplicitAddress address)
+    {
+
+        m_assembler.doubleTransfer(false, src, address.base, address.offset);
+    }
+
+    void storeDouble(FPRegisterID src, BaseIndex address)
+    {
+        m_assembler.baseIndexFloatTransfer(false, true, src,
+                                           address.base, address.index,
+                                           address.scale, address.offset);
+    }
+
+    void storeDouble(ImmDouble imm, Address address)
+    {
+        store32(Imm32(imm.u.s.lsb), address);
+        store32(Imm32(imm.u.s.msb), Address(address.base, address.offset + 4));
+    }
+
+    void storeDouble(ImmDouble imm, BaseIndex address)
+    {
+        store32(Imm32(imm.u.s.lsb), address);
+        store32(Imm32(imm.u.s.msb),
+                BaseIndex(address.base, address.index, address.scale, address.offset + 4));
+    }
+    void fastStoreDouble(FPRegisterID fpReg, RegisterID lo, RegisterID hi) {
+        m_assembler.vmov64(true, true, lo, hi, fpReg);
+    }
+
+    void storeFloat(FPRegisterID src, ImplicitAddress address)
+    {
+        m_assembler.floatTransfer(false, src, address.base, address.offset);
+    }
+
+    void storeFloat(FPRegisterID src, BaseIndex address)
+    {
+        m_assembler.baseIndexFloatTransfer(false, false, src,
+                                           address.base, address.index,
+                                           address.scale, address.offset);
+    }
+    void storeFloat(ImmDouble imm, Address address)
+    {
+        union {
+            float f;
+            uint32_t u32;
+        } u;
+        u.f = imm.u.d;
+        store32(Imm32(u.u32), address);
+    }
+
+    void storeFloat(ImmDouble imm, BaseIndex address)
+    {
+        union {
+            float f;
+            uint32_t u32;
+        } u;
+        u.f = imm.u.d;
+        store32(Imm32(u.u32), address);
+    }
+
+    void addDouble(FPRegisterID src, FPRegisterID dest)
+    {
+        m_assembler.faddd_r(dest, dest, src);
+    }
+
+    void addDouble(Address src, FPRegisterID dest)
+    {
+        loadDouble(src, ARMRegisters::SD0);
+        addDouble(ARMRegisters::SD0, dest);
+    }
+
+    void divDouble(FPRegisterID src, FPRegisterID dest)
+    {
+        m_assembler.fdivd_r(dest, dest, src);
+    }
+
+    void divDouble(Address src, FPRegisterID dest)
+    {
+        __builtin_unreachable();
+        loadDouble(src, ARMRegisters::SD0);
+        divDouble(ARMRegisters::SD0, dest);
+    }
+
+    void subDouble(FPRegisterID src, FPRegisterID dest)
+    {
+        m_assembler.fsubd_r(dest, dest, src);
+    }
+
+    void subDouble(Address src, FPRegisterID dest)
+    {
+        loadDouble(src, ARMRegisters::SD0);
+        subDouble(ARMRegisters::SD0, dest);
+    }
+
+    void mulDouble(FPRegisterID src, FPRegisterID dest)
+    {
+        m_assembler.fmuld_r(dest, dest, src);
+    }
+
+    void mulDouble(Address src, FPRegisterID dest)
+    {
+        loadDouble(src, ARMRegisters::SD0);
+        mulDouble(ARMRegisters::SD0, dest);
+    }
+
+    void negDouble(FPRegisterID src, FPRegisterID dest)
+    {
+        m_assembler.fnegd_r(dest, src);
+    }
+
+    void absDouble(FPRegisterID src, FPRegisterID dest)
+    {
+        m_assembler.fabsd_r(dest, src);
+    }
+
+    void sqrtDouble(FPRegisterID src, FPRegisterID dest)
+    {
+        m_assembler.fsqrtd_r(dest, src);
+    }
+
+    void convertInt32ToDouble(RegisterID src, FPRegisterID dest)
+    {
+        m_assembler.fmsr_r(floatShadow(dest), src);
+        m_assembler.fsitod_r(dest, floatShadow(dest));
+    }
+
+    void convertUInt32ToDouble(RegisterID src, FPRegisterID dest)
+    {
+        m_assembler.fmsr_r(floatShadow(dest), src);
+        m_assembler.fuitod_r(dest, floatShadow(dest));
+    }
+
+    void convertInt32ToDouble(Address src, FPRegisterID dest)
+    {
+
+        load32(src, ARMRegisters::S1);
+        convertInt32ToDouble(ARMRegisters::S1, dest);
+    }
+
+    void convertInt32ToDouble(AbsoluteAddress src, FPRegisterID dest)
+    {
+        __builtin_unreachable();
+
+        m_assembler.ldr_un_imm(ARMRegisters::S1, (ARMWord)src.m_ptr);
+        m_assembler.dtr_u(true, ARMRegisters::S1, ARMRegisters::S1, 0);
+        convertInt32ToDouble(ARMRegisters::S1, dest);
+    }
+
+    void convertDoubleToFloat(FPRegisterID src, FPRegisterID dest)
+    {
+        m_assembler.vcvt(m_assembler.FloatReg64, m_assembler.FloatReg32, src, dest);
+    }
+
+    Jump branchDouble(DoubleCondition cond, FPRegisterID left, FPRegisterID right)
+    {
+        m_assembler.fcmpd_r(left, right);
+        m_assembler.fmstat();
+        if (cond & DoubleConditionBitSpecial)
+            m_assembler.cmp_r(ARMRegisters::S0, ARMRegisters::S0, ARMAssembler::VS);
+        return Jump(m_assembler.jmp(static_cast<ARMAssembler::Condition>(cond & ~DoubleConditionMask)));
+    }
+
+
+
+
+    Jump branchTruncateDoubleToInt32(FPRegisterID src, RegisterID dest)
+    {
+        m_assembler.ftosizd_r(floatShadow(ARMRegisters::SD0), src);
+
+
+
+        m_assembler.fmrs_r(dest, floatShadow(ARMRegisters::SD0));
+        m_assembler.cmn_r(dest, ARMAssembler::getOp2(-0x7fffffff));
+        m_assembler.cmp_r(dest, ARMAssembler::getOp2(0x80000000), ARMCondition(NonZero));
+        return Jump(m_assembler.jmp(ARMCondition(Zero)));
+    }
+
+
+
+
+
+    void branchConvertDoubleToInt32(FPRegisterID src, RegisterID dest, JumpList& failureCases, FPRegisterID fpTemp)
+    {
+        m_assembler.ftosid_r(floatShadow(ARMRegisters::SD0), src);
+        m_assembler.fmrs_r(dest, floatShadow(ARMRegisters::SD0));
+
+
+        m_assembler.fsitod_r(ARMRegisters::SD0, floatShadow(ARMRegisters::SD0));
+        failureCases.append(branchDouble(DoubleNotEqualOrUnordered, src, ARMRegisters::SD0));
+
+
+        failureCases.append(branchTest32(Zero, dest));
+    }
+
+    void zeroDouble(FPRegisterID srcDest)
+    {
+        m_assembler.mov_r(ARMRegisters::S0, ARMAssembler::getOp2(0));
+        convertInt32ToDouble(ARMRegisters::S0, srcDest);
+    }
+
+    void ensureSpace(int space)
+    {
+        m_assembler.ensureSpace(space);
+    }
+
+    void forceFlushConstantPool()
+    {
+        m_assembler.forceFlushConstantPool();
+    }
+
+    int flushCount()
+    {
+        return m_assembler.flushCount();
+    }
+
+protected:
+    ARMAssembler::Condition ARMCondition(Condition cond)
+    {
+        return static_cast<ARMAssembler::Condition>(cond);
+    }
+
+    void ensureSpace(int insnSpace, int constSpace)
+    {
+        m_assembler.ensureSpace(insnSpace, constSpace);
+    }
+
+    int sizeOfConstantPool()
+    {
+        return m_assembler.sizeOfConstantPool();
+    }
+# 1460 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssemblerARM.h"
+    void call32(RegisterID base, int32_t offset)
+    {
+
+        if (base == ARMRegisters::sp)
+            offset += 4;
+# 1480 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssemblerARM.h"
+        if (offset >= 0) {
+            if (offset <= 0xfff) {
+                m_assembler.dtr_u(true, ARMRegisters::S0, base, offset);
+            } else if (offset <= 0xfffff) {
+                m_assembler.add_r(ARMRegisters::S0, base, ARMAssembler::OP2_IMM | (offset >> 12) | (10 << 8));
+                m_assembler.dtr_u(true, ARMRegisters::S0, ARMRegisters::S0, offset & 0xfff);
+            } else {
+                m_assembler.moveImm(offset, ARMRegisters::S0);
+                m_assembler.dtr_ur(true, ARMRegisters::S0, base, ARMRegisters::S0);
+            }
+        } else {
+            offset = -offset;
+            if (offset <= 0xfff) {
+                m_assembler.dtr_d(true, ARMRegisters::S0, base, offset);
+            } else if (offset <= 0xfffff) {
+                m_assembler.sub_r(ARMRegisters::S0, base, ARMAssembler::OP2_IMM | (offset >> 12) | (10 << 8));
+                m_assembler.dtr_d(true, ARMRegisters::S0, ARMRegisters::S0, offset & 0xfff);
+            } else {
+                m_assembler.moveImm(offset, ARMRegisters::S0);
+                m_assembler.dtr_dr(true, ARMRegisters::S0, base, ARMRegisters::S0);
+            }
+        }
+        m_assembler.blx(ARMRegisters::S0);
+    }
+
+
+private:
+    friend class LinkBuffer;
+    friend class RepatchBuffer;
+
+    static void linkCall(void* code, Call call, FunctionPtr function)
+    {
+        ARMAssembler::linkCall(code, call.m_jmp, function.value());
+    }
+
+    static void repatchCall(CodeLocationCall call, CodeLocationLabel destination)
+    {
+        ARMAssembler::relinkCall(call.dataLocation(), destination.executableAddress());
+    }
+
+    static void repatchCall(CodeLocationCall call, FunctionPtr destination)
+    {
+        ARMAssembler::relinkCall(call.dataLocation(), destination.executableAddress());
+    }
+
+    static const bool s_isVFPPresent;
+};
+
+}
+# 43 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssembler.h" 2
+namespace JSC { typedef MacroAssemblerARM MacroAssemblerBase; }
+# 66 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssembler.h"
+namespace JSC {
+
+class MacroAssembler : public MacroAssemblerBase {
+public:
+
+    using MacroAssemblerBase::pop;
+    using MacroAssemblerBase::jump;
+    using MacroAssemblerBase::branch32;
+    using MacroAssemblerBase::branch16;
+# 83 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/assembler/assembler/MacroAssembler.h"
+    void pop()
+    {
+        addPtr(Imm32(sizeof(void*)), stackPointerRegister);
+    }
+
+    void peek(RegisterID dest, int index = 0)
+    {
+        loadPtr(Address(stackPointerRegister, (index * sizeof(void*))), dest);
+    }
+
+    void poke(RegisterID src, int index = 0)
+    {
+        storePtr(src, Address(stackPointerRegister, (index * sizeof(void*))));
+    }
+
+    void poke(TrustedImm32 value, int index = 0)
+    {
+        store32(value, Address(stackPointerRegister, (index * sizeof(void*))));
+    }
+
+    void poke(TrustedImmPtr imm, int index = 0)
+    {
+        storePtr(imm, Address(stackPointerRegister, (index * sizeof(void*))));
+    }
+
+
+
+    void branchPtr(Condition cond, RegisterID op1, ImmPtr imm, Label target)
+    {
+        branchPtr(cond, op1, imm).linkTo(target, this);
+    }
+
+    void branch32(Condition cond, RegisterID op1, RegisterID op2, Label target)
+    {
+        branch32(cond, op1, op2).linkTo(target, this);
+    }
+
+    void branch32(Condition cond, RegisterID op1, TrustedImm32 imm, Label target)
+    {
+        branch32(cond, op1, imm).linkTo(target, this);
+    }
+
+    void branch32(Condition cond, RegisterID left, Address right, Label target)
+    {
+        branch32(cond, left, right).linkTo(target, this);
+    }
+
+    void branch16(Condition cond, BaseIndex left, RegisterID right, Label target)
+    {
+        branch16(cond, left, right).linkTo(target, this);
+    }
+
+    void branchTestPtr(Condition cond, RegisterID reg, Label target)
+    {
+        branchTestPtr(cond, reg).linkTo(target, this);
+    }
+
+    void jump(Label target)
+    {
+        jump().linkTo(target, this);
+    }
+
+
+
+
+
+
+    void addPtr(RegisterID src, RegisterID dest)
+    {
+        add32(src, dest);
+    }
+
+    void addPtr(Imm32 imm32, Address address)
+    {
+        add32(imm32, address);
+    }
+
+    void addPtr(Imm32 imm, RegisterID srcDest)
+    {
+        add32(imm, srcDest);
+    }
+
+    void addPtr(ImmPtr imm, RegisterID dest)
+    {
+        add32(Imm32(imm), dest);
+    }
+
+    void addPtr(Imm32 imm, RegisterID src, RegisterID dest)
+    {
+        add32(imm, src, dest);
+    }
+
+    void andPtr(RegisterID src, RegisterID dest)
+    {
+        and32(src, dest);
+    }
+
+    void andPtr(Imm32 imm, RegisterID srcDest)
+    {
+        and32(imm, srcDest);
+    }
+
+    void andPtr(ImmPtr ptr, RegisterID srcDest)
+    {
+        and32(Imm32(ptr), srcDest);
+    }
+
+    void negPtr(RegisterID srcDest)
+    {
+        neg32(srcDest);
+    }
+
+    void notPtr(RegisterID srcDest)
+    {
+        not32(srcDest);
+    }
+
+    void orPtr(RegisterID src, RegisterID dest)
+    {
+        or32(src, dest);
+    }
+
+    void orPtr(ImmPtr imm, RegisterID dest)
+    {
+        or32(Imm32(imm), dest);
+    }
+
+    void orPtr(Imm32 imm, RegisterID dest)
+    {
+        or32(imm, dest);
+    }
+
+    void subPtr(RegisterID src, RegisterID dest)
+    {
+        sub32(src, dest);
+    }
+
+    void subPtr(Imm32 imm, RegisterID dest)
+    {
+        sub32(imm, dest);
+    }
+
+    void subPtr(ImmPtr imm, RegisterID dest)
+    {
+        sub32(Imm32(imm), dest);
+    }
+
+    void subPtr(ImmPtr imm, Address address)
+    {
+        sub32(Imm32(imm), address);
+    }
+
+    void xorPtr(RegisterID src, RegisterID dest)
+    {
+        xor32(src, dest);
+    }
+
+    void xorPtr(Imm32 imm, RegisterID srcDest)
+    {
+        xor32(imm, srcDest);
+    }
+
+
+    void loadPtr(ImplicitAddress address, RegisterID dest)
+    {
+        load32(address, dest);
+    }
+
+    void loadPtr(BaseIndex address, RegisterID dest)
+    {
+        load32(address, dest);
+    }
+
+    void loadPtr(void* address, RegisterID dest)
+    {
+        load32(address, dest);
+    }
+
+    DataLabel32 loadPtrWithAddressOffsetPatch(Address address, RegisterID dest)
+    {
+        return load32WithAddressOffsetPatch(address, dest);
+    }
+
+    void setPtr(Condition cond, RegisterID left, Imm32 right, RegisterID dest)
+    {
+        set32(cond, left, right, dest);
+    }
+
+    void storePtr(RegisterID src, ImplicitAddress address)
+    {
+        store32(src, address);
+    }
+
+    void storePtr(RegisterID src, void* address)
+    {
+        store32(src, address);
+    }
+
+    void storePtr(TrustedImmPtr imm, ImplicitAddress address)
+    {
+        store32(Imm32(imm), address);
+    }
+
+    void storePtr(TrustedImmPtr imm, BaseIndex address)
+    {
+        store32(Imm32(imm), address);
+    }
+
+    void storePtr(TrustedImmPtr imm, void* address)
+    {
+        store32(Imm32(imm), address);
+    }
+
+    DataLabel32 storePtrWithAddressOffsetPatch(RegisterID src, Address address)
+    {
+        return store32WithAddressOffsetPatch(src, address);
+    }
+
+
+    Jump branchPtr(Condition cond, RegisterID left, RegisterID right)
+    {
+        return branch32(cond, left, right);
+    }
+
+    Jump branchPtr(Condition cond, RegisterID left, ImmPtr right)
+    {
+        return branch32(cond, left, Imm32(right));
+    }
+
+    Jump branchPtr(Condition cond, RegisterID left, Imm32 right)
+    {
+        return branch32(cond, left, right);
+    }
+
+    Jump branchPtr(Condition cond, RegisterID left, Address right)
+    {
+        return branch32(cond, left, right);
+    }
+
+    Jump branchPtr(Condition cond, Address left, RegisterID right)
+    {
+        return branch32(cond, left, right);
+    }
+
+    Jump branchPtr(Condition cond, AbsoluteAddress left, RegisterID right)
+    {
+        return branch32(cond, left, right);
+    }
+
+    Jump branchPtr(Condition cond, Address left, ImmPtr right)
+    {
+        return branch32(cond, left, Imm32(right));
+    }
+
+    Jump branchPtr(Condition cond, AbsoluteAddress left, ImmPtr right, RegisterID scratch)
+    {
+        return branch32(cond, left, Imm32(right));
+    }
+
+    Jump branchTestPtr(Condition cond, RegisterID reg, RegisterID mask)
+    {
+        return branchTest32(cond, reg, mask);
+    }
+
+    Jump branchTestPtr(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1))
+    {
+        return branchTest32(cond, reg, mask);
+    }
+
+    Jump branchTestPtr(Condition cond, Address address, Imm32 mask = Imm32(-1))
+    {
+        return branchTest32(cond, address, mask);
+    }
+
+    Jump branchTestPtr(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1))
+    {
+        return branchTest32(cond, address, mask);
+    }
+
+
+    Jump branchAddPtr(Condition cond, RegisterID src, RegisterID dest)
+    {
+        return branchAdd32(cond, src, dest);
+    }
+
+    Jump branchSubPtr(Condition cond, Imm32 imm, RegisterID dest)
+    {
+        return branchSub32(cond, imm, dest);
+    }
+
+    using MacroAssemblerBase::branchTest8;
+    Jump branchTest8(Condition cond, ExtendedAddress address, Imm32 mask = Imm32(-1))
+    {
+        return MacroAssemblerBase::branchTest8(cond, Address(address.base, address.offset), mask);
+    }
+
+    void rshiftPtr(Imm32 imm, RegisterID dest)
+    {
+        rshift32(imm, dest);
+    }
+
+    void lshiftPtr(Imm32 imm, RegisterID dest)
+    {
+        lshift32(imm, dest);
+    }
+
+
+};
+
+}
+# 38 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrJIT.h" 2
+
+
+
+
+
+#define YARR_CALL 
+
+
+namespace JSC {
+
+class JSGlobalData;
+class ExecutablePool;
+
+namespace Yarr {
+
+class YarrCodeBlock {
+    typedef int (*YarrJITCode)(const UChar* input, unsigned start, unsigned length, int* output) ;
+
+public:
+    YarrCodeBlock()
+        : m_needFallBack(false)
+    {
+    }
+
+    ~YarrCodeBlock()
+    {
+    }
+
+    void setFallBack(bool fallback) { m_needFallBack = fallback; }
+    bool isFallBack() { return m_needFallBack; }
+    void set(MacroAssembler::CodeRef ref) { m_ref = ref; }
+
+    int execute(const UChar* input, unsigned start, unsigned length, int* output)
+    {
+        return __extension__((reinterpret_cast<YarrJITCode>(m_ref.m_code.executableAddress()))(input, start, length, output));
+    }
+
+
+
+
+
+    void release() { m_ref.release(); }
+
+private:
+    MacroAssembler::CodeRef m_ref;
+    bool m_needFallBack;
+};
+
+void jitCompile(YarrPattern&, JSGlobalData*, YarrCodeBlock& jitObject);
+int execute(YarrCodeBlock& jitObject, const UChar* input, unsigned start, unsigned length, int* output);
+
+} }
+# 22 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpObject.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrSyntaxChecker.h" 1
+# 31 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrSyntaxChecker.h"
+#define YarrSyntaxChecker_h 
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrParser.h" 1
+# 31 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrParser.h"
+#define YarrParser_h 
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/Yarr.h" 1
+# 34 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrParser.h" 2
+
+namespace JSC { namespace Yarr {
+
+#define REGEXP_ERROR_PREFIX "Invalid regular expression: "
+
+enum BuiltInCharacterClassID {
+    DigitClassID,
+    SpaceClassID,
+    WordClassID,
+    NewlineClassID
+};
+
+
+template<class Delegate>
+class Parser {
+private:
+    template<class FriendDelegate>
+    friend ErrorCode parse(FriendDelegate& delegate, const UString& pattern, unsigned backReferenceLimit);
+# 62 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrParser.h"
+    class CharacterClassParserDelegate {
+    public:
+        CharacterClassParserDelegate(Delegate& delegate, ErrorCode& err)
+            : m_delegate(delegate)
+            , m_err(err)
+            , m_state(Empty)
+            , m_character(0)
+        {
+        }
+
+
+
+
+
+
+        void begin(bool invert)
+        {
+            m_delegate.atomCharacterClassBegin(invert);
+        }
+# 91 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrParser.h"
+        void atomPatternCharacter(UChar ch, bool hyphenIsRange = false)
+        {
+            switch (m_state) {
+            case AfterCharacterClass:
+
+
+
+
+
+
+
+                if (hyphenIsRange && ch == '-') {
+                    m_delegate.atomCharacterClassAtom('-');
+                    m_state = AfterCharacterClassHyphen;
+                    return;
+                }
+
+
+            case Empty:
+                m_character = ch;
+                m_state = CachedCharacter;
+                return;
+
+            case CachedCharacter:
+                if (hyphenIsRange && ch == '-')
+                    m_state = CachedCharacterHyphen;
+                else {
+                    m_delegate.atomCharacterClassAtom(m_character);
+                    m_character = ch;
+                }
+                return;
+
+            case CachedCharacterHyphen:
+                if (ch < m_character) {
+                    m_err = CharacterClassOutOfOrder;
+                    return;
+                }
+                m_delegate.atomCharacterClassRange(m_character, ch);
+                m_state = Empty;
+                return;
+
+            case AfterCharacterClassHyphen:
+                m_delegate.atomCharacterClassAtom(ch);
+                m_state = Empty;
+                return;
+            }
+        }
+
+
+
+
+
+
+        void atomBuiltInCharacterClass(BuiltInCharacterClassID classID, bool invert)
+        {
+            switch (m_state) {
+            case CachedCharacter:
+
+                m_delegate.atomCharacterClassAtom(m_character);
+
+            case Empty:
+            case AfterCharacterClass:
+                m_state = AfterCharacterClass;
+                m_delegate.atomCharacterClassBuiltIn(classID, invert);
+                return;
+
+            case CachedCharacterHyphen:
+
+
+                m_err = CharacterClassInvalidRange;
+                return;
+
+            case AfterCharacterClassHyphen:
+                m_delegate.atomCharacterClassBuiltIn(classID, invert);
+                m_state = Empty;
+                return;
+            }
+        }
+
+
+
+
+
+
+        void end()
+        {
+            if (m_state == CachedCharacter)
+                m_delegate.atomCharacterClassAtom(m_character);
+            else if (m_state == CachedCharacterHyphen) {
+                m_delegate.atomCharacterClassAtom(m_character);
+                m_delegate.atomCharacterClassAtom('-');
+            }
+            m_delegate.atomCharacterClassEnd();
+        }
+
+
+
+        void assertionWordBoundary(bool) { __builtin_unreachable(); }
+        void atomBackReference(unsigned) { __builtin_unreachable(); }
+
+    private:
+        Delegate& m_delegate;
+        ErrorCode& m_err;
+        enum CharacterClassConstructionState {
+            Empty,
+            CachedCharacter,
+            CachedCharacterHyphen,
+            AfterCharacterClass,
+            AfterCharacterClassHyphen
+        } m_state;
+        UChar m_character;
+    };
+
+    Parser(Delegate& delegate, const UString& pattern, unsigned backReferenceLimit)
+        : m_delegate(delegate)
+        , m_backReferenceLimit(backReferenceLimit)
+        , m_err(NoError)
+        , m_data(pattern.chars())
+        , m_size(pattern.length())
+        , m_index(0)
+        , m_parenthesesNestingDepth(0)
+    {
+    }
+# 235 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrParser.h"
+    template<bool inCharacterClass, class EscapeDelegate>
+    bool parseEscape(EscapeDelegate& delegate)
+    {
+        do { } while(0);
+        do { } while(0);
+        consume();
+
+        if (atEndOfPattern()) {
+            m_err = EscapeUnterminated;
+            return false;
+        }
+
+        switch (peek()) {
+
+        case 'b':
+            consume();
+            if (inCharacterClass)
+                delegate.atomPatternCharacter('\b');
+            else {
+                delegate.assertionWordBoundary(false);
+                return false;
+            }
+            break;
+        case 'B':
+            consume();
+            if (inCharacterClass)
+                delegate.atomPatternCharacter('B');
+            else {
+                delegate.assertionWordBoundary(true);
+                return false;
+            }
+            break;
+
+
+        case 'd':
+            consume();
+            delegate.atomBuiltInCharacterClass(DigitClassID, false);
+            break;
+        case 's':
+            consume();
+            delegate.atomBuiltInCharacterClass(SpaceClassID, false);
+            break;
+        case 'w':
+            consume();
+            delegate.atomBuiltInCharacterClass(WordClassID, false);
+            break;
+        case 'D':
+            consume();
+            delegate.atomBuiltInCharacterClass(DigitClassID, true);
+            break;
+        case 'S':
+            consume();
+            delegate.atomBuiltInCharacterClass(SpaceClassID, true);
+            break;
+        case 'W':
+            consume();
+            delegate.atomBuiltInCharacterClass(WordClassID, true);
+            break;
+
+
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9': {
+
+
+            if (!inCharacterClass) {
+                ParseState state = saveState();
+
+                unsigned backReference;
+                if (!consumeNumber(backReference))
+                    break;
+                if (backReference <= m_backReferenceLimit) {
+                    delegate.atomBackReference(backReference);
+                    break;
+                }
+
+                restoreState(state);
+            }
+
+
+            if (peek() >= '8') {
+                delegate.atomPatternCharacter('\\');
+                break;
+            }
+
+
+        }
+
+
+        case '0':
+            delegate.atomPatternCharacter(consumeOctal());
+            break;
+
+
+        case 'f':
+            consume();
+            delegate.atomPatternCharacter('\f');
+            break;
+        case 'n':
+            consume();
+            delegate.atomPatternCharacter('\n');
+            break;
+        case 'r':
+            consume();
+            delegate.atomPatternCharacter('\r');
+            break;
+        case 't':
+            consume();
+            delegate.atomPatternCharacter('\t');
+            break;
+        case 'v':
+            consume();
+            delegate.atomPatternCharacter('\v');
+            break;
+
+
+        case 'c': {
+            ParseState state = saveState();
+            consume();
+            if (!atEndOfPattern()) {
+                int control = consume();
+
+
+                if (inCharacterClass ? WTF::isASCIIAlphanumeric(control) || (control == '_') : WTF::isASCIIAlpha(control)) {
+                    delegate.atomPatternCharacter(control & 0x1f);
+                    break;
+                }
+            }
+            restoreState(state);
+            delegate.atomPatternCharacter('\\');
+            break;
+        }
+
+
+        case 'x': {
+            consume();
+            int x = tryConsumeHex(2);
+            if (x == -1)
+                delegate.atomPatternCharacter('x');
+            else
+                delegate.atomPatternCharacter(x);
+            break;
+        }
+
+
+        case 'u': {
+            consume();
+            int u = tryConsumeHex(4);
+            if (u == -1)
+                delegate.atomPatternCharacter('u');
+            else
+                delegate.atomPatternCharacter(u);
+            break;
+        }
+
+
+        default:
+            delegate.atomPatternCharacter(consume());
+        }
+
+        return true;
+    }
+
+
+
+
+
+
+    bool parseAtomEscape()
+    {
+        return parseEscape<false>(m_delegate);
+    }
+    void parseCharacterClassEscape(CharacterClassParserDelegate& delegate)
+    {
+        parseEscape<true>(delegate);
+    }
+# 425 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrParser.h"
+    void parseCharacterClass()
+    {
+        do { } while(0);
+        do { } while(0);
+        consume();
+
+        CharacterClassParserDelegate characterClassConstructor(m_delegate, m_err);
+
+        characterClassConstructor.begin(tryConsume('^'));
+
+        while (!atEndOfPattern()) {
+            switch (peek()) {
+            case ']':
+                consume();
+                characterClassConstructor.end();
+                return;
+
+            case '\\':
+                parseCharacterClassEscape(characterClassConstructor);
+                break;
+
+            default:
+                characterClassConstructor.atomPatternCharacter(consume(), true);
+            }
+
+            if (m_err)
+                return;
+        }
+
+        m_err = CharacterClassUnmatched;
+    }
+
+
+
+
+
+
+    void parseParenthesesBegin()
+    {
+        do { } while(0);
+        do { } while(0);
+        consume();
+
+        if (tryConsume('?')) {
+            if (atEndOfPattern()) {
+                m_err = ParenthesesTypeInvalid;
+                return;
+            }
+
+            switch (consume()) {
+            case ':':
+                m_delegate.atomParenthesesSubpatternBegin(false);
+                break;
+
+            case '=':
+                m_delegate.atomParentheticalAssertionBegin();
+                break;
+
+            case '!':
+                m_delegate.atomParentheticalAssertionBegin(true);
+                break;
+
+            default:
+                m_err = ParenthesesTypeInvalid;
+            }
+        } else
+            m_delegate.atomParenthesesSubpatternBegin();
+
+        ++m_parenthesesNestingDepth;
+    }
+
+
+
+
+
+
+    void parseParenthesesEnd()
+    {
+        do { } while(0);
+        do { } while(0);
+        consume();
+
+        if (m_parenthesesNestingDepth > 0)
+            m_delegate.atomParenthesesEnd();
+        else
+            m_err = ParenthesesUnmatched;
+
+        --m_parenthesesNestingDepth;
+    }
+
+
+
+
+
+
+    void parseQuantifier(bool lastTokenWasAnAtom, unsigned min, unsigned max)
+    {
+        do { } while(0);
+        do { } while(0);
+
+        if (min == unsigned(-1)) {
+            m_err = QuantifierTooLarge;
+            return;
+        }
+
+        if (lastTokenWasAnAtom)
+            m_delegate.quantifyAtom(min, max, !tryConsume('?'));
+        else
+            m_err = QuantifierWithoutAtom;
+    }
+# 545 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrParser.h"
+    void parseTokens()
+    {
+        bool lastTokenWasAnAtom = false;
+
+        while (!atEndOfPattern()) {
+            switch (peek()) {
+            case '|':
+                consume();
+                m_delegate.disjunction();
+                lastTokenWasAnAtom = false;
+                break;
+
+            case '(':
+                parseParenthesesBegin();
+                lastTokenWasAnAtom = false;
+                break;
+
+            case ')':
+                parseParenthesesEnd();
+                lastTokenWasAnAtom = true;
+                break;
+
+            case '^':
+                consume();
+                m_delegate.assertionBOL();
+                lastTokenWasAnAtom = false;
+                break;
+
+            case '$':
+                consume();
+                m_delegate.assertionEOL();
+                lastTokenWasAnAtom = false;
+                break;
+
+            case '.':
+                consume();
+                m_delegate.atomBuiltInCharacterClass(NewlineClassID, true);
+                lastTokenWasAnAtom = true;
+                break;
+
+            case '[':
+                parseCharacterClass();
+                lastTokenWasAnAtom = true;
+                break;
+
+            case '\\':
+                lastTokenWasAnAtom = parseAtomEscape();
+                break;
+
+            case '*':
+                consume();
+                parseQuantifier(lastTokenWasAnAtom, 0, quantifyInfinite);
+                lastTokenWasAnAtom = false;
+                break;
+
+            case '+':
+                consume();
+                parseQuantifier(lastTokenWasAnAtom, 1, quantifyInfinite);
+                lastTokenWasAnAtom = false;
+                break;
+
+            case '?':
+                consume();
+                parseQuantifier(lastTokenWasAnAtom, 0, 1);
+                lastTokenWasAnAtom = false;
+                break;
+
+            case '{': {
+                ParseState state = saveState();
+
+                consume();
+                if (peekIsDigit()) {
+                    unsigned min;
+                    if (!consumeNumber(min))
+                        break;
+                    unsigned max = min;
+
+                    if (tryConsume(',')) {
+                        if (peekIsDigit()) {
+                            if (!consumeNumber(max))
+                                break;
+                        } else {
+                            max = quantifyInfinite;
+                        }
+                    }
+
+                    if (tryConsume('}')) {
+                        if (min <= max)
+                            parseQuantifier(lastTokenWasAnAtom, min, max);
+                        else
+                            m_err = QuantifierOutOfOrder;
+                        lastTokenWasAnAtom = false;
+                        break;
+                    }
+                }
+
+                restoreState(state);
+            }
+
+            default:
+                m_delegate.atomPatternCharacter(consume());
+                lastTokenWasAnAtom = true;
+            }
+
+            if (m_err)
+                return;
+        }
+
+        if (m_parenthesesNestingDepth > 0)
+            m_err = MissingParentheses;
+    }
+
+
+
+
+
+
+
+    ErrorCode parse()
+    {
+        if (m_size > MAX_PATTERN_SIZE)
+            m_err = PatternTooLarge;
+        else
+            parseTokens();
+        do { } while(0);
+
+        return m_err;
+    }
+
+
+
+
+    typedef unsigned ParseState;
+
+    ParseState saveState()
+    {
+        return m_index;
+    }
+
+    void restoreState(ParseState state)
+    {
+        m_index = state;
+    }
+
+    bool atEndOfPattern()
+    {
+        do { } while(0);
+        return m_index == m_size;
+    }
+
+    int peek()
+    {
+        do { } while(0);
+        return m_data[m_index];
+    }
+
+    bool peekIsDigit()
+    {
+        return !atEndOfPattern() && WTF::isASCIIDigit(peek());
+    }
+
+    unsigned peekDigit()
+    {
+        do { } while(0);
+        return peek() - '0';
+    }
+
+    int consume()
+    {
+        do { } while(0);
+        return m_data[m_index++];
+    }
+
+    unsigned consumeDigit()
+    {
+        do { } while(0);
+        return consume() - '0';
+    }
+
+    bool consumeNumber(unsigned &accum)
+    {
+        accum = consumeDigit();
+        while (peekIsDigit()) {
+            unsigned newValue = accum * 10 + peekDigit();
+            if (newValue < accum) {
+                m_err = QuantifierTooLarge;
+                return false;
+            }
+            accum = newValue;
+            consume();
+        }
+        return true;
+    }
+
+    unsigned consumeOctal()
+    {
+        do { } while(0);
+
+        unsigned n = consumeDigit();
+        while (n < 32 && !atEndOfPattern() && WTF::isASCIIOctalDigit(peek()))
+            n = n * 8 + consumeDigit();
+        return n;
+    }
+
+    bool tryConsume(UChar ch)
+    {
+        if (atEndOfPattern() || (m_data[m_index] != ch))
+            return false;
+        ++m_index;
+        return true;
+    }
+
+    int tryConsumeHex(int count)
+    {
+        ParseState state = saveState();
+
+        int n = 0;
+        while (count--) {
+            if (atEndOfPattern() || !WTF::isASCIIHexDigit(peek())) {
+                restoreState(state);
+                return -1;
+            }
+            n = (n << 4) | WTF::toASCIIHexValue(consume());
+        }
+        return n;
+    }
+
+    Delegate& m_delegate;
+    unsigned m_backReferenceLimit;
+    ErrorCode m_err;
+    const UChar* m_data;
+    unsigned m_size;
+    unsigned m_index;
+    unsigned m_parenthesesNestingDepth;
+
+
+    static const unsigned MAX_PATTERN_SIZE = 1024 * 1024;
+};
+# 843 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrParser.h"
+template<class Delegate>
+ErrorCode parse(Delegate& delegate, const UString& pattern, unsigned backReferenceLimit = quantifyInfinite)
+{
+    return Parser<Delegate>(delegate, pattern, backReferenceLimit).parse();
+}
+
+} }
+# 35 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/yarr/YarrSyntaxChecker.h" 2
+
+namespace JSC { namespace Yarr {
+
+ErrorCode checkSyntax(const UString& pattern);
+
+}}
+# 24 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpObject.h" 2
+# 45 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpObject.h"
+namespace js {
+
+enum RegExpRunStatus
+{
+    RegExpRunStatus_Error,
+    RegExpRunStatus_Success,
+    RegExpRunStatus_Success_NotFound
+};
+
+class RegExpObjectBuilder
+{
+    JSContext *cx;
+    Rooted<RegExpObject*> reobj_;
+
+    bool getOrCreate();
+    bool getOrCreateClone(RegExpObject *proto);
+
+  public:
+    RegExpObjectBuilder(JSContext *cx, RegExpObject *reobj = __null);
+
+    RegExpObject *reobj() { return reobj_; }
+
+    RegExpObject *build(HandleAtom source, RegExpFlag flags);
+    RegExpObject *build(HandleAtom source, RegExpShared &shared);
+
+
+    RegExpObject *clone(Handle<RegExpObject*> other, Handle<RegExpObject*> proto);
+};
+
+JSObject *
+CloneRegExpObject(JSContext *cx, JSObject *obj, JSObject *proto);
+
+namespace detail {
+
+class RegExpCode
+{
+    typedef JSC::Yarr::BytecodePattern BytecodePattern;
+    typedef JSC::Yarr::ErrorCode ErrorCode;
+    typedef JSC::Yarr::YarrPattern YarrPattern;
+
+    typedef JSC::Yarr::JSGlobalData JSGlobalData;
+    typedef JSC::Yarr::YarrCodeBlock YarrCodeBlock;
+
+
+    YarrCodeBlock codeBlock;
+
+    BytecodePattern *byteCode;
+
+  public:
+    RegExpCode()
+      :
+
+        codeBlock(),
+
+        byteCode(__null)
+    { }
+
+    ~RegExpCode() {
+
+        codeBlock.release();
+
+        if (byteCode)
+            Foreground::delete_<BytecodePattern>(byteCode);
+    }
+
+    static bool checkSyntax(JSContext *cx, TokenStream *tokenStream, JSLinearString *source) {
+        ErrorCode error = JSC::Yarr::checkSyntax(*source);
+        if (error == JSC::Yarr::NoError)
+            return true;
+
+        reportYarrError(cx, tokenStream, error);
+        return false;
+    }
+
+
+    static inline bool isJITRuntimeEnabled(JSContext *cx);
+
+    static void reportYarrError(JSContext *cx, TokenStream *ts, JSC::Yarr::ErrorCode error);
+
+    static size_t getOutputSize(size_t pairCount) {
+        return pairCount * 2;
+    }
+
+    bool compile(JSContext *cx, JSLinearString &pattern, unsigned *parenCount, RegExpFlag flags);
+
+
+    RegExpRunStatus
+    execute(JSContext *cx, const jschar *chars, size_t length, size_t start,
+            int *output, size_t outputCount);
+};
+
+}
+# 161 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpObject.h"
+class RegExpShared
+{
+    friend class RegExpCompartment;
+    friend class RegExpGuard;
+
+    detail::RegExpCode code;
+    unsigned parenCount;
+    RegExpFlag flags;
+    size_t activeUseCount;
+    uint64_t gcNumberWhenUsed;
+
+    bool compile(JSContext *cx, JSAtom *source);
+
+    RegExpShared(JSRuntime *rt, RegExpFlag flags);
+    friend class js::OffTheBooks; friend class js::Foreground; friend class js::UnwantedForeground; friend struct ::JSContext; friend struct ::JSRuntime;
+
+  public:
+
+
+    inline void prepareForUse(JSContext *cx);
+
+
+
+    RegExpRunStatus
+    execute(JSContext *cx, const jschar *chars, size_t length, size_t *lastIndex,
+            MatchPairs **output);
+
+
+
+    size_t getParenCount() const { return parenCount; }
+    void incRef() { activeUseCount++; }
+    void decRef() { do { } while(0); activeUseCount--; }
+
+
+    size_t pairCount() const { return parenCount + 1; }
+
+    RegExpFlag getFlags() const { return flags; }
+    bool ignoreCase() const { return flags & IgnoreCaseFlag; }
+    bool global() const { return flags & GlobalFlag; }
+    bool multiline() const { return flags & MultilineFlag; }
+    bool sticky() const { return flags & StickyFlag; }
+};
+
+
+
+
+
+class RegExpGuard
+{
+    RegExpShared *re_;
+    RegExpGuard(const RegExpGuard &) ;
+    void operator=(const RegExpGuard &) ;
+  public:
+    RegExpGuard() : re_(__null) {}
+    RegExpGuard(RegExpShared &re) : re_(&re) {
+        re_->incRef();
+    }
+    void init(RegExpShared &re) {
+        do { } while(0);
+        re_ = &re;
+        re_->incRef();
+    }
+    ~RegExpGuard() {
+        if (re_)
+            re_->decRef();
+    }
+    bool initialized() const { return !!re_; }
+    RegExpShared *re() const { do { } while(0); return re_; }
+    RegExpShared *operator->() { return re(); }
+    RegExpShared &operator*() { return *re(); }
+};
+
+class RegExpCompartment
+{
+    enum Type { Normal = 0x0, Hack = 0x1 };
+
+    struct Key {
+        JSAtom *atom;
+        uint16_t flag;
+        uint16_t type;
+        Key() {}
+        Key(JSAtom *atom, RegExpFlag flag, Type type)
+          : atom(atom), flag(flag), type(type) {}
+        typedef Key Lookup;
+        static HashNumber hash(const Lookup &l) {
+            return DefaultHasher<JSAtom *>::hash(l.atom) ^ (l.flag << 1) ^ l.type;
+        }
+        static bool match(Key l, Key r) {
+            return l.atom == r.atom && l.flag == r.flag && l.type == r.type;
+        }
+    };
+
+    typedef HashMap<Key, RegExpShared *, Key, RuntimeAllocPolicy> Map;
+    Map map_;
+
+    bool get(JSContext *cx, JSAtom *key, JSAtom *source, RegExpFlag flags, Type type,
+             RegExpGuard *g);
+
+  public:
+    RegExpCompartment(JSRuntime *rt);
+    ~RegExpCompartment();
+
+    bool init(JSContext *cx);
+    void sweep(JSRuntime *rt);
+
+
+    bool get(JSContext *cx, JSAtom *source, RegExpFlag flags, RegExpGuard *g);
+
+
+    bool get(JSContext *cx, JSAtom *source, JSString *maybeOpt, RegExpGuard *g);
+# 283 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpObject.h"
+    bool getHack(JSContext *cx, JSAtom *source, JSAtom *hackedSource, RegExpFlag flags,
+                 RegExpGuard *g);
+
+
+
+
+
+
+    bool lookupHack(JSAtom *source, RegExpFlag flags, JSContext *cx, RegExpGuard *g);
+};
+
+class RegExpObject : public JSObject
+{
+    typedef detail::RegExpCode RegExpCode;
+
+    static const unsigned LAST_INDEX_SLOT = 0;
+    static const unsigned SOURCE_SLOT = 1;
+    static const unsigned GLOBAL_FLAG_SLOT = 2;
+    static const unsigned IGNORE_CASE_FLAG_SLOT = 3;
+    static const unsigned MULTILINE_FLAG_SLOT = 4;
+    static const unsigned STICKY_FLAG_SLOT = 5;
+
+  public:
+    static const unsigned RESERVED_SLOTS = 6;
+
+
+
+
+
+
+    static RegExpObject *
+    create(JSContext *cx, RegExpStatics *res, const jschar *chars, size_t length,
+           RegExpFlag flags, TokenStream *ts);
+
+    static RegExpObject *
+    createNoStatics(JSContext *cx, const jschar *chars, size_t length, RegExpFlag flags,
+                    TokenStream *ts);
+
+    static RegExpObject *
+    createNoStatics(JSContext *cx, HandleAtom atom, RegExpFlag flags, TokenStream *ts);
+# 335 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpObject.h"
+    RegExpRunStatus
+    execute(JSContext *cx, const jschar *chars, size_t length, size_t *lastIndex,
+            MatchPairs **output);
+
+
+
+    const Value &getLastIndex() const {
+        return getSlot(LAST_INDEX_SLOT);
+    }
+    inline void setLastIndex(const Value &v);
+    inline void setLastIndex(double d);
+    inline void zeroLastIndex();
+
+    JSFlatString *toString(JSContext *cx) const;
+
+    JSAtom *getSource() const {
+        return &getSlot(SOURCE_SLOT).toString()->asAtom();
+    }
+    inline void setSource(JSAtom *source);
+
+    RegExpFlag getFlags() const {
+        unsigned flags = 0;
+        flags |= global() ? GlobalFlag : 0;
+        flags |= ignoreCase() ? IgnoreCaseFlag : 0;
+        flags |= multiline() ? MultilineFlag : 0;
+        flags |= sticky() ? StickyFlag : 0;
+        return RegExpFlag(flags);
+    }
+
+
+
+    inline void setIgnoreCase(bool enabled);
+    inline void setGlobal(bool enabled);
+    inline void setMultiline(bool enabled);
+    inline void setSticky(bool enabled);
+    bool ignoreCase() const { return getSlot(IGNORE_CASE_FLAG_SLOT).toBoolean(); }
+    bool global() const { return getSlot(GLOBAL_FLAG_SLOT).toBoolean(); }
+    bool multiline() const { return getSlot(MULTILINE_FLAG_SLOT).toBoolean(); }
+    bool sticky() const { return getSlot(STICKY_FLAG_SLOT).toBoolean(); }
+
+    inline void shared(RegExpGuard *g) const;
+    inline bool getShared(JSContext *cx, RegExpGuard *g);
+    inline void setShared(JSContext *cx, RegExpShared &shared);
+
+  private:
+    friend class RegExpObjectBuilder;
+
+
+
+
+
+
+    Shape *assignInitialShape(JSContext *cx);
+
+    inline bool init(JSContext *cx, HandleAtom source, RegExpFlag flags);
+
+
+
+
+
+    bool createShared(JSContext *cx, RegExpGuard *g);
+    RegExpShared *maybeShared() const;
+
+
+    void setPrivate(void *priv) ;
+};
+
+
+
+
+
+
+
+bool
+ParseRegExpFlags(JSContext *cx, JSString *flagStr, RegExpFlag *flagsOut);
+# 419 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpObject.h"
+inline bool
+RegExpToShared(JSContext *cx, JSObject &obj, RegExpGuard *g);
+
+template<XDRMode mode>
+bool
+XDRScriptRegExpObject(XDRState<mode> *xdr, HeapPtrObject *objp);
+
+extern JSObject *
+CloneScriptRegExpObject(JSContext *cx, RegExpObject &re);
+
+}
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscompartment.h" 2
+
+namespace js {
+
+
+extern Class dummy_class;
+# 32 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscompartment.h"
+class DtoaCache {
+    double d;
+    int base;
+    JSFixedString *s;
+  public:
+    DtoaCache() : s(__null) {}
+    void purge() { s = __null; }
+
+    JSFixedString *lookup(int base, double d) {
+        return this->s && base == this->base && d == this->d ? this->s : __null;
+    }
+
+    void cache(int base, double d, JSFixedString *s) {
+        this->base = base;
+        this->d = d;
+        this->s = s;
+    }
+
+};
+
+
+typedef int moz_static_assert103[(sizeof(HashNumber) == 4) ? 1 : -1];
+
+struct WrapperHasher
+{
+    typedef Value Lookup;
+
+    static HashNumber hash(Value key) {
+        do { } while(0);
+        uint64_t bits = JSVAL_TO_IMPL(key).asBits;
+        return uint32_t(bits) ^ uint32_t(bits >> 32);
+    }
+
+    static bool match(const Value &l, const Value &k) { return l == k; }
+};
+
+typedef HashMap<Value, ReadBarrieredValue, WrapperHasher, SystemAllocPolicy> WrapperMap;
+
+}
+
+namespace JS {
+struct TypeInferenceSizes;
+}
+
+namespace js {
+class AutoDebugModeGC;
+}
+
+struct JSCompartment
+{
+    JSRuntime *rt;
+    JSPrincipals *principals;
+
+    js::gc::ArenaLists arenas;
+
+  private:
+    bool needsBarrier_;
+  public:
+
+    bool needsBarrier() const {
+        return needsBarrier_;
+    }
+
+    void setNeedsBarrier(bool needs);
+
+    js::GCMarker *barrierTracer() {
+        do { } while(0);
+        return &rt->gcMarker;
+    }
+
+  private:
+    enum CompartmentGCState {
+        NoGCScheduled,
+        GCScheduled,
+        GCRunning
+    };
+
+    CompartmentGCState gcState;
+    bool gcPreserveCode;
+
+  public:
+    bool isCollecting() const {
+
+        if (rt->gcRunning) {
+            return gcState == GCRunning;
+        } else {
+            do { } while(0);
+            return needsBarrier();
+        }
+    }
+
+    bool isPreservingCode() const {
+        return gcPreserveCode;
+    }
+
+
+
+
+
+    bool requireGCTracer() const {
+        return gcState == GCRunning;
+    }
+
+    void setCollecting(bool collecting) {
+        do { } while(0);
+        if (collecting)
+            gcState = GCRunning;
+        else
+            gcState = NoGCScheduled;
+    }
+
+    void scheduleGC() {
+        do { } while(0);
+        do { } while(0);
+        gcState = GCScheduled;
+    }
+
+    void unscheduleGC() {
+        do { } while(0);
+        do { } while(0);
+        gcState = NoGCScheduled;
+    }
+
+    bool isGCScheduled() const {
+        return gcState == GCScheduled;
+    }
+
+    void setPreservingCode(bool preserving) {
+        gcPreserveCode = preserving;
+    }
+
+    size_t gcBytes;
+    size_t gcTriggerBytes;
+    size_t gcMaxMallocBytes;
+
+    bool hold;
+    bool isSystemCompartment;
+
+    int64_t lastCodeRelease;
+
+
+
+
+
+
+    static const size_t TYPE_LIFO_ALLOC_PRIMARY_CHUNK_SIZE = 128 * 1024;
+    js::LifoAlloc typeLifoAlloc;
+    bool activeAnalysis;
+    bool activeInference;
+
+
+    js::types::TypeCompartment types;
+
+    void *data;
+    bool active;
+    js::WrapperMap crossCompartmentWrappers;
+
+
+    int64_t lastAnimationTime;
+
+    js::RegExpCompartment regExps;
+
+    size_t sizeOfShapeTable(JSMallocSizeOfFun mallocSizeOf);
+    void sizeOfTypeInferenceData(JS::TypeInferenceSizes *stats, JSMallocSizeOfFun mallocSizeOf);
+
+
+
+
+    js::PropertyTree propertyTree;
+
+
+    js::BaseShapeSet baseShapes;
+    void sweepBaseShapeTable();
+
+
+    js::InitialShapeSet initialShapes;
+    void sweepInitialShapeTable();
+
+
+    js::types::TypeObjectSet newTypeObjects;
+    js::types::TypeObjectSet lazyTypeObjects;
+    void sweepNewTypeObjectTable(js::types::TypeObjectSet &table);
+
+    js::ReadBarriered<js::types::TypeObject> emptyTypeObject;
+
+
+    inline js::types::TypeObject *getEmptyType(JSContext *cx);
+
+    js::types::TypeObject *getLazyType(JSContext *cx, JSObject *proto);
+
+
+
+
+
+
+
+    size_t gcMallocAndFreeBytes;
+    size_t gcTriggerMallocAndFreeBytes;
+
+  private:
+
+
+
+
+
+    ptrdiff_t gcMallocBytes;
+
+    enum { DebugFromC = 1, DebugFromJS = 2 };
+
+    unsigned debugModeBits;
+
+  public:
+    JSCompartment(JSRuntime *rt);
+    ~JSCompartment();
+
+    bool init(JSContext *cx);
+
+
+    void markCrossCompartmentWrappers(JSTracer *trc);
+
+    bool wrap(JSContext *cx, js::Value *vp);
+    bool wrap(JSContext *cx, JSString **strp);
+    bool wrap(JSContext *cx, js::HeapPtrString *strp);
+    bool wrap(JSContext *cx, JSObject **objp);
+    bool wrapId(JSContext *cx, jsid *idp);
+    bool wrap(JSContext *cx, js::PropertyOp *op);
+    bool wrap(JSContext *cx, js::StrictPropertyOp *op);
+    bool wrap(JSContext *cx, js::PropertyDescriptor *desc);
+    bool wrap(JSContext *cx, js::AutoIdVector &props);
+
+    void markTypes(JSTracer *trc);
+    void discardJitCode(js::FreeOp *fop);
+    void sweep(js::FreeOp *fop, bool releaseTypes);
+    void sweepCrossCompartmentWrappers();
+    void purge();
+
+    void setGCLastBytes(size_t lastBytes, size_t lastMallocBytes, js::JSGCInvocationKind gckind);
+    void reduceGCTriggerBytes(size_t amount);
+
+    void resetGCMallocBytes();
+    void setGCMaxMallocBytes(size_t value);
+    void updateMallocCounter(size_t nbytes) {
+        ptrdiff_t oldCount = gcMallocBytes;
+        ptrdiff_t newCount = oldCount - ptrdiff_t(nbytes);
+        gcMallocBytes = newCount;
+        if ((__builtin_expect((newCount <= 0 && oldCount > 0), 0)))
+            onTooMuchMalloc();
+    }
+
+    bool isTooMuchMalloc() const {
+        return gcMallocBytes <= 0;
+     }
+
+    void onTooMuchMalloc();
+
+    void mallocInCompartment(size_t nbytes) {
+        gcMallocAndFreeBytes += nbytes;
+    }
+
+    void freeInCompartment(size_t nbytes) {
+        do { } while(0);
+        gcMallocAndFreeBytes -= nbytes;
+    }
+
+    js::DtoaCache dtoaCache;
+
+  private:
+
+
+
+
+    js::GlobalObjectSet debuggees;
+
+  private:
+    JSCompartment *thisForCtor() { return this; }
+
+  public:
+
+
+
+
+
+
+
+    bool debugMode() const { return !!debugModeBits; }
+
+
+    bool hasScriptsOnStack();
+
+  private:
+
+    void updateForDebugMode(js::FreeOp *fop, js::AutoDebugModeGC &dmgc);
+
+  public:
+    js::GlobalObjectSet &getDebuggees() { return debuggees; }
+    bool addDebuggee(JSContext *cx, js::GlobalObject *global);
+    void removeDebuggee(js::FreeOp *fop, js::GlobalObject *global,
+                        js::GlobalObjectSet::Enum *debuggeesEnum = __null);
+    bool setDebugModeFromC(JSContext *cx, bool b, js::AutoDebugModeGC &dmgc);
+
+    void clearBreakpointsIn(js::FreeOp *fop, js::Debugger *dbg, JSObject *handler);
+    void clearTraps(js::FreeOp *fop);
+
+  private:
+    void sweepBreakpoints(js::FreeOp *fop);
+
+  public:
+    js::WatchpointMap *watchpointMap;
+
+    js::ScriptCountsMap *scriptCountsMap;
+
+    js::SourceMapMap *sourceMapMap;
+
+    js::DebugScriptMap *debugScriptMap;
+};
+
+
+
+
+
+class js::AutoDebugModeGC
+{
+    JSRuntime *rt;
+    bool needGC;
+  public:
+    explicit AutoDebugModeGC(JSRuntime *rt) : rt(rt), needGC(false) {}
+
+    ~AutoDebugModeGC() {
+
+
+
+
+        if (needGC)
+            GC(rt, GC_NORMAL, gcreason::DEBUG_MODE_GC);
+    }
+
+    void scheduleGC(JSCompartment *compartment) {
+        do { } while(0);
+        PrepareCompartmentForGC(compartment);
+        needGC = true;
+    }
+};
+
+inline void
+JSContext::setCompartment(JSCompartment *compartment)
+{
+    this->compartment = compartment;
+    this->inferenceEnabled = compartment ? compartment->types.inferenceEnabled : false;
+}
+
+namespace js {
+
+class PreserveCompartment {
+  protected:
+    JSContext *cx;
+  private:
+    JSCompartment *oldCompartment;
+    bool oldInferenceEnabled;
+   
+  public:
+     PreserveCompartment(JSContext *cx ) : cx(cx) {
+        do { } while (0);
+        oldCompartment = cx->compartment;
+        oldInferenceEnabled = cx->inferenceEnabled;
+    }
+
+    ~PreserveCompartment() {
+
+        cx->compartment = oldCompartment;
+        cx->inferenceEnabled = oldInferenceEnabled;
+    }
+};
+
+class SwitchToCompartment : public PreserveCompartment {
+  public:
+    SwitchToCompartment(JSContext *cx, JSCompartment *newCompartment
+                        )
+        : PreserveCompartment(cx)
+    {
+        do { } while (0);
+        cx->setCompartment(newCompartment);
+    }
+
+    SwitchToCompartment(JSContext *cx, JSObject *target )
+        : PreserveCompartment(cx)
+    {
+        do { } while (0);
+        cx->setCompartment(target->compartment());
+    }
+
+   
+};
+
+class AssertCompartmentUnchanged {
+  protected:
+    JSContext * const cx;
+    JSCompartment * const oldCompartment;
+   
+  public:
+     AssertCompartmentUnchanged(JSContext *cx )
+     : cx(cx), oldCompartment(cx->compartment) {
+        do { } while (0);
+    }
+
+    ~AssertCompartmentUnchanged() {
+        do { } while(0);
+    }
+};
+
+class AutoCompartment
+{
+  public:
+    JSContext * const context;
+    JSCompartment * const origin;
+    JSObject * const target;
+    JSCompartment * const destination;
+  private:
+    Maybe<DummyFrameGuard> frame;
+    bool entered;
+
+  public:
+    AutoCompartment(JSContext *cx, JSObject *target);
+    ~AutoCompartment();
+
+    bool enter();
+    void leave();
+
+  private:
+    AutoCompartment(const AutoCompartment &) ;
+    AutoCompartment & operator=(const AutoCompartment &) ;
+};
+
+
+
+
+
+
+class ErrorCopier
+{
+    AutoCompartment &ac;
+    RootedObject scope;
+
+  public:
+    ErrorCopier(AutoCompartment &ac, JSObject *scope) : ac(ac), scope(ac.context, scope) {
+        do { } while(0);
+    }
+    ~ErrorCopier();
+};
+
+class CompartmentsIter {
+  private:
+    JSCompartment **it, **end;
+
+  public:
+    CompartmentsIter(JSRuntime *rt) {
+        it = rt->compartments.begin();
+        end = rt->compartments.end();
+    }
+
+    bool done() const { return it == end; }
+
+    void next() {
+        do { } while(0);
+        it++;
+    }
+
+    JSCompartment *get() const {
+        do { } while(0);
+        return *it;
+    }
+
+    operator JSCompartment *() const { return get(); }
+    JSCompartment *operator->() const { return get(); }
+};
+
+}
+# 17 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h" 2
+# 33 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h"
+namespace js {
+
+namespace mjit {
+    struct JITChunk;
+    struct JITScript;
+}
+
+struct VMFrame
+{
+# 82 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h"
+    union Arguments {
+        struct {
+            void *ptr;
+            void *ptr2;
+        } x;
+        struct {
+            uint32_t dynamicArgc;
+        } call;
+    } u;
+
+    static size_t offsetOfDynamicArgc() {
+        return __builtin_offsetof (VMFrame, u.call.dynamicArgc);
+    }
+
+    VMFrame *previous;
+    void *scratch;
+    FrameRegs regs;
+
+    static size_t offsetOfRegsSp() {
+        return __builtin_offsetof (VMFrame, regs.sp);
+    }
+
+    static size_t offsetOfRegsPc() {
+        return __builtin_offsetof (VMFrame, regs.pc);
+    }
+
+    JSContext *cx;
+    Value *stackLimit;
+    StackFrame *entryfp;
+    FrameRegs *oldregs;
+    JSRejoinState stubRejoin;
+# 162 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h"
+    void *savedR4;
+    void *savedR5;
+    void *savedR6;
+    void *savedR7;
+    void *savedR8;
+    void *savedR9;
+    void *savedR10;
+    void *savedR11;
+    void *savedLR;
+
+    inline void** returnAddressLocation() {
+        return reinterpret_cast<void**>(this) - 1;
+    }
+# 202 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h"
+    JSRuntime *runtime() { return cx->runtime; }
+
+
+
+
+
+
+
+    StackFrame *fp() { return regs.fp(); }
+    mjit::JITScript *jit() { return fp()->jit(); }
+
+    inline mjit::JITChunk *chunk();
+    inline unsigned chunkIndex();
+
+
+    inline JSScript *script();
+    inline jsbytecode *pc();
+# 227 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h"
+    static const size_t offsetOfFp = 4 * sizeof(void *) + FrameRegs::offsetOfFp;
+    static const size_t offsetOfInlined = 4 * sizeof(void *) + FrameRegs::offsetOfInlined;
+
+
+    static void staticAssert() {
+        typedef int moz_static_assert104[(offsetOfFp == __builtin_offsetof (VMFrame, regs) + FrameRegs::offsetOfFp) ? 1 : -1];
+        typedef int moz_static_assert105[(offsetOfInlined == __builtin_offsetof (VMFrame, regs) + FrameRegs::offsetOfInlined) ? 1 : -1];
+    }
+};
+
+
+
+extern "C" void JaegerStubVeneer(void);
+
+
+namespace mjit {
+
+
+
+
+
+
+enum RejoinState {
+# 259 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h"
+    REJOIN_SCRIPTED = 1,
+
+
+    REJOIN_NONE,
+
+
+    REJOIN_RESUME,
+
+
+
+
+
+    REJOIN_TRAP,
+
+
+    REJOIN_FALLTHROUGH,
+
+
+
+
+
+
+
+    REJOIN_NATIVE,
+    REJOIN_NATIVE_LOWERED,
+    REJOIN_NATIVE_GETTER,
+
+
+
+
+
+
+    REJOIN_NATIVE_PATCHED,
+
+
+    REJOIN_PUSH_BOOLEAN,
+    REJOIN_PUSH_OBJECT,
+
+
+    REJOIN_DEFLOCALFUN,
+
+
+
+
+
+    REJOIN_THIS_PROTOTYPE,
+
+
+
+
+
+    REJOIN_CHECK_ARGUMENTS,
+
+
+
+
+
+    REJOIN_FUNCTION_PROLOGUE,
+
+
+
+
+
+    REJOIN_CALL_PROLOGUE,
+    REJOIN_CALL_PROLOGUE_LOWERED_CALL,
+    REJOIN_CALL_PROLOGUE_LOWERED_APPLY,
+
+
+    REJOIN_CALL_SPLAT,
+
+
+    REJOIN_GETTER,
+    REJOIN_POS,
+    REJOIN_BINARY,
+
+
+
+
+
+    REJOIN_BRANCH
+};
+
+
+static inline JSRejoinState
+ScriptedRejoin(uint32_t pcOffset)
+{
+    return REJOIN_SCRIPTED | (pcOffset << 1);
+}
+
+
+static inline JSRejoinState
+StubRejoin(RejoinState rejoin)
+{
+    return rejoin << 1;
+}
+
+
+struct RecompilationMonitor
+{
+    JSContext *cx;
+
+
+
+
+
+
+    unsigned recompilations;
+    unsigned frameExpansions;
+
+
+    uint64_t gcNumber;
+
+    RecompilationMonitor(JSContext *cx)
+        : cx(cx),
+          recompilations(cx->compartment->types.recompilations),
+          frameExpansions(cx->compartment->types.frameExpansions),
+          gcNumber(cx->runtime->gcNumber)
+    {}
+
+    bool recompiled() {
+        return cx->compartment->types.recompilations != recompilations
+            || cx->compartment->types.frameExpansions != frameExpansions
+            || cx->runtime->gcNumber != gcNumber;
+    }
+};
+
+
+
+
+
+struct Trampolines {
+    typedef void (*TrampolinePtr)();
+
+    TrampolinePtr forceReturn;
+    JSC::ExecutablePool *forceReturnPool;
+
+
+
+
+
+};
+
+
+enum JaegerStatus
+{
+
+    Jaeger_Throwing = 0,
+
+
+    Jaeger_Returned = 1,
+
+
+
+
+
+    Jaeger_Unfinished = 2,
+
+
+
+
+
+
+    Jaeger_UnfinishedAtTrap = 3,
+
+
+
+
+
+    Jaeger_ThrowBeforeEnter = 4
+};
+
+static inline bool
+JaegerStatusToSuccess(JaegerStatus status)
+{
+    do { } while(0);
+    do { } while(0);
+    return status == Jaeger_Returned;
+}
+
+
+class JaegerRuntime
+{
+    Trampolines trampolines;
+    VMFrame *activeFrame_;
+    JaegerStatus lastUnfinished_;
+
+
+    void finish();
+
+  public:
+    bool init(JSContext *cx);
+
+    JaegerRuntime();
+    ~JaegerRuntime() { finish(); }
+
+    VMFrame *activeFrame() {
+        return activeFrame_;
+    }
+
+    void pushActiveFrame(VMFrame *f) {
+        do { } while(0);
+        f->previous = activeFrame_;
+        f->scratch = __null;
+        activeFrame_ = f;
+    }
+
+    void popActiveFrame() {
+        do { } while(0);
+        activeFrame_ = activeFrame_->previous;
+    }
+
+    void setLastUnfinished(JaegerStatus status) {
+        do { } while(0);
+        lastUnfinished_ = status;
+    }
+
+    JaegerStatus lastUnfinished() {
+        JaegerStatus result = lastUnfinished_;
+        lastUnfinished_ = (JaegerStatus) 0;
+        return result;
+    }
+
+
+
+
+
+
+
+    void *forceReturnFromExternC() const {
+        return (__extension__ (void *) (size_t) (trampolines.forceReturn));
+    }
+
+
+
+
+
+
+    void *forceReturnFromFastCall() const {
+
+
+
+        return (__extension__ (void *) (size_t) (trampolines.forceReturn));
+
+    }
+
+
+
+
+
+
+    Vector<StackFrame *, 8, SystemAllocPolicy> orphanedNativeFrames;
+    Vector<JSC::ExecutablePool *, 8, SystemAllocPolicy> orphanedNativePools;
+};
+# 520 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h"
+class CompilerAllocPolicy : public TempAllocPolicy
+{
+    bool *oomFlag;
+
+    void *checkAlloc(void *p) {
+        if (!p)
+            *oomFlag = true;
+        return p;
+    }
+
+  public:
+    CompilerAllocPolicy(JSContext *cx, bool *oomFlag)
+    : TempAllocPolicy(cx), oomFlag(oomFlag) {}
+    CompilerAllocPolicy(JSContext *cx, Compiler &compiler);
+
+    void *malloc_(size_t bytes) { return checkAlloc(TempAllocPolicy::malloc_(bytes)); }
+    void *realloc_(void *p, size_t oldBytes, size_t bytes) {
+        return checkAlloc(TempAllocPolicy::realloc_(p, oldBytes, bytes));
+    }
+};
+
+namespace ic {
+
+    struct PICInfo;
+    struct GetElementIC;
+    struct SetElementIC;
+
+
+    struct GetGlobalNameIC;
+    struct SetGlobalNameIC;
+    struct EqualityICInfo;
+    struct CallICInfo;
+
+}
+}
+
+typedef void ( *VoidStub)(VMFrame &);
+typedef void ( *VoidVpStub)(VMFrame &, Value *);
+typedef void ( *VoidStubUInt32)(VMFrame &, uint32_t);
+typedef void ( *VoidStubInt32)(VMFrame &, int32_t);
+typedef JSBool ( *BoolStub)(VMFrame &);
+typedef void * ( *VoidPtrStub)(VMFrame &);
+typedef void * ( *VoidPtrStubPC)(VMFrame &, jsbytecode *);
+typedef void * ( *VoidPtrStubUInt32)(VMFrame &, uint32_t);
+typedef JSObject * ( *JSObjStub)(VMFrame &);
+typedef JSObject * ( *JSObjStubUInt32)(VMFrame &, uint32_t);
+typedef JSObject * ( *JSObjStubFun)(VMFrame &, JSFunction *);
+typedef void ( *VoidStubFun)(VMFrame &, JSFunction *);
+typedef JSObject * ( *JSObjStubJSObj)(VMFrame &, JSObject *);
+typedef void ( *VoidStubName)(VMFrame &, PropertyName *);
+typedef JSString * ( *JSStrStub)(VMFrame &);
+typedef JSString * ( *JSStrStubUInt32)(VMFrame &, uint32_t);
+typedef void ( *VoidStubJSObj)(VMFrame &, JSObject *);
+typedef void ( *VoidStubPC)(VMFrame &, jsbytecode *);
+typedef JSBool ( *BoolStubUInt32)(VMFrame &f, uint32_t);
+
+typedef void ( *VoidStubCallIC)(VMFrame &, js::mjit::ic::CallICInfo *);
+typedef void * ( *VoidPtrStubCallIC)(VMFrame &, js::mjit::ic::CallICInfo *);
+typedef void ( *VoidStubGetGlobal)(VMFrame &, js::mjit::ic::GetGlobalNameIC *);
+typedef void ( *VoidStubSetGlobal)(VMFrame &, js::mjit::ic::SetGlobalNameIC *);
+typedef JSBool ( *BoolStubEqualityIC)(VMFrame &, js::mjit::ic::EqualityICInfo *);
+
+
+typedef void ( *VoidStubPIC)(VMFrame &, js::mjit::ic::PICInfo *);
+typedef void ( *VoidStubGetElemIC)(VMFrame &, js::mjit::ic::GetElementIC *);
+typedef void ( *VoidStubSetElemIC)(VMFrame &f, js::mjit::ic::SetElementIC *);
+
+
+namespace mjit {
+
+struct InlineFrame;
+struct CallSite;
+
+struct NativeMapEntry {
+    size_t bcOff;
+    void *ncode;
+};
+
+
+struct PCLengthEntry {
+    double codeLength;
+    double picsLength;
+};
+
+
+
+
+
+
+struct NativeCallStub {
+
+    jsbytecode *pc;
+
+
+    JSC::ExecutablePool *pool;
+# 624 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h"
+    JSC::CodeLocationJump jump;
+
+};
+
+struct JITChunk
+{
+    typedef JSC::MacroAssemblerCodeRef CodeRef;
+    CodeRef code;
+
+    PCLengthEntry *pcLengths;
+# 643 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h"
+    uint32_t nNmapPairs : 31;
+
+    uint32_t nInlineFrames;
+    uint32_t nCallSites;
+    uint32_t nRootedTemplates;
+    uint32_t nRootedRegExps;
+
+    uint32_t nGetGlobalNames;
+    uint32_t nSetGlobalNames;
+    uint32_t nCallICs;
+    uint32_t nEqualityICs;
+
+
+    uint32_t nGetElems;
+    uint32_t nSetElems;
+    uint32_t nPICs;
+
+
+
+
+    typedef Vector<JSC::ExecutablePool *, 0, SystemAllocPolicy> ExecPoolVector;
+    ExecPoolVector execPools;
+
+
+
+    Vector<NativeCallStub, 0, SystemAllocPolicy> nativeCallStubs;
+
+    NativeMapEntry *nmap() const;
+    js::mjit::InlineFrame *inlineFrames() const;
+    js::mjit::CallSite *callSites() const;
+    JSObject **rootedTemplates() const;
+    RegExpShared **rootedRegExps() const;
+
+    ic::GetGlobalNameIC *getGlobalNames() const;
+    ic::SetGlobalNameIC *setGlobalNames() const;
+    ic::CallICInfo *callICs() const;
+    ic::EqualityICInfo *equalityICs() const;
+
+
+    ic::GetElementIC *getElems() const;
+    ic::SetElementIC *setElems() const;
+    ic::PICInfo *pics() const;
+
+
+    bool isValidCode(void *ptr) {
+        char *jitcode = (char *)code.m_code.executableAddress();
+        char *jcheck = (char *)ptr;
+        return jcheck >= jitcode && jcheck < jitcode + code.m_size;
+    }
+
+    size_t computedSizeOfIncludingThis();
+    size_t sizeOfIncludingThis(JSMallocSizeOfFun mallocSizeOf);
+
+    ~JITChunk();
+
+    void trace(JSTracer *trc);
+    void purgeCaches();
+
+  private:
+
+    char *commonSectionLimit() const;
+    char *monoICSectionsLimit() const;
+    char *polyICSectionsLimit() const;
+};
+
+void
+SetChunkLimit(uint32_t limit);
+
+
+struct ChunkDescriptor
+{
+
+    uint32_t begin;
+    uint32_t end;
+
+
+    uint32_t counter;
+
+
+    JITChunk *chunk;
+
+    ChunkDescriptor() { PodZero(this); }
+};
+
+
+struct CrossChunkEdge
+{
+
+    uint32_t source;
+    uint32_t target;
+
+
+    void *sourceJump1;
+    void *sourceJump2;
+# 747 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h"
+    typedef Vector<void**,4,SystemAllocPolicy> JumpTableEntryVector;
+    JumpTableEntryVector *jumpTableEntries;
+
+
+    void *targetLabel;
+
+
+
+
+
+
+    void *shimLabel;
+
+    CrossChunkEdge() { PodZero(this); }
+};
+
+struct JITScript
+{
+    JSScript *script;
+
+    void *invokeEntry;
+    void *fastEntry;
+    void *arityCheckEntry;
+    void *argsCheckEntry;
+
+
+    JSCList callers;
+
+    uint32_t nchunks;
+    uint32_t nedges;
+
+
+
+
+
+    JSC::ExecutablePool *shimPool;
+
+
+
+    JSC::CodeLocationLabel argsCheckStub;
+    JSC::CodeLocationLabel argsCheckFallthrough;
+    JSC::CodeLocationJump argsCheckJump;
+    JSC::ExecutablePool *argsCheckPool;
+    void resetArgsCheck();
+
+
+    ChunkDescriptor &chunkDescriptor(unsigned i) {
+        do { } while(0);
+        ChunkDescriptor *descs = (ChunkDescriptor *) ((char *) this + sizeof(JITScript));
+        return descs[i];
+    }
+
+    unsigned chunkIndex(jsbytecode *pc) {
+        unsigned offset = pc - script->code;
+        do { } while(0);
+        for (unsigned i = 0; i < nchunks; i++) {
+            const ChunkDescriptor &desc = chunkDescriptor(i);
+            do { } while(0);
+            if (offset < desc.end)
+                return i;
+        }
+        __builtin_unreachable();
+        return 0;
+    }
+
+    JITChunk *chunk(jsbytecode *pc) {
+        return chunkDescriptor(chunkIndex(pc)).chunk;
+    }
+
+    JITChunk *findCodeChunk(void *addr);
+
+    CrossChunkEdge *edges() {
+        return (CrossChunkEdge *) (&chunkDescriptor(0) + nchunks);
+    }
+
+
+    void patchEdge(const CrossChunkEdge &edge, void *label);
+
+    jsbytecode *nativeToPC(void *returnAddress, CallSite **pinline);
+
+    size_t sizeOfIncludingThis(JSMallocSizeOfFun mallocSizeOf);
+
+    void destroy(FreeOp *fop);
+    void destroyChunk(FreeOp *fop, unsigned chunkIndex, bool resetUses = true);
+
+    void trace(JSTracer *trc);
+    void purgeCaches();
+};
+
+
+
+
+
+JaegerStatus EnterMethodJIT(JSContext *cx, StackFrame *fp, void *code, Value *stackLimit,
+                            bool partial);
+
+
+JaegerStatus JaegerShot(JSContext *cx, bool partial);
+
+
+JaegerStatus JaegerShotAtSafePoint(JSContext *cx, void *safePoint, bool partial);
+
+enum CompileStatus
+{
+    Compile_Okay,
+    Compile_Abort,
+    Compile_InlineAbort,
+    Compile_Retry,
+    Compile_Error,
+    Compile_Skipped
+};
+
+void
+ProfileStubCall(VMFrame &f);
+
+enum CompileRequest
+{
+    CompileRequest_Interpreter,
+    CompileRequest_JIT
+};
+
+CompileStatus
+CanMethodJIT(JSContext *cx, JSScript *script, jsbytecode *pc,
+             bool construct, CompileRequest request);
+
+inline void
+ReleaseScriptCode(FreeOp *fop, JSScript *script)
+{
+    if (!script->hasJITInfo())
+        return;
+
+    for (int constructing = 0; constructing <= 1; constructing++) {
+        for (int barriers = 0; barriers <= 1; barriers++) {
+            JSScript::JITScriptHandle *jith = script->jitHandle((bool) constructing, (bool) barriers);
+            if (jith && jith->isValid())
+                JSScript::ReleaseCode(fop, jith);
+        }
+    }
+
+    script->destroyJITInfo(fop);
+}
+
+
+void
+ExpandInlineFrames(JSCompartment *compartment);
+
+
+
+void
+ClearAllFrames(JSCompartment *compartment);
+
+
+struct InlineFrame
+{
+    InlineFrame *parent;
+    jsbytecode *parentpc;
+    HeapPtrFunction fun;
+
+
+
+    uint32_t depth;
+};
+
+struct CallSite
+{
+    uint32_t codeOffset;
+    uint32_t inlineIndex;
+    uint32_t pcOffset;
+    RejoinState rejoin;
+
+    void initialize(uint32_t codeOffset, uint32_t inlineIndex, uint32_t pcOffset,
+                    RejoinState rejoin) {
+        this->codeOffset = codeOffset;
+        this->inlineIndex = inlineIndex;
+        this->pcOffset = pcOffset;
+        this->rejoin = rejoin;
+    }
+
+    bool isTrap() const {
+        return rejoin == REJOIN_TRAP;
+    }
+};
+
+void
+DumpAllProfiles(JSContext *cx);
+
+inline void * bsearch_nmap(NativeMapEntry *nmap, size_t nPairs, size_t bcOff)
+{
+    size_t lo = 1, hi = nPairs;
+    while (1) {
+
+        if (lo > hi)
+            return __null;
+        size_t mid = (lo + hi) / 2;
+        size_t bcOff_mid = nmap[mid-1].bcOff;
+        if (bcOff < bcOff_mid) {
+            hi = mid-1;
+            continue;
+        }
+        if (bcOff > bcOff_mid) {
+            lo = mid+1;
+            continue;
+        }
+        return nmap[mid-1].ncode;
+    }
+}
+
+static inline bool
+IsLowerableFunCallOrApply(jsbytecode *pc)
+{
+
+    return (*pc == JSOP_FUNCALL && ((unsigned)(((pc)[1] << 8) | (pc)[2])) >= 1) ||
+           (*pc == JSOP_FUNAPPLY && ((unsigned)(((pc)[1] << 8) | (pc)[2])) == 2);
+
+
+
+}
+
+}
+
+inline mjit::JITChunk *
+VMFrame::chunk()
+{
+    return jit()->chunk(regs.pc);
+}
+
+inline unsigned
+VMFrame::chunkIndex()
+{
+    return jit()->chunkIndex(regs.pc);
+}
+
+inline JSScript *
+VMFrame::script()
+{
+    if (regs.inlined())
+        return chunk()->inlineFrames()[regs.inlined()->inlineIndex].fun->script();
+    return fp()->script();
+}
+
+inline jsbytecode *
+VMFrame::pc()
+{
+    if (regs.inlined())
+        return script()->code + regs.inlined()->pcOffset;
+    return regs.pc;
+}
+
+}
+
+inline void *
+JSScript::nativeCodeForPC(bool constructing, jsbytecode *pc)
+{
+    js::mjit::JITScript *jit = getJIT(constructing, compartment()->needsBarrier());
+    if (!jit)
+        return __null;
+    js::mjit::JITChunk *chunk = jit->chunk(pc);
+    if (!chunk)
+        return __null;
+    return bsearch_nmap(chunk->nmap(), chunk->nNmapPairs, (size_t)(pc - code));
+}
+
+extern "C" void JaegerTrampolineReturn();
+extern "C" void JaegerInterpoline();
+extern "C" void JaegerInterpolineScripted();
+
+
+
+
+extern "C" void JaegerThrowpoline();
+# 21 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl-inl.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl-inl.h"
+#define ObjectImpl_inl_h___ 
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgc.h" 1
+# 15 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl-inl.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinterp.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinterp.h"
+#define jsinterp_h___ 
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinterp.h"
+namespace js {
+
+
+
+
+
+
+
+inline bool
+ScriptPrologue(JSContext *cx, StackFrame *fp, JSScript *script);
+
+inline bool
+ScriptEpilogue(JSContext *cx, StackFrame *fp, bool ok);
+# 40 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinterp.h"
+inline bool
+ScriptPrologueOrGeneratorResume(JSContext *cx, StackFrame *fp);
+
+inline bool
+ScriptEpilogueOrGeneratorYield(JSContext *cx, StackFrame *fp, bool ok);
+# 65 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinterp.h"
+extern JSTrapStatus
+ScriptDebugPrologue(JSContext *cx, StackFrame *fp);
+# 83 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinterp.h"
+extern bool
+ScriptDebugEpilogue(JSContext *cx, StackFrame *fp, bool ok);
+
+
+
+
+
+
+
+extern bool
+BoxNonStrictThis(JSContext *cx, const CallReceiver &call);
+
+
+
+
+
+
+
+inline bool
+ComputeThis(JSContext *cx, StackFrame *fp);
+
+enum MaybeConstruct {
+    NO_CONSTRUCT = INITIAL_NONE,
+    CONSTRUCT = INITIAL_CONSTRUCT
+};
+
+
+
+
+
+
+extern bool
+InvokeKernel(JSContext *cx, CallArgs args, MaybeConstruct construct = NO_CONSTRUCT);
+
+
+
+
+
+inline bool
+Invoke(JSContext *cx, InvokeArgsGuard &args, MaybeConstruct construct = NO_CONSTRUCT)
+{
+    args.setActive();
+    bool ok = InvokeKernel(cx, args, construct);
+    args.setInactive();
+    return ok;
+}
+
+
+
+
+
+
+extern bool
+Invoke(JSContext *cx, const Value &thisv, const Value &fval, unsigned argc, Value *argv,
+       Value *rval);
+
+
+
+
+
+extern bool
+InvokeGetterOrSetter(JSContext *cx, JSObject *obj, const Value &fval, unsigned argc, Value *argv,
+                     Value *rval);
+
+
+
+
+
+extern bool
+InvokeConstructorKernel(JSContext *cx, const CallArgs &args);
+
+
+inline bool
+InvokeConstructor(JSContext *cx, InvokeArgsGuard &args)
+{
+    args.setActive();
+    bool ok = InvokeConstructorKernel(cx, ImplicitCast<CallArgs>(args));
+    args.setInactive();
+    return ok;
+}
+
+
+extern bool
+InvokeConstructor(JSContext *cx, const Value &fval, unsigned argc, Value *argv, Value *rval);
+
+
+
+
+
+
+
+extern bool
+ExecuteKernel(JSContext *cx, JSScript *script, JSObject &scopeChain, const Value &thisv,
+              ExecuteType type, StackFrame *evalInFrame, Value *result);
+
+
+extern bool
+Execute(JSContext *cx, JSScript *script, JSObject &scopeChain, Value *rval);
+
+
+enum InterpMode
+{
+    JSINTERP_NORMAL = 0,
+    JSINTERP_REJOIN = 1,
+    JSINTERP_SKIP_TRAP = 2
+};
+
+
+
+
+
+extern __attribute__((noinline)) bool
+Interpret(JSContext *cx, StackFrame *stopFp, InterpMode mode = JSINTERP_NORMAL);
+
+extern bool
+RunScript(JSContext *cx, JSScript *script, StackFrame *fp);
+
+extern bool
+StrictlyEqual(JSContext *cx, const Value &lval, const Value &rval, bool *equal);
+
+extern bool
+LooselyEqual(JSContext *cx, const Value &lval, const Value &rval, bool *equal);
+
+
+extern bool
+SameValue(JSContext *cx, const Value &v1, const Value &v2, bool *same);
+
+extern JSType
+TypeOfValue(JSContext *cx, const Value &v);
+
+extern JSBool
+HasInstance(JSContext *cx, HandleObject obj, const js::Value *v, JSBool *bp);
+# 239 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinterp.h"
+class InterpreterFrames {
+  public:
+    class InterruptEnablerBase {
+      public:
+        virtual void enableInterrupts() const = 0;
+    };
+
+    InterpreterFrames(JSContext *cx, FrameRegs *regs, const InterruptEnablerBase &enabler);
+    ~InterpreterFrames();
+
+
+    inline void enableInterruptsIfRunning(JSScript *script);
+
+    InterpreterFrames *older;
+
+  private:
+    JSContext *context;
+    FrameRegs *regs;
+    const InterruptEnablerBase &enabler;
+};
+
+
+
+
+
+extern void
+UnwindScope(JSContext *cx, uint32_t stackDepth);
+
+
+
+
+
+extern void
+UnwindForUncatchableException(JSContext *cx, const FrameRegs &regs);
+
+extern bool
+OnUnknownMethod(JSContext *cx, HandleObject obj, Value idval, Value *vp);
+
+inline void
+AssertValidFunctionScopeChainAtExit(StackFrame *fp);
+
+class TryNoteIter
+{
+    const FrameRegs &regs;
+    JSScript *script;
+    uint32_t pcOffset;
+    JSTryNote *tn, *tnEnd;
+    void settle();
+  public:
+    TryNoteIter(const FrameRegs &regs);
+    bool done() const;
+    void operator++();
+    JSTryNote *operator*() const { return tn; }
+};
+# 302 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinterp.h"
+static __attribute__((always_inline)) inline void
+Debug_SetValueRangeToCrashOnTouch(Value *beg, Value *end)
+{
+
+
+
+
+}
+
+static __attribute__((always_inline)) inline void
+Debug_SetValueRangeToCrashOnTouch(Value *vec, size_t len)
+{
+
+
+
+}
+
+static __attribute__((always_inline)) inline void
+Debug_SetValueRangeToCrashOnTouch(HeapValue *vec, size_t len)
+{
+
+
+
+}
+
+}
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl-inl.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Marking.h" 1
+
+
+
+
+
+
+
+#define gc_marking_h___ 
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jslock.h" 1
+# 13 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Marking.h" 2
+
+
+
+
+extern "C" {
+struct JSContext;
+struct JSFunction;
+struct JSObject;
+struct JSScript;
+}
+
+class JSAtom;
+class JSLinearString;
+
+namespace js {
+
+class ArgumentsObject;
+class BaseShape;
+class GlobalObject;
+class UnownedBaseShape;
+struct Shape;
+
+template<class, typename> class HeapPtr;
+
+namespace gc {
+# 65 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Marking.h"
+#define DeclMarker(base,type) void Mark ##base(JSTracer *trc, HeapPtr<type> *thing, const char *name); void Mark ##base ##Root(JSTracer *trc, type **thingp, const char *name); void Mark ##base ##Unbarriered(JSTracer *trc, type **thingp, const char *name); void Mark ##base ##Range(JSTracer *trc, size_t len, HeapPtr<type> *thing, const char *name); void Mark ##base ##RootRange(JSTracer *trc, size_t len, type **thing, const char *name); bool Is ##base ##Marked(type **thingp); bool Is ##base ##Marked(HeapPtr<type> *thingp);
+# 74 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Marking.h"
+void MarkBaseShape(JSTracer *trc, HeapPtr<BaseShape> *thing, const char *name); void MarkBaseShapeRoot(JSTracer *trc, BaseShape **thingp, const char *name); void MarkBaseShapeUnbarriered(JSTracer *trc, BaseShape **thingp, const char *name); void MarkBaseShapeRange(JSTracer *trc, size_t len, HeapPtr<BaseShape> *thing, const char *name); void MarkBaseShapeRootRange(JSTracer *trc, size_t len, BaseShape **thing, const char *name); bool IsBaseShapeMarked(BaseShape **thingp); bool IsBaseShapeMarked(HeapPtr<BaseShape> *thingp);
+void MarkBaseShape(JSTracer *trc, HeapPtr<UnownedBaseShape> *thing, const char *name); void MarkBaseShapeRoot(JSTracer *trc, UnownedBaseShape **thingp, const char *name); void MarkBaseShapeUnbarriered(JSTracer *trc, UnownedBaseShape **thingp, const char *name); void MarkBaseShapeRange(JSTracer *trc, size_t len, HeapPtr<UnownedBaseShape> *thing, const char *name); void MarkBaseShapeRootRange(JSTracer *trc, size_t len, UnownedBaseShape **thing, const char *name); bool IsBaseShapeMarked(UnownedBaseShape **thingp); bool IsBaseShapeMarked(HeapPtr<UnownedBaseShape> *thingp);
+void MarkObject(JSTracer *trc, HeapPtr<ArgumentsObject> *thing, const char *name); void MarkObjectRoot(JSTracer *trc, ArgumentsObject **thingp, const char *name); void MarkObjectUnbarriered(JSTracer *trc, ArgumentsObject **thingp, const char *name); void MarkObjectRange(JSTracer *trc, size_t len, HeapPtr<ArgumentsObject> *thing, const char *name); void MarkObjectRootRange(JSTracer *trc, size_t len, ArgumentsObject **thing, const char *name); bool IsObjectMarked(ArgumentsObject **thingp); bool IsObjectMarked(HeapPtr<ArgumentsObject> *thingp);
+void MarkObject(JSTracer *trc, HeapPtr<DebugScopeObject> *thing, const char *name); void MarkObjectRoot(JSTracer *trc, DebugScopeObject **thingp, const char *name); void MarkObjectUnbarriered(JSTracer *trc, DebugScopeObject **thingp, const char *name); void MarkObjectRange(JSTracer *trc, size_t len, HeapPtr<DebugScopeObject> *thing, const char *name); void MarkObjectRootRange(JSTracer *trc, size_t len, DebugScopeObject **thing, const char *name); bool IsObjectMarked(DebugScopeObject **thingp); bool IsObjectMarked(HeapPtr<DebugScopeObject> *thingp);
+void MarkObject(JSTracer *trc, HeapPtr<GlobalObject> *thing, const char *name); void MarkObjectRoot(JSTracer *trc, GlobalObject **thingp, const char *name); void MarkObjectUnbarriered(JSTracer *trc, GlobalObject **thingp, const char *name); void MarkObjectRange(JSTracer *trc, size_t len, HeapPtr<GlobalObject> *thing, const char *name); void MarkObjectRootRange(JSTracer *trc, size_t len, GlobalObject **thing, const char *name); bool IsObjectMarked(GlobalObject **thingp); bool IsObjectMarked(HeapPtr<GlobalObject> *thingp);
+void MarkObject(JSTracer *trc, HeapPtr<JSObject> *thing, const char *name); void MarkObjectRoot(JSTracer *trc, JSObject **thingp, const char *name); void MarkObjectUnbarriered(JSTracer *trc, JSObject **thingp, const char *name); void MarkObjectRange(JSTracer *trc, size_t len, HeapPtr<JSObject> *thing, const char *name); void MarkObjectRootRange(JSTracer *trc, size_t len, JSObject **thing, const char *name); bool IsObjectMarked(JSObject **thingp); bool IsObjectMarked(HeapPtr<JSObject> *thingp);
+void MarkObject(JSTracer *trc, HeapPtr<JSFunction> *thing, const char *name); void MarkObjectRoot(JSTracer *trc, JSFunction **thingp, const char *name); void MarkObjectUnbarriered(JSTracer *trc, JSFunction **thingp, const char *name); void MarkObjectRange(JSTracer *trc, size_t len, HeapPtr<JSFunction> *thing, const char *name); void MarkObjectRootRange(JSTracer *trc, size_t len, JSFunction **thing, const char *name); bool IsObjectMarked(JSFunction **thingp); bool IsObjectMarked(HeapPtr<JSFunction> *thingp);
+void MarkScript(JSTracer *trc, HeapPtr<JSScript> *thing, const char *name); void MarkScriptRoot(JSTracer *trc, JSScript **thingp, const char *name); void MarkScriptUnbarriered(JSTracer *trc, JSScript **thingp, const char *name); void MarkScriptRange(JSTracer *trc, size_t len, HeapPtr<JSScript> *thing, const char *name); void MarkScriptRootRange(JSTracer *trc, size_t len, JSScript **thing, const char *name); bool IsScriptMarked(JSScript **thingp); bool IsScriptMarked(HeapPtr<JSScript> *thingp);
+void MarkShape(JSTracer *trc, HeapPtr<Shape> *thing, const char *name); void MarkShapeRoot(JSTracer *trc, Shape **thingp, const char *name); void MarkShapeUnbarriered(JSTracer *trc, Shape **thingp, const char *name); void MarkShapeRange(JSTracer *trc, size_t len, HeapPtr<Shape> *thing, const char *name); void MarkShapeRootRange(JSTracer *trc, size_t len, Shape **thing, const char *name); bool IsShapeMarked(Shape **thingp); bool IsShapeMarked(HeapPtr<Shape> *thingp);
+void MarkString(JSTracer *trc, HeapPtr<JSAtom> *thing, const char *name); void MarkStringRoot(JSTracer *trc, JSAtom **thingp, const char *name); void MarkStringUnbarriered(JSTracer *trc, JSAtom **thingp, const char *name); void MarkStringRange(JSTracer *trc, size_t len, HeapPtr<JSAtom> *thing, const char *name); void MarkStringRootRange(JSTracer *trc, size_t len, JSAtom **thing, const char *name); bool IsStringMarked(JSAtom **thingp); bool IsStringMarked(HeapPtr<JSAtom> *thingp);
+void MarkString(JSTracer *trc, HeapPtr<JSString> *thing, const char *name); void MarkStringRoot(JSTracer *trc, JSString **thingp, const char *name); void MarkStringUnbarriered(JSTracer *trc, JSString **thingp, const char *name); void MarkStringRange(JSTracer *trc, size_t len, HeapPtr<JSString> *thing, const char *name); void MarkStringRootRange(JSTracer *trc, size_t len, JSString **thing, const char *name); bool IsStringMarked(JSString **thingp); bool IsStringMarked(HeapPtr<JSString> *thingp);
+void MarkString(JSTracer *trc, HeapPtr<JSFlatString> *thing, const char *name); void MarkStringRoot(JSTracer *trc, JSFlatString **thingp, const char *name); void MarkStringUnbarriered(JSTracer *trc, JSFlatString **thingp, const char *name); void MarkStringRange(JSTracer *trc, size_t len, HeapPtr<JSFlatString> *thing, const char *name); void MarkStringRootRange(JSTracer *trc, size_t len, JSFlatString **thing, const char *name); bool IsStringMarked(JSFlatString **thingp); bool IsStringMarked(HeapPtr<JSFlatString> *thingp);
+void MarkString(JSTracer *trc, HeapPtr<JSLinearString> *thing, const char *name); void MarkStringRoot(JSTracer *trc, JSLinearString **thingp, const char *name); void MarkStringUnbarriered(JSTracer *trc, JSLinearString **thingp, const char *name); void MarkStringRange(JSTracer *trc, size_t len, HeapPtr<JSLinearString> *thing, const char *name); void MarkStringRootRange(JSTracer *trc, size_t len, JSLinearString **thing, const char *name); bool IsStringMarked(JSLinearString **thingp); bool IsStringMarked(HeapPtr<JSLinearString> *thingp);
+void MarkTypeObject(JSTracer *trc, HeapPtr<types::TypeObject> *thing, const char *name); void MarkTypeObjectRoot(JSTracer *trc, types::TypeObject **thingp, const char *name); void MarkTypeObjectUnbarriered(JSTracer *trc, types::TypeObject **thingp, const char *name); void MarkTypeObjectRange(JSTracer *trc, size_t len, HeapPtr<types::TypeObject> *thing, const char *name); void MarkTypeObjectRootRange(JSTracer *trc, size_t len, types::TypeObject **thing, const char *name); bool IsTypeObjectMarked(types::TypeObject **thingp); bool IsTypeObjectMarked(HeapPtr<types::TypeObject> *thingp);
+
+void MarkXML(JSTracer *trc, HeapPtr<JSXML> *thing, const char *name); void MarkXMLRoot(JSTracer *trc, JSXML **thingp, const char *name); void MarkXMLUnbarriered(JSTracer *trc, JSXML **thingp, const char *name); void MarkXMLRange(JSTracer *trc, size_t len, HeapPtr<JSXML> *thing, const char *name); void MarkXMLRootRange(JSTracer *trc, size_t len, JSXML **thing, const char *name); bool IsXMLMarked(JSXML **thingp); bool IsXMLMarked(HeapPtr<JSXML> *thingp);
+
+
+#undef DeclMarker
+# 101 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Marking.h"
+void
+MarkKind(JSTracer *trc, void **thingp, JSGCTraceKind kind);
+
+void
+MarkGCThingRoot(JSTracer *trc, void **thingp, const char *name);
+
+
+
+void
+MarkId(JSTracer *trc, EncapsulatedId *id, const char *name);
+
+void
+MarkIdRoot(JSTracer *trc, jsid *id, const char *name);
+
+void
+MarkIdUnbarriered(JSTracer *trc, jsid *id, const char *name);
+
+void
+MarkIdRange(JSTracer *trc, size_t len, HeapId *vec, const char *name);
+
+void
+MarkIdRootRange(JSTracer *trc, size_t len, jsid *vec, const char *name);
+
+
+
+void
+MarkValue(JSTracer *trc, EncapsulatedValue *v, const char *name);
+
+void
+MarkValueRange(JSTracer *trc, size_t len, EncapsulatedValue *vec, const char *name);
+
+void
+MarkValueRoot(JSTracer *trc, Value *v, const char *name);
+
+void
+MarkValueRootRange(JSTracer *trc, size_t len, Value *vec, const char *name);
+
+inline void
+MarkValueRootRange(JSTracer *trc, Value *begin, Value *end, const char *name)
+{
+    MarkValueRootRange(trc, end - begin, begin, name);
+}
+
+bool
+IsValueMarked(Value *v);
+
+
+
+void
+MarkSlot(JSTracer *trc, HeapSlot *s, const char *name);
+
+void
+MarkArraySlots(JSTracer *trc, size_t len, HeapSlot *vec, const char *name);
+
+void
+MarkObjectSlots(JSTracer *trc, JSObject *obj, uint32_t start, uint32_t nslots);
+
+void
+MarkCrossCompartmentObjectUnbarriered(JSTracer *trc, JSObject **obj, const char *name);
+
+void
+MarkCrossCompartmentScriptUnbarriered(JSTracer *trc, JSScript **script, const char *name);
+
+
+
+
+
+void
+MarkCrossCompartmentSlot(JSTracer *trc, HeapSlot *s, const char *name);
+# 178 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Marking.h"
+void
+MarkObject(JSTracer *trc, HeapPtr<GlobalObject, JSScript *> *thingp, const char *name);
+
+
+void
+MarkValueUnbarriered(JSTracer *trc, Value *v, const char *name);
+
+
+
+
+
+void
+MarkChildren(JSTracer *trc, JSObject *obj);
+
+
+
+
+
+
+void
+MarkCycleCollectorChildren(JSTracer *trc, Shape *shape);
+
+void
+PushArena(GCMarker *gcmarker, ArenaHeader *aheader);
+# 210 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Marking.h"
+inline void
+Mark(JSTracer *trc, HeapValue *v, const char *name)
+{
+    MarkValue(trc, v, name);
+}
+
+inline void
+Mark(JSTracer *trc, HeapPtr<JSObject> *o, const char *name)
+{
+    MarkObject(trc, o, name);
+}
+
+inline void
+Mark(JSTracer *trc, HeapPtr<JSScript> *o, const char *name)
+{
+    MarkScript(trc, o, name);
+}
+
+
+inline void
+Mark(JSTracer *trc, HeapPtr<JSXML> *xml, const char *name)
+{
+    MarkXML(trc, xml, name);
+}
+
+
+bool
+IsCellMarked(Cell **thingp);
+
+inline bool
+IsMarked(EncapsulatedValue *v)
+{
+    if (!v->isMarkable())
+        return true;
+    return IsValueMarked(v->unsafeGet());
+}
+
+inline bool
+IsMarked(HeapPtrObject *objp)
+{
+    return IsObjectMarked(objp);
+}
+
+inline bool
+IsMarked(HeapPtrScript *scriptp)
+{
+    return IsScriptMarked(scriptp);
+}
+
+inline Cell *
+ToMarkable(const Value &v)
+{
+    if (v.isMarkable())
+        return (Cell *)v.toGCThing();
+    return __null;
+}
+
+inline Cell *
+ToMarkable(Cell *cell)
+{
+    return cell;
+}
+
+inline JSGCTraceKind
+TraceKind(const Value &v)
+{
+    do { } while(0);
+    if (v.isObject())
+        return JSTRACE_OBJECT;
+    return JSTRACE_STRING;
+}
+
+inline JSGCTraceKind
+TraceKind(JSObject *obj)
+{
+    return JSTRACE_OBJECT;
+}
+
+inline JSGCTraceKind
+TraceKind(JSScript *script)
+{
+    return JSTRACE_SCRIPT;
+}
+
+}
+
+void
+TraceChildren(JSTracer *trc, void *thing, JSGCTraceKind kind);
+
+void
+CallTracer(JSTracer *trc, void *thing, JSGCTraceKind kind);
+
+}
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl-inl.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.h" 1
+# 22 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl-inl.h" 2
+
+namespace js {
+
+static __attribute__((always_inline)) inline void
+Debug_SetSlotRangeToCrashOnTouch(HeapSlot *vec, uint32_t len)
+{
+
+
+
+}
+
+static __attribute__((always_inline)) inline void
+Debug_SetSlotRangeToCrashOnTouch(HeapSlot *begin, HeapSlot *end)
+{
+
+
+
+}
+
+}
+
+inline bool
+js::ObjectImpl::isExtensible() const
+{
+    return !lastProperty()->hasObjectFlag(BaseShape::NOT_EXTENSIBLE);
+}
+
+inline bool
+js::ObjectImpl::isDenseArray() const
+{
+    bool result = hasClass(&ArrayClass);
+    do { } while (0);
+    return result;
+}
+
+inline bool
+js::ObjectImpl::isSlowArray() const
+{
+    bool result = hasClass(&SlowArrayClass);
+    do { } while (0);
+    return result;
+}
+
+inline bool
+js::ObjectImpl::isArray() const
+{
+    return isSlowArray() || isDenseArray();
+}
+
+inline uint32_t
+js::ObjectImpl::getDenseArrayInitializedLength()
+{
+    do { } while(0);
+    return getElementsHeader()->initializedLength;
+}
+
+inline js::HeapSlotArray
+js::ObjectImpl::getDenseArrayElements()
+{
+    do { } while(0);
+    return HeapSlotArray(elements);
+}
+
+inline const js::Value &
+js::ObjectImpl::getDenseArrayElement(uint32_t idx)
+{
+    do { } while(0);
+    return elements[idx];
+}
+
+inline void
+js::ObjectImpl::getSlotRangeUnchecked(uint32_t start, uint32_t length,
+                                      HeapSlot **fixedStart, HeapSlot **fixedEnd,
+                                      HeapSlot **slotsStart, HeapSlot **slotsEnd)
+{
+    do { } while(0);
+    do { } while(0);
+
+    uint32_t fixed = numFixedSlots();
+    if (start < fixed) {
+        if (start + length < fixed) {
+            *fixedStart = &fixedSlots()[start];
+            *fixedEnd = &fixedSlots()[start + length];
+            *slotsStart = *slotsEnd = __null;
+        } else {
+            uint32_t localCopy = fixed - start;
+            *fixedStart = &fixedSlots()[start];
+            *fixedEnd = &fixedSlots()[start + localCopy];
+            *slotsStart = &slots[0];
+            *slotsEnd = &slots[length - localCopy];
+        }
+    } else {
+        *fixedStart = *fixedEnd = __null;
+        *slotsStart = &slots[start - fixed];
+        *slotsEnd = &slots[start - fixed + length];
+    }
+}
+
+inline void
+js::ObjectImpl::getSlotRange(uint32_t start, uint32_t length,
+                             HeapSlot **fixedStart, HeapSlot **fixedEnd,
+                             HeapSlot **slotsStart, HeapSlot **slotsEnd)
+{
+    do { } while(0);
+    getSlotRangeUnchecked(start, length, fixedStart, fixedEnd, slotsStart, slotsEnd);
+}
+
+inline bool
+js::ObjectImpl::hasContiguousSlots(uint32_t start, uint32_t count) const
+{
+
+
+
+
+    do { } while(0);
+    return start + count <= numFixedSlots() || start >= numFixedSlots();
+}
+
+inline void
+js::ObjectImpl::invalidateSlotRange(uint32_t start, uint32_t length)
+{
+# 151 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl-inl.h"
+}
+
+inline void
+js::ObjectImpl::initializeSlotRange(uint32_t start, uint32_t length)
+{
+
+
+
+
+    HeapSlot *fixedStart, *fixedEnd, *slotsStart, *slotsEnd;
+    getSlotRangeUnchecked(start, length, &fixedStart, &fixedEnd, &slotsStart, &slotsEnd);
+
+    JSCompartment *comp = compartment();
+    uint32_t offset = start;
+    for (HeapSlot *sp = fixedStart; sp < fixedEnd; sp++)
+        sp->init(comp, this->asObjectPtr(), offset++, UndefinedValue());
+    for (HeapSlot *sp = slotsStart; sp < slotsEnd; sp++)
+        sp->init(comp, this->asObjectPtr(), offset++, UndefinedValue());
+}
+
+inline bool
+js::ObjectImpl::isNative() const
+{
+    return lastProperty()->isNative();
+}
+
+inline js::HeapSlot &
+js::ObjectImpl::nativeGetSlotRef(uint32_t slot)
+{
+    do { } while(0);
+    do { } while(0);
+    return getSlotRef(slot);
+}
+
+inline const js::Value &
+js::ObjectImpl::nativeGetSlot(uint32_t slot) const
+{
+    do { } while(0);
+    do { } while(0);
+    return getSlot(slot);
+}
+
+inline void
+js::ObjectImpl::setSlot(uint32_t slot, const js::Value &value)
+{
+    do { } while(0);
+    getSlotRef(slot).set(this->asObjectPtr(), slot, value);
+}
+
+inline void
+js::ObjectImpl::initSlot(uint32_t slot, const js::Value &value)
+{
+    do { } while(0);
+    do { } while(0);
+    initSlotUnchecked(slot, value);
+}
+
+inline void
+js::ObjectImpl::initSlotUnchecked(uint32_t slot, const js::Value &value)
+{
+    getSlotAddressUnchecked(slot)->init(this->asObjectPtr(), slot, value);
+}
+
+inline void
+js::ObjectImpl::setFixedSlot(uint32_t slot, const js::Value &value)
+{
+    do { } while(0);
+    fixedSlots()[slot].set(this->asObjectPtr(), slot, value);
+}
+
+inline void
+js::ObjectImpl::initFixedSlot(uint32_t slot, const js::Value &value)
+{
+    do { } while(0);
+    fixedSlots()[slot].init(this->asObjectPtr(), slot, value);
+}
+
+inline uint32_t
+js::ObjectImpl::slotSpan() const
+{
+    if (inDictionaryMode())
+        return lastProperty()->base()->slotSpan();
+    return lastProperty()->slotSpan();
+}
+
+inline uint32_t
+js::ObjectImpl::numDynamicSlots() const
+{
+    return dynamicSlotsCount(numFixedSlots(), slotSpan());
+}
+
+inline js::Class *
+js::ObjectImpl::getClass() const
+{
+    return lastProperty()->getObjectClass();
+}
+
+inline JSClass *
+js::ObjectImpl::getJSClass() const
+{
+    return Jsvalify(getClass());
+}
+
+inline bool
+js::ObjectImpl::hasClass(const Class *c) const
+{
+    return getClass() == c;
+}
+
+inline const js::ObjectOps *
+js::ObjectImpl::getOps() const
+{
+    return &getClass()->ops;
+}
+
+inline bool
+js::ObjectImpl::isDelegate() const
+{
+    return lastProperty()->hasObjectFlag(BaseShape::DELEGATE);
+}
+
+inline bool
+js::ObjectImpl::inDictionaryMode() const
+{
+    return lastProperty()->inDictionary();
+}
+
+             inline uint32_t
+js::ObjectImpl::dynamicSlotsCount(uint32_t nfixed, uint32_t span)
+{
+    if (span <= nfixed)
+        return 0;
+    span -= nfixed;
+    if (span <= SLOT_CAPACITY_MIN)
+        return SLOT_CAPACITY_MIN;
+
+    uint32_t slots = RoundUpPow2(span);
+    do { } while(0);
+    return slots;
+}
+
+inline size_t
+js::ObjectImpl::sizeOfThis() const
+{
+    return arenaHeader()->getThingSize();
+}
+
+             inline void
+js::ObjectImpl::readBarrier(ObjectImpl *obj)
+{
+
+    JSCompartment *comp = obj->compartment();
+    if (comp->needsBarrier()) {
+        do { } while(0);
+        JSObject *tmp = obj->asObjectPtr();
+        MarkObjectUnbarriered(comp->barrierTracer(), &tmp, "read barrier");
+        do { } while(0);
+    }
+
+}
+
+inline void
+js::ObjectImpl::privateWriteBarrierPre(void **old)
+{
+
+    JSCompartment *comp = compartment();
+    if (comp->needsBarrier()) {
+        if (*old && getClass()->trace)
+            getClass()->trace(comp->barrierTracer(), this->asObjectPtr());
+    }
+
+}
+
+inline void
+js::ObjectImpl::privateWriteBarrierPost(void **old)
+{
+}
+
+             inline void
+js::ObjectImpl::writeBarrierPre(ObjectImpl *obj)
+{
+
+
+
+
+
+    if (uintptr_t(obj) < 32)
+        return;
+
+    JSCompartment *comp = obj->compartment();
+    if (comp->needsBarrier()) {
+        do { } while(0);
+        JSObject *tmp = obj->asObjectPtr();
+        MarkObjectUnbarriered(comp->barrierTracer(), &tmp, "write barrier");
+        do { } while(0);
+    }
+
+}
+
+             inline void
+js::ObjectImpl::writeBarrierPost(ObjectImpl *obj, void *addr)
+{
+}
+
+inline bool
+js::ObjectImpl::hasPrivate() const
+{
+    return getClass()->hasPrivate();
+}
+
+inline void *&
+js::ObjectImpl::privateRef(uint32_t nfixed) const
+{
+
+
+
+
+
+    do { } while(0);
+    do { } while(0);
+    HeapSlot *end = &fixedSlots()[nfixed];
+    return *reinterpret_cast<void**>(end);
+}
+
+inline void *
+js::ObjectImpl::getPrivate() const
+{
+    return privateRef(numFixedSlots());
+}
+
+inline void *
+js::ObjectImpl::getPrivate(uint32_t nfixed) const
+{
+    return privateRef(nfixed);
+}
+
+inline void
+js::ObjectImpl::setPrivate(void *data)
+{
+    void **pprivate = &privateRef(numFixedSlots());
+
+    privateWriteBarrierPre(pprivate);
+    *pprivate = data;
+    privateWriteBarrierPost(pprivate);
+}
+
+inline void
+js::ObjectImpl::setPrivateUnbarriered(void *data)
+{
+    void **pprivate = &privateRef(numFixedSlots());
+    *pprivate = data;
+}
+
+inline void
+js::ObjectImpl::initPrivate(void *data)
+{
+    privateRef(numFixedSlots()) = data;
+}
+# 24 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h" 2
+
+namespace js {
+
+namespace mjit {
+struct NativeAddressInfo;
+struct JSActiveFrame;
+}
+
+namespace Probes {
+# 64 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+extern bool ProfilingActive;
+
+extern const char nullName[];
+extern const char anonymousName[];
+
+
+JSBool startEngine();
+
+
+bool createRuntime(JSRuntime *rt);
+
+
+bool destroyRuntime(JSRuntime *rt);
+
+
+bool shutdown();
+
+
+
+
+
+
+bool callTrackingActive(JSContext *);
+
+
+
+
+
+bool wantNativeAddressInfo(JSContext *);
+
+
+bool enterJSFun(JSContext *, JSFunction *, JSScript *, int counter = 1);
+
+
+bool exitJSFun(JSContext *, JSFunction *, JSScript *, int counter = 0);
+
+
+bool startExecution(JSContext *cx, JSScript *script);
+
+
+bool stopExecution(JSContext *cx, JSScript *script);
+
+
+bool resizeHeap(JSCompartment *compartment, size_t oldSize, size_t newSize);
+
+
+
+
+bool createObject(JSContext *cx, JSObject *obj);
+
+
+bool objectResizeActive();
+
+
+bool resizeObject(JSContext *cx, JSObject *obj, size_t oldSize, size_t newSize);
+
+
+
+
+
+bool finalizeObject(JSObject *obj);
+# 134 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+bool createString(JSContext *cx, JSString *string, size_t length);
+
+
+
+
+
+
+bool finalizeString(JSString *string);
+
+
+bool compileScriptBegin(const char *filename, int lineno);
+
+
+bool compileScriptEnd(const char *filename, int lineno);
+
+
+bool calloutBegin(JSContext *cx, JSFunction *fun);
+
+
+bool calloutEnd(JSContext *cx, JSFunction *fun);
+
+
+bool acquireMemory(JSContext *cx, void *address, size_t nbytes);
+bool releaseMemory(JSContext *cx, void *address, size_t nbytes);
+# 170 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+bool GCStart();
+bool GCEnd();
+
+bool GCStartMarkPhase();
+bool GCEndMarkPhase();
+
+bool GCStartSweepPhase();
+bool GCEndSweepPhase();
+# 187 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+bool CustomMark(JSString *string);
+bool CustomMark(const char *string);
+bool CustomMark(int marker);
+
+
+
+enum JITReportGranularity {
+    JITREPORT_GRANULARITY_NONE = 0,
+    JITREPORT_GRANULARITY_FUNCTION = 1,
+    JITREPORT_GRANULARITY_LINE = 2,
+    JITREPORT_GRANULARITY_OP = 3
+};
+
+
+
+
+
+
+class JITWatcher {
+public:
+    struct NativeRegion {
+        mjit::JSActiveFrame *frame;
+        JSScript *script;
+        size_t inlinedOffset;
+        jsbytecode *pc;
+        jsbytecode *endpc;
+        uintptr_t mainOffset;
+        uintptr_t stubOffset;
+        bool enter;
+    };
+
+    typedef Vector<NativeRegion, 0, RuntimeAllocPolicy> RegionVector;
+
+    virtual JITReportGranularity granularityRequested() = 0;
+
+
+    static bool CollectNativeRegions(RegionVector &regions,
+                                     JSRuntime *rt,
+                                     mjit::JITChunk *jit,
+                                     mjit::JSActiveFrame *outerFrame,
+                                     mjit::JSActiveFrame **inlineFrames);
+
+    virtual void registerMJITCode(JSContext *cx, js::mjit::JITChunk *chunk,
+                                  mjit::JSActiveFrame *outerFrame,
+                                  mjit::JSActiveFrame **inlineFrames,
+                                  void *mainCodeAddress, size_t mainCodeSize,
+                                  void *stubCodeAddress, size_t stubCodeSize) = 0;
+
+    virtual void discardMJITCode(FreeOp *fop, mjit::JITScript *jscr, mjit::JITChunk *chunk,
+                                 void* address) = 0;
+
+    virtual void registerICCode(JSContext *cx,
+                                js::mjit::JITChunk *chunk, JSScript *script, jsbytecode* pc,
+                                void *start, size_t size) = 0;
+
+
+    virtual void discardExecutableRegion(void *start, size_t size) = 0;
+};
+
+
+
+
+
+bool
+addJITWatcher(JITWatcher *watcher);
+
+
+
+
+
+bool
+removeJITWatcher(JSRuntime *rt, JITWatcher *watcher);
+
+
+
+
+void
+removeAllJITWatchers(JSRuntime *rt);
+
+
+
+
+JITReportGranularity
+JITGranularityRequested();
+
+
+
+
+
+void
+registerMJITCode(JSContext *cx, js::mjit::JITChunk *chunk,
+                 mjit::JSActiveFrame *outerFrame,
+                 mjit::JSActiveFrame **inlineFrames,
+                 void *mainCodeAddress, size_t mainCodeSize,
+                 void *stubCodeAddress, size_t stubCodeSize);
+
+
+
+
+void
+discardMJITCode(FreeOp *fop, mjit::JITScript *jscr, mjit::JITChunk *chunk, void* address);
+
+
+
+
+void
+registerICCode(JSContext *cx,
+               mjit::JITChunk *chunk, JSScript *script, jsbytecode* pc,
+               void *start, size_t size);
+
+
+
+
+
+
+void
+discardExecutableRegion(void *start, size_t size);
+
+
+
+
+
+
+
+void DTraceEnterJSFun(JSContext *cx, JSFunction *fun, JSScript *script);
+void DTraceExitJSFun(JSContext *cx, JSFunction *fun, JSScript *script);
+# 350 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+}
+
+
+
+
+
+
+inline bool
+Probes::callTrackingActive(JSContext *cx)
+{
+# 372 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+    return false;
+}
+
+inline bool
+Probes::wantNativeAddressInfo(JSContext *cx)
+{
+    return (cx->reportGranularity >= JITREPORT_GRANULARITY_FUNCTION &&
+            JITGranularityRequested() >= JITREPORT_GRANULARITY_FUNCTION);
+}
+
+inline bool
+Probes::enterJSFun(JSContext *cx, JSFunction *fun, JSScript *script, int counter)
+{
+    bool ok = true;
+# 398 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+    return ok;
+}
+
+inline bool
+Probes::exitJSFun(JSContext *cx, JSFunction *fun, JSScript *script, int counter)
+{
+    bool ok = true;
+# 420 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+    return ok;
+}
+
+inline bool
+Probes::resizeHeap(JSCompartment *compartment, size_t oldSize, size_t newSize)
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+# 450 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+inline bool
+Probes::createObject(JSContext *cx, JSObject *obj)
+{
+    bool ok = true;
+# 464 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+    return ok;
+}
+
+inline bool
+Probes::finalizeObject(JSObject *obj)
+{
+    bool ok = true;
+# 485 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+    return ok;
+}
+
+inline bool
+Probes::objectResizeActive()
+{
+
+
+
+
+
+    return false;
+}
+
+inline bool
+Probes::resizeObject(JSContext *cx, JSObject *obj, size_t oldSize, size_t newSize)
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::createString(JSContext *cx, JSString *string, size_t length)
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::finalizeString(JSString *string)
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::compileScriptBegin(const char *filename, int lineno)
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::compileScriptEnd(const char *filename, int lineno)
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::calloutBegin(JSContext *cx, JSFunction *fun)
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::calloutEnd(JSContext *cx, JSFunction *fun)
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::acquireMemory(JSContext *cx, void *address, size_t nbytes)
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::releaseMemory(JSContext *cx, void *address, size_t nbytes)
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::GCStart()
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::GCEnd()
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::GCStartMarkPhase()
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::GCEndMarkPhase()
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::GCStartSweepPhase()
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::GCEndSweepPhase()
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::CustomMark(JSString *string)
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::CustomMark(const char *string)
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::CustomMark(int marker)
+{
+    bool ok = true;
+
+
+
+
+
+
+    return ok;
+}
+
+inline bool
+Probes::startExecution(JSContext *cx, JSScript *script)
+{
+    bool ok = true;
+# 748 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+    return ok;
+}
+
+inline bool
+Probes::stopExecution(JSContext *cx, JSScript *script)
+{
+    bool ok = true;
+# 766 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h"
+    return ok;
+}
+
+struct AutoFunctionCallProbe {
+    JSContext * const cx;
+    JSFunction *fun;
+    JSScript *script;
+   
+
+    AutoFunctionCallProbe(JSContext *cx, JSFunction *fun, JSScript *script
+                          )
+      : cx(cx), fun(fun), script(script)
+    {
+        do { } while (0);
+        Probes::enterJSFun(cx, fun, script);
+    }
+
+    ~AutoFunctionCallProbe() {
+        Probes::exitJSFun(cx, fun, script);
+    }
+};
+
+}
+# 23 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsproxy.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsproxy.h"
+#define jsproxy_h___ 
+
+
+
+
+namespace js {
+
+
+class __attribute__((visibility("default"))) BaseProxyHandler {
+    void *mFamily;
+  public:
+    explicit BaseProxyHandler(void *family);
+    virtual ~BaseProxyHandler();
+
+
+    virtual bool getPropertyDescriptor(JSContext *cx, JSObject *proxy, jsid id, bool set,
+                                       PropertyDescriptor *desc) = 0;
+    virtual bool getOwnPropertyDescriptor(JSContext *cx, JSObject *proxy, jsid id, bool set,
+                                          PropertyDescriptor *desc) = 0;
+    virtual bool defineProperty(JSContext *cx, JSObject *proxy, jsid id,
+                                PropertyDescriptor *desc) = 0;
+    virtual bool getOwnPropertyNames(JSContext *cx, JSObject *proxy, AutoIdVector &props) = 0;
+    virtual bool delete_(JSContext *cx, JSObject *proxy, jsid id, bool *bp) = 0;
+    virtual bool enumerate(JSContext *cx, JSObject *proxy, AutoIdVector &props) = 0;
+
+
+    virtual bool has(JSContext *cx, JSObject *proxy, jsid id, bool *bp);
+    virtual bool hasOwn(JSContext *cx, JSObject *proxy, jsid id, bool *bp);
+    virtual bool get(JSContext *cx, JSObject *proxy, JSObject *receiver, jsid id, Value *vp);
+    virtual bool set(JSContext *cx, JSObject *proxy, JSObject *receiver, jsid id, bool strict,
+                     Value *vp);
+    virtual bool keys(JSContext *cx, JSObject *proxy, AutoIdVector &props);
+    virtual bool iterate(JSContext *cx, JSObject *proxy, unsigned flags, Value *vp);
+
+
+    virtual bool call(JSContext *cx, JSObject *proxy, unsigned argc, Value *vp);
+    virtual bool construct(JSContext *cx, JSObject *proxy, unsigned argc, Value *argv, Value *rval);
+    virtual bool nativeCall(JSContext *cx, JSObject *proxy, Class *clasp, Native native, CallArgs args);
+    virtual bool hasInstance(JSContext *cx, JSObject *proxy, const Value *vp, bool *bp);
+    virtual JSType typeOf(JSContext *cx, JSObject *proxy);
+    virtual bool objectClassIs(JSObject *obj, ESClassValue classValue, JSContext *cx);
+    virtual JSString *obj_toString(JSContext *cx, JSObject *proxy);
+    virtual JSString *fun_toString(JSContext *cx, JSObject *proxy, unsigned indent);
+    virtual bool regexp_toShared(JSContext *cx, JSObject *proxy, RegExpGuard *g);
+    virtual bool defaultValue(JSContext *cx, JSObject *obj, JSType hint, Value *vp);
+    virtual bool iteratorNext(JSContext *cx, JSObject *proxy, Value *vp);
+    virtual void finalize(JSFreeOp *fop, JSObject *proxy);
+    virtual bool getElementIfPresent(JSContext *cx, JSObject *obj, JSObject *receiver,
+                                     uint32_t index, Value *vp, bool *present);
+
+    virtual bool isOuterWindow() {
+        return false;
+    }
+
+    inline void *family() {
+        return mFamily;
+    }
+};
+
+class __attribute__((visibility("default"))) IndirectProxyHandler : public BaseProxyHandler {
+  public:
+    explicit IndirectProxyHandler(void *family);
+
+
+    virtual bool getPropertyDescriptor(JSContext *cx, JSObject *proxy, jsid id,
+                                       bool set,
+                                       PropertyDescriptor *desc) ;
+    virtual bool getOwnPropertyDescriptor(JSContext *cx, JSObject *proxy,
+                                          jsid id, bool set,
+                                          PropertyDescriptor *desc) ;
+    virtual bool defineProperty(JSContext *cx, JSObject *proxy, jsid id,
+                                PropertyDescriptor *desc) ;
+    virtual bool getOwnPropertyNames(JSContext *cx, JSObject *proxy,
+                                     AutoIdVector &props) ;
+    virtual bool delete_(JSContext *cx, JSObject *proxy, jsid id,
+                         bool *bp) ;
+    virtual bool enumerate(JSContext *cx, JSObject *proxy,
+                           AutoIdVector &props) ;
+
+
+
+
+    virtual bool call(JSContext *cx, JSObject *proxy, unsigned argc,
+                      Value *vp) ;
+    virtual bool construct(JSContext *cx, JSObject *proxy, unsigned argc,
+                           Value *argv, Value *rval) ;
+    virtual bool nativeCall(JSContext *cx, JSObject *proxy, Class *clasp,
+                            Native native, CallArgs args) ;
+    virtual bool hasInstance(JSContext *cx, JSObject *proxy, const Value *vp,
+                             bool *bp) ;
+    virtual JSType typeOf(JSContext *cx, JSObject *proxy) ;
+    virtual bool objectClassIs(JSObject *obj, ESClassValue classValue,
+                               JSContext *cx) ;
+    virtual JSString *obj_toString(JSContext *cx, JSObject *proxy) ;
+    virtual JSString *fun_toString(JSContext *cx, JSObject *proxy,
+                                   unsigned indent) ;
+    virtual bool regexp_toShared(JSContext *cx, JSObject *proxy,
+                                 RegExpGuard *g) ;
+    virtual bool defaultValue(JSContext *cx, JSObject *obj, JSType hint,
+                              Value *vp) ;
+    virtual bool iteratorNext(JSContext *cx, JSObject *proxy,
+                              Value *vp) ;
+};
+
+class __attribute__((visibility("default"))) DirectProxyHandler : public IndirectProxyHandler {
+public:
+    explicit DirectProxyHandler(void *family);
+
+
+    virtual bool has(JSContext *cx, JSObject *proxy, jsid id,
+                     bool *bp) ;
+    virtual bool hasOwn(JSContext *cx, JSObject *proxy, jsid id,
+                        bool *bp) ;
+    virtual bool get(JSContext *cx, JSObject *proxy, JSObject *receiver,
+                     jsid id, Value *vp) ;
+    virtual bool set(JSContext *cx, JSObject *proxy, JSObject *receiver,
+                     jsid id, bool strict, Value *vp) ;
+    virtual bool keys(JSContext *cx, JSObject *proxy,
+                      AutoIdVector &props) ;
+    virtual bool iterate(JSContext *cx, JSObject *proxy, unsigned flags,
+                         Value *vp) ;
+};
+
+
+class Proxy {
+  public:
+
+    static bool getPropertyDescriptor(JSContext *cx, JSObject *proxy, jsid id, bool set,
+                                      PropertyDescriptor *desc);
+    static bool getPropertyDescriptor(JSContext *cx, JSObject *proxy, jsid id, bool set, Value *vp);
+    static bool getOwnPropertyDescriptor(JSContext *cx, JSObject *proxy, jsid id, bool set,
+                                         PropertyDescriptor *desc);
+    static bool getOwnPropertyDescriptor(JSContext *cx, JSObject *proxy, jsid id, bool set,
+                                         Value *vp);
+    static bool defineProperty(JSContext *cx, JSObject *proxy, jsid id, PropertyDescriptor *desc);
+    static bool defineProperty(JSContext *cx, JSObject *proxy, jsid id, const Value &v);
+    static bool getOwnPropertyNames(JSContext *cx, JSObject *proxy, AutoIdVector &props);
+    static bool delete_(JSContext *cx, JSObject *proxy, jsid id, bool *bp);
+    static bool enumerate(JSContext *cx, JSObject *proxy, AutoIdVector &props);
+
+
+    static bool has(JSContext *cx, JSObject *proxy, jsid id, bool *bp);
+    static bool hasOwn(JSContext *cx, JSObject *proxy, jsid id, bool *bp);
+    static bool get(JSContext *cx, JSObject *proxy, JSObject *receiver, jsid id, Value *vp);
+    static bool getElementIfPresent(JSContext *cx, JSObject *proxy, JSObject *receiver,
+                                    uint32_t index, Value *vp, bool *present);
+    static bool set(JSContext *cx, JSObject *proxy, JSObject *receiver, jsid id, bool strict,
+                    Value *vp);
+    static bool keys(JSContext *cx, JSObject *proxy, AutoIdVector &props);
+    static bool iterate(JSContext *cx, JSObject *proxy, unsigned flags, Value *vp);
+
+
+    static bool call(JSContext *cx, JSObject *proxy, unsigned argc, Value *vp);
+    static bool construct(JSContext *cx, JSObject *proxy, unsigned argc, Value *argv, Value *rval);
+    static bool nativeCall(JSContext *cx, JSObject *proxy, Class *clasp, Native native, CallArgs args);
+    static bool hasInstance(JSContext *cx, JSObject *proxy, const Value *vp, bool *bp);
+    static JSType typeOf(JSContext *cx, JSObject *proxy);
+    static bool objectClassIs(JSObject *obj, ESClassValue classValue, JSContext *cx);
+    static JSString *obj_toString(JSContext *cx, JSObject *proxy);
+    static JSString *fun_toString(JSContext *cx, JSObject *proxy, unsigned indent);
+    static bool regexp_toShared(JSContext *cx, JSObject *proxy, RegExpGuard *g);
+    static bool defaultValue(JSContext *cx, JSObject *obj, JSType hint, Value *vp);
+    static bool iteratorNext(JSContext *cx, JSObject *proxy, Value *vp);
+};
+
+inline bool IsObjectProxyClass(const Class *clasp)
+{
+    return clasp == &js::ObjectProxyClass || clasp == &js::OuterWindowProxyClass;
+}
+
+inline bool IsFunctionProxyClass(const Class *clasp)
+{
+    return clasp == &js::FunctionProxyClass;
+}
+
+inline bool IsObjectProxy(const JSObject *obj)
+{
+    return IsObjectProxyClass(GetObjectClass(obj));
+}
+
+inline bool IsFunctionProxy(const JSObject *obj)
+{
+    return IsFunctionProxyClass(GetObjectClass(obj));
+}
+
+inline bool IsProxy(const JSObject *obj)
+{
+    Class *clasp = GetObjectClass(obj);
+    return IsObjectProxyClass(clasp) || IsFunctionProxyClass(clasp);
+}
+
+
+const uint32_t JSSLOT_PROXY_HANDLER = 0;
+const uint32_t JSSLOT_PROXY_PRIVATE = 1;
+const uint32_t JSSLOT_PROXY_EXTRA = 2;
+
+const uint32_t JSSLOT_PROXY_CALL = 4;
+const uint32_t JSSLOT_PROXY_CONSTRUCT = 5;
+
+inline BaseProxyHandler *
+GetProxyHandler(const JSObject *obj)
+{
+    do { } while(0);
+    return (BaseProxyHandler *) GetReservedSlot(obj, JSSLOT_PROXY_HANDLER).toPrivate();
+}
+
+inline const Value &
+GetProxyPrivate(const JSObject *obj)
+{
+    do { } while(0);
+    return GetReservedSlot(obj, JSSLOT_PROXY_PRIVATE);
+}
+
+inline JSObject *
+GetProxyTargetObject(const JSObject *obj)
+{
+    do { } while(0);
+    return GetProxyPrivate(obj).toObjectOrNull();
+}
+
+inline const Value &
+GetProxyCall(const JSObject *obj)
+{
+    do { } while(0);
+    return GetReservedSlot(obj, JSSLOT_PROXY_CALL);
+}
+
+inline const Value &
+GetProxyExtra(const JSObject *obj, size_t n)
+{
+    do { } while(0);
+    return GetReservedSlot(obj, JSSLOT_PROXY_EXTRA + n);
+}
+
+inline void
+SetProxyHandler(JSObject *obj, BaseProxyHandler *handler)
+{
+    do { } while(0);
+    SetReservedSlot(obj, JSSLOT_PROXY_HANDLER, PrivateValue(handler));
+}
+
+inline void
+SetProxyPrivate(JSObject *obj, const Value &value)
+{
+    do { } while(0);
+    SetReservedSlot(obj, JSSLOT_PROXY_PRIVATE, value);
+}
+
+inline void
+SetProxyExtra(JSObject *obj, size_t n, const Value &extra)
+{
+    do { } while(0);
+    do { } while(0);
+    SetReservedSlot(obj, JSSLOT_PROXY_EXTRA + n, extra);
+}
+
+__attribute__((visibility("default"))) JSObject *
+NewProxyObject(JSContext *cx, BaseProxyHandler *handler, const Value &priv,
+               JSObject *proto, JSObject *parent,
+               JSObject *call = __null, JSObject *construct = __null);
+
+}
+
+extern "C" {
+
+extern __attribute__((visibility("default"))) JSObject *
+js_InitProxyClass(JSContext *cx, JSObject *obj);
+
+}
+# 25 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypedarray.h" 1
+
+
+
+
+
+
+
+#define jstypedarray_h 
+
+
+
+
+
+
+
+typedef struct JSProperty JSProperty;
+
+namespace js {
+# 28 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypedarray.h"
+class ArrayBufferObject : public JSObject
+{
+  public:
+    static Class protoClass;
+    static JSPropertySpec jsprops[];
+    static JSFunctionSpec jsfuncs[];
+
+    static JSBool prop_getByteLength(JSContext *cx, HandleObject obj, HandleId id, Value *vp);
+
+    static JSBool fun_slice(JSContext *cx, unsigned argc, Value *vp);
+
+    static JSBool class_constructor(JSContext *cx, unsigned argc, Value *vp);
+
+    static JSObject *create(JSContext *cx, uint32_t nbytes, uint8_t *contents = __null);
+
+    static JSObject *createSlice(JSContext *cx, ArrayBufferObject &arrayBuffer,
+                                 uint32_t begin, uint32_t end);
+
+    static void
+    obj_trace(JSTracer *trc, JSObject *obj);
+
+    static JSBool
+    obj_lookupGeneric(JSContext *cx, HandleObject obj, HandleId id,
+                      JSObject **objp, JSProperty **propp);
+    static JSBool
+    obj_lookupProperty(JSContext *cx, HandleObject obj, HandlePropertyName name,
+                       JSObject **objp, JSProperty **propp);
+    static JSBool
+    obj_lookupElement(JSContext *cx, HandleObject obj, uint32_t index,
+                      JSObject **objp, JSProperty **propp);
+    static JSBool
+    obj_lookupSpecial(JSContext *cx, HandleObject obj, HandleSpecialId sid, JSObject **objp,
+                      JSProperty **propp);
+
+    static JSBool
+    obj_defineGeneric(JSContext *cx, HandleObject obj, HandleId id, const Value *v,
+                      PropertyOp getter, StrictPropertyOp setter, unsigned attrs);
+    static JSBool
+    obj_defineProperty(JSContext *cx, HandleObject obj, HandlePropertyName name, const Value *v,
+                       PropertyOp getter, StrictPropertyOp setter, unsigned attrs);
+    static JSBool
+    obj_defineElement(JSContext *cx, HandleObject obj, uint32_t index, const Value *v,
+                      PropertyOp getter, StrictPropertyOp setter, unsigned attrs);
+    static JSBool
+    obj_defineSpecial(JSContext *cx, HandleObject obj, HandleSpecialId sid, const Value *v,
+                      PropertyOp getter, StrictPropertyOp setter, unsigned attrs);
+
+    static JSBool
+    obj_getGeneric(JSContext *cx, HandleObject obj, HandleObject receiver, HandleId id, Value *vp);
+
+    static JSBool
+    obj_getProperty(JSContext *cx, HandleObject obj, HandleObject receiver, HandlePropertyName name,
+                    Value *vp);
+
+    static JSBool
+    obj_getElement(JSContext *cx, HandleObject obj, HandleObject receiver, uint32_t index, Value *vp);
+    static JSBool
+    obj_getElementIfPresent(JSContext *cx, HandleObject obj, HandleObject receiver, uint32_t index,
+                            Value *vp, bool *present);
+
+    static JSBool
+    obj_getSpecial(JSContext *cx, HandleObject obj, HandleObject receiver, HandleSpecialId sid, Value *vp);
+
+    static JSBool
+    obj_setGeneric(JSContext *cx, HandleObject obj, HandleId id, Value *vp, JSBool strict);
+    static JSBool
+    obj_setProperty(JSContext *cx, HandleObject obj, HandlePropertyName name, Value *vp, JSBool strict);
+    static JSBool
+    obj_setElement(JSContext *cx, HandleObject obj, uint32_t index, Value *vp, JSBool strict);
+    static JSBool
+    obj_setSpecial(JSContext *cx, HandleObject obj, HandleSpecialId sid, Value *vp, JSBool strict);
+
+    static JSBool
+    obj_getGenericAttributes(JSContext *cx, HandleObject obj, HandleId id, unsigned *attrsp);
+    static JSBool
+    obj_getPropertyAttributes(JSContext *cx, HandleObject obj, HandlePropertyName name, unsigned *attrsp);
+    static JSBool
+    obj_getElementAttributes(JSContext *cx, HandleObject obj, uint32_t index, unsigned *attrsp);
+    static JSBool
+    obj_getSpecialAttributes(JSContext *cx, HandleObject obj, HandleSpecialId sid, unsigned *attrsp);
+
+    static JSBool
+    obj_setGenericAttributes(JSContext *cx, HandleObject obj, HandleId id, unsigned *attrsp);
+    static JSBool
+    obj_setPropertyAttributes(JSContext *cx, HandleObject obj, HandlePropertyName name, unsigned *attrsp);
+    static JSBool
+    obj_setElementAttributes(JSContext *cx, HandleObject obj, uint32_t index, unsigned *attrsp);
+    static JSBool
+    obj_setSpecialAttributes(JSContext *cx, HandleObject obj, HandleSpecialId sid, unsigned *attrsp);
+
+    static JSBool
+    obj_deleteProperty(JSContext *cx, HandleObject obj, HandlePropertyName name, Value *rval, JSBool strict);
+    static JSBool
+    obj_deleteElement(JSContext *cx, HandleObject obj, uint32_t index, Value *rval, JSBool strict);
+    static JSBool
+    obj_deleteSpecial(JSContext *cx, HandleObject obj, HandleSpecialId sid, Value *rval, JSBool strict);
+
+    static JSBool
+    obj_enumerate(JSContext *cx, HandleObject obj, JSIterateOp enum_op,
+                  Value *statep, jsid *idp);
+
+    static JSType
+    obj_typeOf(JSContext *cx, HandleObject obj);
+
+    bool
+    allocateSlots(JSContext *cx, uint32_t size, uint8_t *contents = __null);
+
+    inline uint32_t byteLength() const;
+
+    inline uint8_t * dataPointer() const;
+
+
+
+
+
+    inline bool hasData() const;
+};
+# 154 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jstypedarray.h"
+struct TypedArray {
+    enum {
+        TYPE_INT8 = 0,
+        TYPE_UINT8,
+        TYPE_INT16,
+        TYPE_UINT16,
+        TYPE_INT32,
+        TYPE_UINT32,
+        TYPE_FLOAT32,
+        TYPE_FLOAT64,
+
+
+
+
+
+        TYPE_UINT8_CLAMPED,
+
+        TYPE_MAX
+    };
+
+    enum {
+
+        FIELD_LENGTH = 0,
+        FIELD_BYTEOFFSET,
+        FIELD_BYTELENGTH,
+        FIELD_TYPE,
+        FIELD_BUFFER,
+        FIELD_MAX,
+        NUM_FIXED_SLOTS = 7
+    };
+
+
+    static Class classes[TYPE_MAX];
+
+
+
+    static Class protoClasses[TYPE_MAX];
+
+    static JSPropertySpec jsprops[];
+
+    static JSBool prop_getBuffer(JSContext *cx, HandleObject obj, HandleId id, Value *vp);
+    static JSBool prop_getByteOffset(JSContext *cx, HandleObject obj, HandleId id, Value *vp);
+    static JSBool prop_getByteLength(JSContext *cx, HandleObject obj, HandleId id, Value *vp);
+    static JSBool prop_getLength(JSContext *cx, HandleObject obj, HandleId id, Value *vp);
+
+    static JSBool obj_lookupGeneric(JSContext *cx, HandleObject obj, HandleId id,
+                                    JSObject **objp, JSProperty **propp);
+    static JSBool obj_lookupProperty(JSContext *cx, HandleObject obj, HandlePropertyName name,
+                                     JSObject **objp, JSProperty **propp);
+    static JSBool obj_lookupElement(JSContext *cx, HandleObject obj, uint32_t index,
+                                    JSObject **objp, JSProperty **propp);
+    static JSBool obj_lookupSpecial(JSContext *cx, HandleObject obj, HandleSpecialId sid,
+                                    JSObject **objp, JSProperty **propp);
+
+    static JSBool obj_getGenericAttributes(JSContext *cx, HandleObject obj, HandleId id, unsigned *attrsp);
+    static JSBool obj_getPropertyAttributes(JSContext *cx, HandleObject obj, HandlePropertyName name, unsigned *attrsp);
+    static JSBool obj_getElementAttributes(JSContext *cx, HandleObject obj, uint32_t index, unsigned *attrsp);
+    static JSBool obj_getSpecialAttributes(JSContext *cx, HandleObject obj, HandleSpecialId sid, unsigned *attrsp);
+
+    static JSBool obj_setGenericAttributes(JSContext *cx, HandleObject obj, HandleId id, unsigned *attrsp);
+    static JSBool obj_setPropertyAttributes(JSContext *cx, HandleObject obj, HandlePropertyName name, unsigned *attrsp);
+    static JSBool obj_setElementAttributes(JSContext *cx, HandleObject obj, uint32_t index, unsigned *attrsp);
+    static JSBool obj_setSpecialAttributes(JSContext *cx, HandleObject obj, HandleSpecialId sid, unsigned *attrsp);
+
+    static uint32_t getLength(JSObject *obj);
+    static uint32_t getByteOffset(JSObject *obj);
+    static uint32_t getByteLength(JSObject *obj);
+    static uint32_t getType(JSObject *obj);
+    static ArrayBufferObject * getBuffer(JSObject *obj);
+    static void * getDataOffset(JSObject *obj);
+
+  public:
+    static bool
+    isArrayIndex(JSContext *cx, JSObject *obj, jsid id, uint32_t *ip = __null);
+
+    static inline uint32_t slotWidth(int atype) {
+        switch (atype) {
+          case js::TypedArray::TYPE_INT8:
+          case js::TypedArray::TYPE_UINT8:
+          case js::TypedArray::TYPE_UINT8_CLAMPED:
+            return 1;
+          case js::TypedArray::TYPE_INT16:
+          case js::TypedArray::TYPE_UINT16:
+            return 2;
+          case js::TypedArray::TYPE_INT32:
+          case js::TypedArray::TYPE_UINT32:
+          case js::TypedArray::TYPE_FLOAT32:
+            return 4;
+          case js::TypedArray::TYPE_FLOAT64:
+            return 8;
+          default:
+            __builtin_unreachable();
+            return 0;
+        }
+    }
+
+    static inline int slotWidth(JSObject *obj) {
+        return slotWidth(getType(obj));
+    }
+
+    static int lengthOffset();
+    static int dataOffset();
+};
+
+inline bool
+IsTypedArrayClass(const Class *clasp)
+{
+    return &TypedArray::classes[0] <= clasp &&
+           clasp < &TypedArray::classes[TypedArray::TYPE_MAX];
+}
+
+inline bool
+IsTypedArrayProtoClass(const Class *clasp)
+{
+    return &TypedArray::protoClasses[0] <= clasp &&
+           clasp < &TypedArray::protoClasses[TypedArray::TYPE_MAX];
+}
+
+inline bool
+IsTypedArray(JSObject *obj)
+{
+    return IsTypedArrayClass(obj->getClass());
+}
+
+inline bool
+IsTypedArrayProto(JSObject *obj)
+{
+    return IsTypedArrayProtoClass(obj->getClass());
+}
+
+class DataViewObject : public JSObject
+{
+    static Class protoClass;
+
+    static const size_t BYTEOFFSET_SLOT = 0;
+    static const size_t BYTELENGTH_SLOT = 1;
+    static const size_t BUFFER_SLOT = 2;
+
+  public:
+    static const size_t RESERVED_SLOTS = 3;
+
+    static JSBool prop_getBuffer(JSContext *cx, HandleObject obj, HandleId id, Value *vp);
+    static JSBool prop_getByteOffset(JSContext *cx, HandleObject obj, HandleId id, Value *vp);
+    static JSBool prop_getByteLength(JSContext *cx, HandleObject obj, HandleId id, Value *vp);
+
+    static JSBool class_constructor(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool constructWithProto(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool construct(JSContext *cx, JSObject *bufobj, const CallArgs &args, JSObject *proto);
+
+    static inline DataViewObject *
+    create(JSContext *cx, uint32_t byteOffset, uint32_t byteLength,
+           Handle<ArrayBufferObject*> arrayBuffer, JSObject *proto);
+
+    static JSBool fun_getInt8(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_getUint8(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_getInt16(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_getUint16(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_getInt32(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_getUint32(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_getFloat32(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_getFloat64(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_setInt8(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_setUint8(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_setInt16(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_setUint16(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_setInt32(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_setUint32(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_setFloat32(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool fun_setFloat64(JSContext *cx, unsigned argc, Value *vp);
+    inline uint32_t byteLength();
+    inline uint32_t byteOffset();
+    inline JSObject & arrayBuffer();
+    inline void *dataPointer();
+    inline bool hasBuffer() const;
+    static JSObject *initClass(JSContext *cx, GlobalObject *global);
+    bool getDataPointer(JSContext *cx, CallArgs args, size_t typeSize, uint8_t **data);
+    template<typename NativeType>
+    bool read(JSContext *cx, CallArgs &args, NativeType *val, const char *method);
+    template<typename NativeType>
+    bool write(JSContext *cx, CallArgs &args, const char *method);
+  private:
+    static JSPropertySpec jsprops[];
+    static JSFunctionSpec jsfuncs[];
+};
+
+bool
+IsDataView(JSObject *obj);
+
+}
+# 28 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsxml.h" 1
+
+
+
+
+
+
+
+#define jsxml_h___ 
+# 18 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsxml.h"
+extern const char js_AnyName_str[];
+extern const char js_AttributeName_str[];
+extern const char js_isXMLName_str[];
+extern const char js_XMLList_str[];
+
+extern const char js_amp_entity_str[];
+extern const char js_gt_entity_str[];
+extern const char js_lt_entity_str[];
+extern const char js_quot_entity_str[];
+
+template<class T>
+struct JSXMLArrayCursor;
+
+template<class T>
+struct JSXMLArray
+{
+    uint32_t length;
+    uint32_t capacity;
+    js::HeapPtr<T> *vector;
+    JSXMLArrayCursor<T> *cursors;
+
+    void init() {
+        length = capacity = 0;
+        vector = __null;
+        cursors = __null;
+    }
+
+    void finish(js::FreeOp *fop);
+
+    bool setCapacity(JSContext *cx, uint32_t capacity);
+    void trim();
+};
+
+template<class T>
+struct JSXMLArrayCursor
+{
+    typedef js::HeapPtr<T> HeapPtrT;
+
+    JSXMLArray<T> *array;
+    uint32_t index;
+    JSXMLArrayCursor<T> *next;
+    JSXMLArrayCursor<T> **prevp;
+    HeapPtrT root;
+
+    JSXMLArrayCursor(JSXMLArray<T> *array)
+      : array(array), index(0), next(array->cursors), prevp(&array->cursors),
+        root(__null)
+    {
+        if (next)
+            next->prevp = &next;
+        array->cursors = this;
+    }
+
+    ~JSXMLArrayCursor() { disconnect(); }
+
+    void disconnect() {
+        if (!array)
+            return;
+        if (next)
+            next->prevp = prevp;
+        *prevp = next;
+        array = __null;
+        root.~HeapPtrT();
+    }
+
+    T *getNext() {
+        if (!array || index >= array->length)
+            return __null;
+        return root = array->vector[index++];
+    }
+
+    T *getCurrent() {
+        if (!array || index >= array->length)
+            return __null;
+        return root = array->vector[index];
+    }
+};
+
+void js_XMLArrayCursorTrace(JSTracer *trc, JSXMLArrayCursor<JSXML> *cursor);
+void js_XMLArrayCursorTrace(JSTracer *trc, JSXMLArrayCursor<JSObject> *cursor);
+
+#define JSXML_PRESET_CAPACITY JS_BIT(31)
+#define JSXML_CAPACITY_MASK JS_BITMASK(31)
+#define JSXML_CAPACITY(array) ((array)->capacity & JSXML_CAPACITY_MASK)
+
+
+
+
+
+typedef enum JSXMLClass {
+    JSXML_CLASS_LIST,
+    JSXML_CLASS_ELEMENT,
+    JSXML_CLASS_ATTRIBUTE,
+    JSXML_CLASS_PROCESSING_INSTRUCTION,
+    JSXML_CLASS_TEXT,
+    JSXML_CLASS_COMMENT,
+    JSXML_CLASS_LIMIT
+} JSXMLClass;
+
+#define JSXML_CLASS_HAS_KIDS(class_) ((class_) < JSXML_CLASS_ATTRIBUTE)
+#define JSXML_CLASS_HAS_VALUE(class_) ((class_) >= JSXML_CLASS_ATTRIBUTE)
+#define JSXML_CLASS_HAS_NAME(class_) ((unsigned)((class_) - JSXML_CLASS_ELEMENT) <= (unsigned)(JSXML_CLASS_PROCESSING_INSTRUCTION - JSXML_CLASS_ELEMENT))
+
+
+
+
+
+
+
+typedef struct JSXMLListVar {
+    JSXMLArray<JSXML> kids;
+    js::HeapPtrXML target;
+    js::HeapPtrObject targetprop;
+} JSXMLListVar;
+
+typedef struct JSXMLElemVar {
+    JSXMLArray<JSXML> kids;
+    JSXMLArray<JSObject> namespaces;
+    JSXMLArray<JSXML> attrs;
+} JSXMLElemVar;
+
+
+#define xml_kids list.kids
+#define xml_target list.target
+#define xml_targetprop list.targetprop
+#define xml_namespaces elem.namespaces
+#define xml_attrs elem.attrs
+#define xml_value value
+
+
+#define JSXML_HAS_KIDS(xml) JSXML_CLASS_HAS_KIDS((xml)->xml_class)
+#define JSXML_HAS_VALUE(xml) JSXML_CLASS_HAS_VALUE((xml)->xml_class)
+#define JSXML_HAS_NAME(xml) JSXML_CLASS_HAS_NAME((xml)->xml_class)
+#define JSXML_LENGTH(xml) (JSXML_CLASS_HAS_KIDS((xml)->xml_class) ? (xml)->xml_kids.length : 0)
+
+
+
+struct JSXML : js::gc::Cell {
+
+
+
+
+    js::HeapPtrObject object;
+    void *domnode;
+    js::HeapPtrXML parent;
+    js::HeapPtrObject name;
+    uint32_t xml_class;
+    uint32_t xml_flags;
+
+    JSXMLListVar list;
+    JSXMLElemVar elem;
+    js::HeapPtrString value;
+
+
+
+    void *pad;
+
+
+    void finalize(js::FreeOp *fop);
+
+    static void writeBarrierPre(JSXML *xml);
+    static void writeBarrierPost(JSXML *xml, void *addr);
+};
+
+
+#define XMLF_WHITESPACE_TEXT 0x1
+
+extern JSXML *
+js_NewXML(JSContext *cx, JSXMLClass xml_class);
+
+extern void
+js_TraceXML(JSTracer *trc, JSXML *xml);
+
+extern JSObject *
+js_NewXMLObject(JSContext *cx, JSXMLClass xml_class);
+
+extern JSObject *
+js_GetXMLObject(JSContext *cx, JSXML *xml);
+
+extern JSObject *
+js_InitNamespaceClass(JSContext *cx, JSObject *obj);
+
+extern JSObject *
+js_InitQNameClass(JSContext *cx, JSObject *obj);
+
+extern JSObject *
+js_InitXMLClass(JSContext *cx, JSObject *obj);
+
+extern JSObject *
+js_InitXMLClasses(JSContext *cx, JSObject *obj);
+
+
+
+
+
+extern bool
+js_GetLocalNameFromFunctionQName(JSObject *obj, jsid *funidp, JSContext *cx);
+
+extern JSBool
+js_GetDefaultXMLNamespace(JSContext *cx, jsval *vp);
+
+extern JSBool
+js_SetDefaultXMLNamespace(JSContext *cx, const js::Value &v);
+
+
+
+
+
+
+extern JSBool
+js_IsXMLName(JSContext *cx, jsval v);
+
+extern JSBool
+js_ToAttributeName(JSContext *cx, js::Value *vp);
+
+extern JSFlatString *
+js_EscapeAttributeValue(JSContext *cx, JSString *str, JSBool quote);
+
+extern JSString *
+js_AddAttributePart(JSContext *cx, JSBool isName, JSString *str,
+                    JSString *str2);
+
+extern JSFlatString *
+js_EscapeElementValue(JSContext *cx, JSString *str);
+
+extern JSString *
+js_ValueToXMLString(JSContext *cx, const js::Value &v);
+
+extern JSObject *
+js_ConstructXMLQNameObject(JSContext *cx, const js::Value & nsval,
+                           const js::Value & lnval);
+
+extern JSBool
+js_GetAnyName(JSContext *cx, jsid *idp);
+
+
+
+
+extern JSBool
+js_FindXMLProperty(JSContext *cx, const js::Value &nameval, JSObject **objp, jsid *idp);
+
+extern JSBool
+js_GetXMLMethod(JSContext *cx, js::HandleObject obj, jsid id, js::Value *vp);
+
+extern JSBool
+js_GetXMLDescendants(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
+
+extern JSBool
+js_DeleteXMLListElements(JSContext *cx, JSObject *listobj);
+
+extern JSBool
+js_StepXMLListFilter(JSContext *cx, JSBool initialized);
+
+extern JSObject *
+js_ValueToXMLObject(JSContext *cx, const js::Value &v);
+
+extern JSObject *
+js_ValueToXMLListObject(JSContext *cx, const js::Value &v);
+
+extern JSObject *
+js_NewXMLSpecialObject(JSContext *cx, JSXMLClass xml_class, JSString *name,
+                       JSString *value);
+
+extern JSString *
+js_MakeXMLCDATAString(JSContext *cx, JSString *str);
+
+extern JSString *
+js_MakeXMLCommentString(JSContext *cx, JSString *str);
+
+extern JSString *
+js_MakeXMLPIString(JSContext *cx, JSString *name, JSString *str);
+
+
+extern JSBool
+js_TestXMLEquality(JSContext *cx, const js::Value &v1, const js::Value &v2,
+                   JSBool *bp);
+
+extern JSBool
+js_ConcatenateXML(JSContext *cx, JSObject *obj1, JSObject *obj2, js::Value *vp);
+
+namespace js {
+
+extern bool
+GetLocalNameFromFunctionQName(JSObject *qn, JSAtom **namep, JSContext *cx);
+
+}
+# 29 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jswrapper.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jswrapper.h"
+#define jswrapper_h___ 
+
+
+
+
+
+
+namespace js {
+
+class DummyFrameGuard;
+
+
+
+
+
+
+class __attribute__((visibility("default"))) AbstractWrapper : public IndirectProxyHandler
+{
+    unsigned mFlags;
+  public:
+    unsigned flags() const { return mFlags; }
+
+    explicit AbstractWrapper(unsigned flags);
+
+
+    virtual bool getPropertyDescriptor(JSContext *cx, JSObject *wrapper, jsid id, bool set,
+                                       PropertyDescriptor *desc) ;
+    virtual bool getOwnPropertyDescriptor(JSContext *cx, JSObject *wrapper, jsid id, bool set,
+                                          PropertyDescriptor *desc) ;
+    virtual bool defineProperty(JSContext *cx, JSObject *wrapper, jsid id,
+                                PropertyDescriptor *desc) ;
+    virtual bool getOwnPropertyNames(JSContext *cx, JSObject *wrapper, AutoIdVector &props) ;
+    virtual bool delete_(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) ;
+    virtual bool enumerate(JSContext *cx, JSObject *wrapper, AutoIdVector &props) ;
+# 72 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jswrapper.h"
+    enum Action { GET, SET, CALL, PUNCTURE };
+    virtual bool enter(JSContext *cx, JSObject *wrapper, jsid id, Action act, bool *bp);
+    virtual void leave(JSContext *cx, JSObject *wrapper);
+
+    static JSObject *wrappedObject(const JSObject *wrapper);
+    static AbstractWrapper *wrapperHandler(const JSObject *wrapper);
+};
+
+
+class __attribute__((visibility("default"))) DirectWrapper : public AbstractWrapper
+{
+  public:
+    explicit DirectWrapper(unsigned flags);
+
+    typedef enum { PermitObjectAccess, PermitPropertyAccess, DenyAccess } Permission;
+
+    virtual ~DirectWrapper();
+
+
+    virtual bool has(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) ;
+    virtual bool hasOwn(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) ;
+    virtual bool get(JSContext *cx, JSObject *wrapper, JSObject *receiver, jsid id, Value *vp) ;
+    virtual bool set(JSContext *cx, JSObject *wrapper, JSObject *receiver, jsid id, bool strict,
+                     Value *vp) ;
+    virtual bool keys(JSContext *cx, JSObject *wrapper, AutoIdVector &props) ;
+    virtual bool iterate(JSContext *cx, JSObject *wrapper, unsigned flags, Value *vp) ;
+
+
+    virtual bool call(JSContext *cx, JSObject *wrapper, unsigned argc, Value *vp) ;
+    virtual bool construct(JSContext *cx, JSObject *wrapper, unsigned argc, Value *argv, Value *rval) ;
+    virtual bool nativeCall(JSContext *cx, JSObject *wrapper, Class *clasp, Native native, CallArgs args) ;
+    virtual bool hasInstance(JSContext *cx, JSObject *wrapper, const Value *vp, bool *bp) ;
+    virtual JSString *obj_toString(JSContext *cx, JSObject *wrapper) ;
+    virtual JSString *fun_toString(JSContext *cx, JSObject *wrapper, unsigned indent) ;
+
+    using AbstractWrapper::Action;
+
+    static DirectWrapper singleton;
+
+    static JSObject *New(JSContext *cx, JSObject *obj, JSObject *proto, JSObject *parent,
+                         DirectWrapper *handler);
+
+    using AbstractWrapper::wrappedObject;
+    using AbstractWrapper::wrapperHandler;
+
+    enum {
+        CROSS_COMPARTMENT = 1 << 0,
+        LAST_USED_FLAG = CROSS_COMPARTMENT
+    };
+
+    static void *getWrapperFamily();
+};
+
+
+
+
+
+typedef DirectWrapper Wrapper;
+
+
+class __attribute__((visibility("default"))) CrossCompartmentWrapper : public DirectWrapper
+{
+  public:
+    CrossCompartmentWrapper(unsigned flags);
+
+    virtual ~CrossCompartmentWrapper();
+
+
+    virtual bool getPropertyDescriptor(JSContext *cx, JSObject *wrapper, jsid id, bool set,
+                                       PropertyDescriptor *desc) ;
+    virtual bool getOwnPropertyDescriptor(JSContext *cx, JSObject *wrapper, jsid id, bool set,
+                                          PropertyDescriptor *desc) ;
+    virtual bool defineProperty(JSContext *cx, JSObject *wrapper, jsid id,
+                                PropertyDescriptor *desc) ;
+    virtual bool getOwnPropertyNames(JSContext *cx, JSObject *wrapper, AutoIdVector &props) ;
+    virtual bool delete_(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) ;
+    virtual bool enumerate(JSContext *cx, JSObject *wrapper, AutoIdVector &props) ;
+
+
+    virtual bool has(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) ;
+    virtual bool hasOwn(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) ;
+    virtual bool get(JSContext *cx, JSObject *wrapper, JSObject *receiver, jsid id, Value *vp) ;
+    virtual bool set(JSContext *cx, JSObject *wrapper, JSObject *receiver, jsid id, bool strict,
+                     Value *vp) ;
+    virtual bool keys(JSContext *cx, JSObject *wrapper, AutoIdVector &props) ;
+    virtual bool iterate(JSContext *cx, JSObject *wrapper, unsigned flags, Value *vp) ;
+
+
+    virtual bool call(JSContext *cx, JSObject *wrapper, unsigned argc, Value *vp) ;
+    virtual bool construct(JSContext *cx, JSObject *wrapper, unsigned argc, Value *argv, Value *rval) ;
+    virtual bool nativeCall(JSContext *cx, JSObject *wrapper, Class *clasp, Native native, CallArgs args) ;
+    virtual bool hasInstance(JSContext *cx, JSObject *wrapper, const Value *vp, bool *bp) ;
+    virtual JSString *obj_toString(JSContext *cx, JSObject *wrapper) ;
+    virtual JSString *fun_toString(JSContext *cx, JSObject *wrapper, unsigned indent) ;
+    virtual bool regexp_toShared(JSContext *cx, JSObject *proxy, RegExpGuard *g) ;
+    virtual bool defaultValue(JSContext *cx, JSObject *wrapper, JSType hint, Value *vp) ;
+    virtual bool iteratorNext(JSContext *cx, JSObject *wrapper, Value *vp);
+
+    static CrossCompartmentWrapper singleton;
+};
+# 182 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jswrapper.h"
+template <class Base>
+class __attribute__((visibility("default"))) SecurityWrapper : public Base
+{
+  public:
+    SecurityWrapper(unsigned flags);
+
+    virtual bool nativeCall(JSContext *cx, JSObject *wrapper, Class *clasp, Native native, CallArgs args) ;
+    virtual bool objectClassIs(JSObject *obj, ESClassValue classValue, JSContext *cx) ;
+    virtual bool regexp_toShared(JSContext *cx, JSObject *proxy, RegExpGuard *g) ;
+};
+
+typedef SecurityWrapper<DirectWrapper> SameCompartmentSecurityWrapper;
+typedef SecurityWrapper<CrossCompartmentWrapper> CrossCompartmentSecurityWrapper;
+
+
+
+
+
+class __attribute__((visibility("default"))) ForceFrame
+{
+  public:
+    JSContext * const context;
+    JSObject * const target;
+  private:
+    DummyFrameGuard *frame;
+
+  public:
+    ForceFrame(JSContext *cx, JSObject *target);
+    ~ForceFrame();
+    bool enter();
+};
+
+
+class __attribute__((visibility("default"))) DeadObjectProxy : public BaseProxyHandler
+{
+  public:
+    static int sDeadObjectFamily;
+
+    explicit DeadObjectProxy();
+
+
+    virtual bool getPropertyDescriptor(JSContext *cx, JSObject *wrapper, jsid id, bool set,
+                                       PropertyDescriptor *desc) ;
+    virtual bool getOwnPropertyDescriptor(JSContext *cx, JSObject *wrapper, jsid id, bool set,
+                                          PropertyDescriptor *desc) ;
+    virtual bool defineProperty(JSContext *cx, JSObject *wrapper, jsid id,
+                                PropertyDescriptor *desc) ;
+    virtual bool getOwnPropertyNames(JSContext *cx, JSObject *wrapper, AutoIdVector &props) ;
+    virtual bool delete_(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) ;
+    virtual bool enumerate(JSContext *cx, JSObject *wrapper, AutoIdVector &props) ;
+
+
+    virtual bool call(JSContext *cx, JSObject *proxy, unsigned argc, Value *vp);
+    virtual bool construct(JSContext *cx, JSObject *proxy, unsigned argc, Value *argv, Value *rval);
+    virtual bool nativeCall(JSContext *cx, JSObject *proxy, Class *clasp, Native native, CallArgs args);
+    virtual bool hasInstance(JSContext *cx, JSObject *proxy, const Value *vp, bool *bp);
+    virtual bool objectClassIs(JSObject *obj, ESClassValue classValue, JSContext *cx);
+    virtual JSString *obj_toString(JSContext *cx, JSObject *proxy);
+    virtual JSString *fun_toString(JSContext *cx, JSObject *proxy, unsigned indent);
+    virtual bool regexp_toShared(JSContext *cx, JSObject *proxy, RegExpGuard *g);
+    virtual bool defaultValue(JSContext *cx, JSObject *obj, JSType hint, Value *vp);
+    virtual bool iteratorNext(JSContext *cx, JSObject *proxy, Value *vp);
+    virtual bool getElementIfPresent(JSContext *cx, JSObject *obj, JSObject *receiver,
+                                     uint32_t index, Value *vp, bool *present);
+
+
+    static DeadObjectProxy singleton;
+};
+
+extern JSObject *
+TransparentObjectWrapper(JSContext *cx, JSObject *obj, JSObject *wrappedProto, JSObject *parent,
+                         unsigned flags);
+
+
+
+extern __attribute__((visibility("default"))) int sWrapperFamily;
+
+inline bool
+IsWrapper(const JSObject *obj)
+{
+    return IsProxy(obj) && GetProxyHandler(obj)->family() == &sWrapperFamily;
+}
+
+
+
+
+
+__attribute__((visibility("default"))) JSObject *
+UnwrapObject(JSObject *obj, bool stopAtOuter = true, unsigned *flagsp = __null);
+
+
+
+
+
+__attribute__((visibility("default"))) JSObject *
+UnwrapObjectChecked(JSContext *cx, JSObject *obj);
+
+__attribute__((visibility("default"))) bool
+IsCrossCompartmentWrapper(const JSObject *obj);
+
+JSObject *
+NewDeadProxyObject(JSContext *cx, JSObject *parent);
+
+void
+NukeCrossCompartmentWrapper(JSObject *wrapper);
+
+}
+# 30 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Marking.h" 1
+# 33 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/BooleanObject.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/BooleanObject.h"
+#define BooleanObject_h___ 
+
+
+
+namespace js {
+
+class BooleanObject : public JSObject
+{
+
+    static const unsigned PRIMITIVE_VALUE_SLOT = 0;
+
+  public:
+    static const unsigned RESERVED_SLOTS = 1;
+
+
+
+
+
+    static inline BooleanObject *create(JSContext *cx, bool b);
+
+
+
+
+
+    static inline BooleanObject *createWithProto(JSContext *cx, bool b, JSObject &proto);
+
+    bool unbox() const {
+        return getFixedSlot(PRIMITIVE_VALUE_SLOT).toBoolean();
+    }
+
+  private:
+    inline void setPrimitiveValue(bool b) {
+        setFixedSlot(PRIMITIVE_VALUE_SLOT, BooleanValue(b));
+    }
+
+
+    friend JSObject *
+    ::js_InitBooleanClass(JSContext *cx, JSObject *global);
+};
+
+}
+# 35 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/NumberObject.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/NumberObject.h"
+#define NumberObject_h___ 
+
+
+
+namespace js {
+
+class NumberObject : public JSObject
+{
+
+    static const unsigned PRIMITIVE_VALUE_SLOT = 0;
+
+  public:
+    static const unsigned RESERVED_SLOTS = 1;
+
+
+
+
+
+    static inline NumberObject *create(JSContext *cx, double d);
+
+
+
+
+
+    static inline NumberObject *createWithProto(JSContext *cx, double d, JSObject &proto);
+
+    double unbox() const {
+        return getFixedSlot(PRIMITIVE_VALUE_SLOT).toNumber();
+    }
+
+  private:
+    inline void setPrimitiveValue(double d) {
+        setFixedSlot(PRIMITIVE_VALUE_SLOT, NumberValue(d));
+    }
+
+
+    friend JSObject *
+    ::js_InitNumberClass(JSContext *cx, JSObject *global);
+};
+
+}
+# 37 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpStatics.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpStatics.h"
+#define RegExpStatics_h__ 
+
+
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/MatchPairs.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/MatchPairs.h"
+#define MatchPairs_h__ 
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/MatchPairs.h"
+namespace js {
+
+struct MatchPair
+{
+    int start;
+    int limit;
+
+    MatchPair(int start, int limit) : start(start), limit(limit) {}
+
+    size_t length() const {
+        do { } while(0);
+        return limit - start;
+    }
+
+    bool isUndefined() const {
+        return start == -1;
+    }
+
+    void check() const {
+        do { } while(0);
+        do { } while (0);
+    }
+};
+
+class MatchPairs
+{
+    size_t pairCount_;
+    int buffer_[1];
+
+    explicit MatchPairs(size_t pairCount) : pairCount_(pairCount) {
+        initPairValues();
+    }
+
+    void initPairValues() {
+        for (int *it = buffer_; it < buffer_ + 2 * pairCount_; ++it)
+            *it = -1;
+    }
+
+    static size_t calculateSize(size_t backingPairCount) {
+        return sizeof(MatchPairs) - sizeof(int) + sizeof(int) * backingPairCount;
+    }
+
+    int *buffer() { return buffer_; }
+
+    friend class RegExpShared;
+
+  public:
+
+
+
+
+    static MatchPairs *create(LifoAlloc &alloc, size_t pairCount, size_t backingPairCount);
+
+    size_t pairCount() const { return pairCount_; }
+
+    MatchPair pair(size_t i) {
+        do { } while(0);
+        return MatchPair(buffer_[2 * i], buffer_[2 * i + 1]);
+    }
+
+    void displace(size_t amount) {
+        if (!amount)
+            return;
+
+        for (int *it = buffer_; it < buffer_ + 2 * pairCount_; ++it)
+            *it = (*it < 0) ? -1 : *it + amount;
+    }
+
+    inline void checkAgainst(size_t length);
+};
+
+}
+# 18 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpStatics.h" 2
+
+namespace js {
+
+class RegExpStatics
+{
+    typedef Vector<int, 20, SystemAllocPolicy> Pairs;
+    Pairs matchPairs;
+
+    HeapPtr<JSLinearString> matchPairsInput;
+
+    HeapPtr<JSString> pendingInput;
+    RegExpFlag flags;
+    RegExpStatics *bufferLink;
+    bool copied;
+
+    bool createDependent(JSContext *cx, size_t start, size_t end, Value *out) const;
+
+    inline void copyTo(RegExpStatics &dst);
+
+    inline void aboutToWrite();
+
+    bool save(JSContext *cx, RegExpStatics *buffer) {
+        do { } while(0);
+        buffer->bufferLink = bufferLink;
+        bufferLink = buffer;
+        if (!buffer->matchPairs.reserve(matchPairs.length())) {
+            js_ReportOutOfMemory(cx);
+            return false;
+        }
+        return true;
+    }
+
+    inline void restore();
+
+    void checkInvariants() {
+# 76 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpStatics.h"
+    }
+
+
+
+
+
+    void checkParenNum(size_t pairNum) const {
+        do { } while(0);
+        do { } while(0);
+    }
+
+
+    size_t getParenLength(size_t pairNum) const {
+        checkParenNum(pairNum);
+        do { } while(0);
+        return get(pairNum, 1) - get(pairNum, 0);
+    }
+
+    int get(size_t pairNum, bool which) const {
+        do { } while(0);
+        return matchPairs[2 * pairNum + which];
+    }
+
+
+
+
+
+
+    bool makeMatch(JSContext *cx, size_t checkValidIndex, size_t pairNum, Value *out) const;
+
+    void markFlagsSet(JSContext *cx);
+
+    struct InitBuffer {};
+    explicit RegExpStatics(InitBuffer) : bufferLink(__null), copied(false) {}
+
+    friend class PreserveRegExpStatics;
+
+  public:
+    inline RegExpStatics();
+
+    static JSObject *create(JSContext *cx, GlobalObject *parent);
+
+
+
+    inline bool updateFromMatchPairs(JSContext *cx, JSLinearString *input, MatchPairs *newPairs);
+    inline void setMultiline(JSContext *cx, bool enabled);
+
+    inline void clear();
+
+
+    inline void reset(JSContext *cx, JSString *newInput, bool newMultiline);
+
+    inline void setPendingInput(JSString *newInput);
+# 139 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpStatics.h"
+  private:
+    size_t pairCount() const {
+        do { } while(0);
+        return matchPairs.length() / 2;
+    }
+
+  public:
+    size_t parenCount() const {
+        size_t pc = pairCount();
+        do { } while(0);
+        return pc - 1;
+    }
+
+    JSString *getPendingInput() const { return pendingInput; }
+    RegExpFlag getFlags() const { return flags; }
+    bool multiline() const { return flags & MultilineFlag; }
+
+    size_t matchStart() const {
+        int start = get(0, 0);
+        do { } while(0);
+        return size_t(start);
+    }
+
+    size_t matchLimit() const {
+        int limit = get(0, 1);
+        do { } while(0);
+        return size_t(limit);
+    }
+
+
+    bool matched() const {
+        do { } while(0);
+        do { } while (0);
+        return get(0, 1) - get(0, 0) > 0;
+    }
+
+    void mark(JSTracer *trc) {
+        if (pendingInput)
+            MarkString(trc, &pendingInput, "res->pendingInput");
+        if (matchPairsInput)
+            MarkString(trc, &matchPairsInput, "res->matchPairsInput");
+    }
+
+    bool pairIsPresent(size_t pairNum) const {
+        return get(pairNum, 0) >= 0;
+    }
+
+
+
+    bool createPendingInput(JSContext *cx, Value *out) const;
+    bool createLastMatch(JSContext *cx, Value *out) const { return makeMatch(cx, 0, 0, out); }
+    bool createLastParen(JSContext *cx, Value *out) const;
+    bool createLeftContext(JSContext *cx, Value *out) const;
+    bool createRightContext(JSContext *cx, Value *out) const;
+
+
+    bool createParen(JSContext *cx, size_t pairNum, Value *out) const {
+        do { } while(0);
+        if (pairNum >= pairCount()) {
+            out->setString(cx->runtime->emptyString);
+            return true;
+        }
+        return makeMatch(cx, pairNum * 2, pairNum, out);
+    }
+
+
+
+    void getParen(size_t pairNum, JSSubString *out) const;
+    void getLastMatch(JSSubString *out) const;
+    void getLastParen(JSSubString *out) const;
+    void getLeftContext(JSSubString *out) const;
+    void getRightContext(JSSubString *out) const;
+
+    class AutoRooter : private AutoGCRooter
+    {
+      public:
+        explicit AutoRooter(JSContext *cx, RegExpStatics *statics_
+                            )
+          : AutoGCRooter(cx, REGEXPSTATICS), statics(statics_), skip(cx, statics_)
+        {
+            do { } while (0);
+        }
+
+        friend void AutoGCRooter::trace(JSTracer *trc);
+        void trace(JSTracer *trc);
+
+      private:
+        RegExpStatics *statics;
+        SkipRoot skip;
+       
+    };
+};
+
+class PreserveRegExpStatics
+{
+    RegExpStatics * const original;
+    RegExpStatics buffer;
+    RegExpStatics::AutoRooter bufferRoot;
+
+  public:
+    explicit PreserveRegExpStatics(JSContext *cx, RegExpStatics *original)
+     : original(original),
+       buffer(RegExpStatics::InitBuffer()),
+       bufferRoot(cx, &buffer)
+    {}
+
+    bool init(JSContext *cx) {
+        return original->save(cx, &buffer);
+    }
+
+    inline ~PreserveRegExpStatics();
+};
+
+size_t SizeOfRegExpStaticsData(const JSObject *obj, JSMallocSizeOfFun mallocSizeOf);
+
+}
+# 38 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/StringObject.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/StringObject.h"
+#define StringObject_h___ 
+
+
+
+
+namespace js {
+
+class StringObject : public JSObject
+{
+    static const unsigned PRIMITIVE_VALUE_SLOT = 0;
+    static const unsigned LENGTH_SLOT = 1;
+
+  public:
+    static const unsigned RESERVED_SLOTS = 2;
+
+
+
+
+
+    static inline StringObject *create(JSContext *cx, HandleString str);
+
+
+
+
+
+    static inline StringObject *createWithProto(JSContext *cx, HandleString str, JSObject &proto);
+
+    JSString *unbox() const {
+        return getFixedSlot(PRIMITIVE_VALUE_SLOT).toString();
+    }
+
+    inline size_t length() const {
+        return size_t(getFixedSlot(LENGTH_SLOT).toInt32());
+    }
+
+    static size_t getPrimitiveValueOffset() {
+        return getFixedSlotOffset(PRIMITIVE_VALUE_SLOT);
+    }
+
+  private:
+    inline bool init(JSContext *cx, HandleString str);
+
+    void setStringThis(JSString *str) {
+        do { } while(0);
+        setFixedSlot(PRIMITIVE_VALUE_SLOT, StringValue(str));
+        setFixedSlot(LENGTH_SLOT, Int32Value(int32_t(str->length())));
+    }
+
+
+    friend JSObject *
+    ::js_InitStringClass(JSContext *cx, JSObject *global);
+
+
+
+
+
+
+    Shape *assignInitialShape(JSContext *cx);
+};
+
+}
+# 39 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatominlines.h" 1
+
+
+
+
+
+
+
+#define jsatominlines_h___ 
+
+
+
+
+
+
+# 1 "./../../dist/include/mozilla/RangedPtr.h" 1
+# 14 "./../../dist/include/mozilla/RangedPtr.h"
+#define mozilla_RangedPtr_h_ 
+
+
+
+
+
+namespace mozilla {
+# 41 "./../../dist/include/mozilla/RangedPtr.h"
+template <typename T>
+class RangedPtr
+{
+    T* ptr;
+
+
+
+
+
+
+    void checkSanity() {
+        do { } while(0);
+        do { } while(0);
+    }
+
+
+    RangedPtr<T> create(T *ptr) const {
+
+
+
+        return RangedPtr<T>(ptr, __null, size_t(0));
+
+    }
+
+  public:
+    RangedPtr(T* p, T* start, T* end)
+      : ptr(p)
+
+
+
+    {
+        do { } while(0);
+        checkSanity();
+    }
+    RangedPtr(T* p, T* start, size_t length)
+      : ptr(p)
+
+
+
+    {
+        do { } while(0);
+        do { } while(0);
+        checkSanity();
+    }
+
+
+    RangedPtr(T* p, size_t length)
+      : ptr(p)
+
+
+
+    {
+        do { } while(0);
+        do { } while(0);
+        checkSanity();
+    }
+
+
+    template<size_t N>
+    RangedPtr(T arr[N])
+      : ptr(arr)
+
+
+
+    {
+      checkSanity();
+    }
+
+    T* get() const {
+        return ptr;
+    }
+# 123 "./../../dist/include/mozilla/RangedPtr.h"
+    RangedPtr<T>& operator=(const RangedPtr<T>& other) {
+        do { } while(0);
+        do { } while(0);
+        ptr = other.ptr;
+        checkSanity();
+        return *this;
+    }
+
+    RangedPtr<T> operator+(size_t inc) {
+        do { } while(0);
+        do { } while(0);
+        return create(ptr + inc);
+    }
+
+    RangedPtr<T> operator-(size_t dec) {
+        do { } while(0);
+        do { } while(0);
+        return create(ptr - dec);
+    }
+
+
+
+
+
+    template <typename U>
+    RangedPtr<T>& operator=(U* p) {
+        *this = create(p);
+        return *this;
+    }
+
+    template <typename U>
+    RangedPtr<T>& operator=(const RangedPtr<U>& p) {
+        do { } while(0);
+        do { } while(0);
+        ptr = p.ptr;
+        checkSanity();
+        return *this;
+    }
+
+    RangedPtr<T>& operator++() {
+        return (*this += 1);
+    }
+
+    RangedPtr<T> operator++(int) {
+        RangedPtr<T> rcp = *this;
+        ++*this;
+        return rcp;
+    }
+
+    RangedPtr<T>& operator--() {
+        return (*this -= 1);
+    }
+
+    RangedPtr<T> operator--(int) {
+        RangedPtr<T> rcp = *this;
+        --*this;
+        return rcp;
+    }
+
+    RangedPtr<T>& operator+=(size_t inc) {
+        this->operator=<T>(*this + inc);
+        return *this;
+    }
+
+    RangedPtr<T>& operator-=(size_t dec) {
+        this->operator=<T>(*this - dec);
+        return *this;
+    }
+
+    T& operator[](int index) const {
+        do { } while(0);
+        return *create(ptr + index);
+    }
+
+    T& operator*() const {
+        return *ptr;
+    }
+
+    template <typename U>
+    bool operator==(const RangedPtr<U>& other) const {
+        return ptr == other.ptr;
+    }
+    template <typename U>
+    bool operator!=(const RangedPtr<U>& other) const {
+        return !(*this == other);
+    }
+
+    template<typename U>
+    bool operator==(const U* u) const {
+        return ptr == u;
+    }
+    template<typename U>
+    bool operator!=(const U* u) const {
+        return !(*this == u);
+    }
+
+    template <typename U>
+    bool operator<(const RangedPtr<U>& other) const {
+        return ptr < other.ptr;
+    }
+    template <typename U>
+    bool operator<=(const RangedPtr<U>& other) const {
+        return ptr <= other.ptr;
+    }
+
+    template <typename U>
+    bool operator>(const RangedPtr<U>& other) const {
+        return ptr > other.ptr;
+    }
+    template <typename U>
+    bool operator>=(const RangedPtr<U>& other) const {
+        return ptr >= other.ptr;
+    }
+
+    size_t operator-(const RangedPtr<T>& other) const {
+        do { } while(0);
+        return PointerRangeSize(other.ptr, ptr);
+    }
+
+  private:
+    RangedPtr() ;
+    T* operator&() ;
+    operator T*() const ;
+};
+
+}
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatominlines.h" 2
+
+
+inline JSAtom *
+js::AtomStateEntry::asPtr() const
+{
+    do { } while(0);
+    JSAtom *atom = reinterpret_cast<JSAtom *>(bits & NO_TAG_MASK);
+    JSString::readBarrier(atom);
+    return atom;
+}
+
+inline bool
+js_ValueToAtom(JSContext *cx, const js::Value &v, JSAtom **atomp)
+{
+    if (!v.isString()) {
+        JSString *str = js::ToStringSlow(cx, v);
+        if (!str)
+            return false;
+        JS::Anchor<JSString *> anchor(str);
+        *atomp = js_AtomizeString(cx, str);
+        return !!*atomp;
+    }
+
+    JSString *str = v.toString();
+    if (str->isAtom()) {
+        *atomp = &str->asAtom();
+        return true;
+    }
+
+    *atomp = js_AtomizeString(cx, str);
+    return !!*atomp;
+}
+
+namespace js {
+
+inline bool
+ValueToId(JSContext* cx, JSObject *obj, const Value &v, jsid *idp)
+{
+    int32_t i;
+    if (ValueFitsInInt32(v, &i) && INT_FITS_IN_JSID(i)) {
+        *idp = INT_TO_JSID(i);
+        return true;
+    }
+
+    return InternNonIntElementId(cx, obj, v, idp);
+}
+
+inline bool
+ValueToId(JSContext* cx, const Value &v, jsid *idp)
+{
+    return ValueToId(cx, __null, v, idp);
+}
+# 76 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatominlines.h"
+template <typename T>
+inline mozilla::RangedPtr<T>
+BackfillIndexInCharBuffer(uint32_t index, mozilla::RangedPtr<T> end)
+{
+# 89 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsatominlines.h"
+    do {
+        uint32_t next = index / 10, digit = index % 10;
+        *--end = '0' + digit;
+        index = next;
+    } while (index > 0);
+
+    return end;
+}
+
+inline bool
+IndexToId(JSContext *cx, uint32_t index, jsid *idp)
+{
+    MaybeCheckStackRoots(cx);
+
+    if (index <= (2147483647)) {
+        *idp = INT_TO_JSID(index);
+        return true;
+    }
+
+    extern bool IndexToIdSlow(JSContext *cx, uint32_t index, jsid *idp);
+    return IndexToIdSlow(cx, index, idp);
+}
+
+inline jsid
+AtomToId(JSAtom *atom)
+{
+    typedef int moz_static_assert106[(0 == 0) ? 1 : -1];
+
+    uint32_t index;
+    if (atom->isIndex(&index) && index <= (2147483647))
+        return INT_TO_JSID((int32_t) index);
+
+    return JSID_FROM_BITS((size_t)atom);
+}
+
+static __attribute__((always_inline)) inline JSFlatString *
+IdToString(JSContext *cx, jsid id)
+{
+    if (JSID_IS_STRING(id))
+        return JSID_TO_ATOM(id);
+
+    if ((__builtin_expect((JSID_IS_INT(id)), 1)))
+        return Int32ToString(cx, JSID_TO_INT(id));
+
+    JSString *str = ToStringSlow(cx, IdToValue(id));
+    if (!str)
+        return __null;
+
+    return str->ensureFlat(cx);
+}
+
+inline
+AtomHasher::Lookup::Lookup(const JSAtom *atom)
+  : chars(atom->chars()), length(atom->length()), atom(atom)
+{}
+
+inline bool
+AtomHasher::match(const AtomStateEntry &entry, const Lookup &lookup)
+{
+    JSAtom *key = entry.asPtr();
+    if (lookup.atom)
+        return lookup.atom == key;
+    if (key->length() != lookup.length)
+        return false;
+    return PodEqual(key->chars(), lookup.chars, lookup.length);
+}
+
+}
+# 41 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfuninlines.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfuninlines.h"
+#define jsfuninlines_h___ 
+
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ScopeObject-inl.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ScopeObject-inl.h"
+#define ScopeObject_inl_h___ 
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ScopeObject.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ScopeObject.h"
+#define ScopeObject_h___ 
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsweakmap.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsweakmap.h"
+#define jsweakmap_h___ 
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsweakmap.h"
+namespace js {
+# 68 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsweakmap.h"
+static WeakMapBase * const WeakMapNotInList = reinterpret_cast<WeakMapBase *>(1);
+
+typedef Vector<WeakMapBase *, 0, SystemAllocPolicy> WeakMapVector;
+
+
+
+class WeakMapBase {
+  public:
+    WeakMapBase(JSObject *memOf) : memberOf(memOf), next(WeakMapNotInList) { }
+    virtual ~WeakMapBase() { }
+
+    void trace(JSTracer *tracer) {
+        if (((tracer)->callback == __null || (tracer)->callback == GCMarker::GrayCallback)) {
+
+
+
+
+            do { } while(0);
+
+
+
+            if (next == WeakMapNotInList) {
+                JSRuntime *rt = tracer->runtime;
+                next = rt->gcWeakMapList;
+                rt->gcWeakMapList = this;
+            }
+        } else {
+
+
+
+
+            if (tracer->eagerlyTraceWeakMaps)
+                nonMarkingTrace(tracer);
+        }
+    }
+
+
+
+
+
+
+
+    static bool markAllIteratively(JSTracer *tracer);
+
+
+
+    static void sweepAll(JSTracer *tracer);
+
+
+    static void traceAllMappings(WeakMapTracer *tracer);
+
+    void check() { do { } while(0); }
+
+
+    static void resetWeakMapList(JSRuntime *rt);
+
+
+    static bool saveWeakMapList(JSRuntime *rt, WeakMapVector &vector);
+    static void restoreWeakMapList(JSRuntime *rt, WeakMapVector &vector);
+
+  protected:
+
+
+    virtual void nonMarkingTrace(JSTracer *tracer) = 0;
+    virtual bool markIteratively(JSTracer *tracer) = 0;
+    virtual void sweep(JSTracer *tracer) = 0;
+    virtual void traceMappings(WeakMapTracer *tracer) = 0;
+
+
+    JSObject *memberOf;
+
+  private:
+
+
+
+
+
+    WeakMapBase *next;
+};
+
+template <class Key, class Value,
+          class HashPolicy = DefaultHasher<Key> >
+class WeakMap : public HashMap<Key, Value, HashPolicy, RuntimeAllocPolicy>, public WeakMapBase {
+  private:
+    typedef HashMap<Key, Value, HashPolicy, RuntimeAllocPolicy> Base;
+    typedef typename Base::Enum Enum;
+
+  public:
+    typedef typename Base::Range Range;
+
+    explicit WeakMap(JSRuntime *rt, JSObject *memOf=__null) : Base(rt), WeakMapBase(memOf) { }
+    explicit WeakMap(JSContext *cx, JSObject *memOf=__null) : Base(cx), WeakMapBase(memOf) { }
+
+
+    Range nondeterministicAll() {
+        return Base::all();
+    }
+
+  private:
+    bool markValue(JSTracer *trc, Value *x) {
+        if (gc::IsMarked(x))
+            return false;
+        gc::Mark(trc, x, "WeakMap entry");
+        return true;
+    }
+
+    void nonMarkingTrace(JSTracer *trc) {
+        for (Range r = Base::all(); !r.empty(); r.popFront())
+            markValue(trc, &r.front().value);
+    }
+
+    bool markIteratively(JSTracer *trc) {
+        bool markedAny = false;
+        for (Enum e(*this); !e.empty(); e.popFront()) {
+
+            Key k(e.front().key);
+            bool keyIsMarked = gc::IsMarked(&k);
+            if (keyIsMarked) {
+                if (markValue(trc, &e.front().value))
+                    markedAny = true;
+                e.rekeyFront(k);
+            }
+        }
+        return markedAny;
+    }
+
+    void sweep(JSTracer *trc) {
+
+        for (Enum e(*this); !e.empty(); e.popFront()) {
+            Key k(e.front().key);
+            if (!gc::IsMarked(&k))
+                e.removeFront();
+        }
+# 216 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsweakmap.h"
+    }
+
+
+    void traceMappings(WeakMapTracer *tracer) {
+        for (Range r = Base::all(); !r.empty(); r.popFront()) {
+            gc::Cell *key = gc::ToMarkable(r.front().key);
+            gc::Cell *value = gc::ToMarkable(r.front().value);
+            if (key && value) {
+                tracer->callback(tracer, memberOf,
+                                 key, gc::TraceKind(r.front().key),
+                                 value, gc::TraceKind(r.front().value));
+            }
+        }
+    }
+};
+
+}
+
+extern JSObject *
+js_InitWeakMapClass(JSContext *cx, JSObject *obj);
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ScopeObject.h" 2
+
+namespace js {
+# 33 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ScopeObject.h"
+struct ScopeCoordinate
+{
+    uint16_t hops;
+    uint16_t binding;
+    inline ScopeCoordinate(jsbytecode *pc);
+};
+
+inline JSAtom *
+ScopeCoordinateAtom(JSScript *script, jsbytecode *pc);
+# 83 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ScopeObject.h"
+class ScopeObject : public JSObject
+{
+
+    void *getPrivate() const;
+
+  protected:
+    static const uint32_t SCOPE_CHAIN_SLOT = 0;
+
+  public:
+
+
+
+
+
+    inline JSObject &enclosingScope() const;
+    inline bool setEnclosingScope(JSContext *cx, HandleObject obj);
+
+
+
+
+
+
+    inline StackFrame *maybeStackFrame() const;
+    inline void setStackFrame(StackFrame *frame);
+
+
+    static inline size_t offsetOfEnclosingScope();
+};
+
+class CallObject : public ScopeObject
+{
+    static const uint32_t CALLEE_SLOT = 1;
+
+    static CallObject *
+    create(JSContext *cx, JSScript *script, HandleObject enclosing, HandleObject callee);
+
+  public:
+    static const uint32_t RESERVED_SLOTS = 3;
+
+    static CallObject *createForFunction(JSContext *cx, StackFrame *fp);
+    static CallObject *createForStrictEval(JSContext *cx, StackFrame *fp);
+
+
+    inline bool isForEval() const;
+
+
+
+
+
+    inline JSObject *getCallee() const;
+    inline JSFunction *getCalleeFunction() const;
+    inline void setCallee(JSObject *callee);
+
+
+    inline const Value &arg(unsigned i) const;
+    inline void setArg(unsigned i, const Value &v);
+    inline void initArgUnchecked(unsigned i, const Value &v);
+
+
+    inline const Value &var(unsigned i) const;
+    inline void setVar(unsigned i, const Value &v);
+    inline void initVarUnchecked(unsigned i, const Value &v);
+
+
+
+
+
+
+    inline HeapSlotArray argArray();
+    inline HeapSlotArray varArray();
+
+    inline void copyValues(unsigned nargs, Value *argv, unsigned nvars, Value *slots);
+
+    static JSBool getArgOp(JSContext *cx, HandleObject obj, HandleId id, Value *vp);
+    static JSBool getVarOp(JSContext *cx, HandleObject obj, HandleId id, Value *vp);
+    static JSBool setArgOp(JSContext *cx, HandleObject obj, HandleId id, JSBool strict, Value *vp);
+    static JSBool setVarOp(JSContext *cx, HandleObject obj, HandleId id, JSBool strict, Value *vp);
+
+
+    bool containsVarOrArg(PropertyName *name, Value *vp, JSContext *cx);
+};
+
+class DeclEnvObject : public ScopeObject
+{
+  public:
+    static const uint32_t RESERVED_SLOTS = 1;
+    static const gc::AllocKind FINALIZE_KIND = gc::FINALIZE_OBJECT2;
+
+    static DeclEnvObject *create(JSContext *cx, StackFrame *fp);
+
+};
+
+class NestedScopeObject : public ScopeObject
+{
+  protected:
+    static const unsigned DEPTH_SLOT = 1;
+
+  public:
+
+    uint32_t stackDepth() const;
+};
+
+class WithObject : public NestedScopeObject
+{
+
+    js::StackFrame *maybeStackFrame() const;
+    void setStackFrame(StackFrame *frame);
+
+    static const unsigned THIS_SLOT = 2;
+
+
+    JSObject *getProto() const;
+
+  public:
+    static const unsigned RESERVED_SLOTS = 3;
+    static const gc::AllocKind FINALIZE_KIND = gc::FINALIZE_OBJECT4;
+
+    static WithObject *
+    create(JSContext *cx, HandleObject proto, HandleObject enclosing, uint32_t depth);
+
+
+    JSObject &withThis() const;
+
+
+    JSObject &object() const;
+};
+
+class BlockObject : public NestedScopeObject
+{
+  public:
+    static const unsigned RESERVED_SLOTS = 2;
+    static const gc::AllocKind FINALIZE_KIND = gc::FINALIZE_OBJECT4;
+
+
+    inline uint32_t slotCount() const;
+
+  protected:
+
+    inline HeapSlot &slotValue(unsigned i);
+};
+
+class StaticBlockObject : public BlockObject
+{
+
+    StackFrame *maybeStackFrame() const;
+    void setStackFrame(StackFrame *frame);
+
+  public:
+    static StaticBlockObject *create(JSContext *cx);
+
+    inline StaticBlockObject *enclosingBlock() const;
+    inline void setEnclosingBlock(StaticBlockObject *blockObj);
+
+    void setStackDepth(uint32_t depth);
+    bool containsVarAtDepth(uint32_t depth);
+
+
+
+
+
+    void setDefinitionParseNode(unsigned i, Definition *def);
+    Definition *maybeDefinitionParseNode(unsigned i);
+
+
+
+
+
+    void setAliased(unsigned i, bool aliased);
+    bool isAliased(unsigned i);
+
+
+
+
+
+    bool needsClone() const;
+
+    const Shape *addVar(JSContext *cx, jsid id, int index, bool *redeclared);
+};
+
+class ClonedBlockObject : public BlockObject
+{
+  public:
+    static ClonedBlockObject *create(JSContext *cx, Handle<StaticBlockObject *> block,
+                                     StackFrame *fp);
+
+
+    StaticBlockObject &staticBlock() const;
+
+
+
+
+
+    void put(StackFrame *fp);
+
+
+    const Value &closedSlot(unsigned i);
+
+
+    bool containsVar(PropertyName *name, Value *vp, JSContext *cx);
+};
+
+template<XDRMode mode>
+bool
+XDRStaticBlockObject(XDRState<mode> *xdr, JSScript *script, StaticBlockObject **objp);
+
+extern JSObject *
+CloneStaticBlockObject(JSContext *cx, StaticBlockObject &srcBlock,
+                       const AutoObjectVector &objects, JSScript *src);
+# 307 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ScopeObject.h"
+class ScopeIter
+{
+  public:
+    enum Type { Call, Block, With, StrictEvalScope };
+
+  private:
+    StackFrame *fp_;
+    JSObject *cur_;
+    StaticBlockObject *block_;
+    Type type_;
+    bool hasScopeObject_;
+
+    void settle();
+
+  public:
+
+    explicit ScopeIter();
+
+
+    explicit ScopeIter(StackFrame *fp);
+
+
+
+
+
+    explicit ScopeIter(JSObject &enclosingScope);
+
+
+
+
+
+    ScopeIter(ScopeIter si, StackFrame *fp);
+
+
+    ScopeIter(StackFrame *fp, ScopeObject &scope);
+
+    bool done() const { return !fp_; }
+
+
+
+    JSObject &enclosingScope() const { do { } while(0); return *cur_; }
+
+
+
+    ScopeIter enclosing() const;
+
+    StackFrame *fp() const { do { } while(0); return fp_; }
+    Type type() const { do { } while(0); return type_; }
+    bool hasScopeObject() const { do { } while(0); return hasScopeObject_; }
+    ScopeObject &scope() const;
+
+    StaticBlockObject &staticBlock() const { do { } while(0); return *block_; }
+
+
+    typedef ScopeIter Lookup;
+    static HashNumber hash(ScopeIter si);
+    static bool match(ScopeIter si1, ScopeIter si2);
+};
+# 393 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ScopeObject.h"
+extern JSObject *
+GetDebugScopeForFunction(JSContext *cx, JSFunction *fun);
+
+extern JSObject *
+GetDebugScopeForFrame(JSContext *cx, StackFrame *fp);
+
+
+class DebugScopeObject : public JSObject
+{
+    static const unsigned ENCLOSING_EXTRA = 0;
+
+  public:
+    static DebugScopeObject *create(JSContext *cx, ScopeObject &scope, JSObject &enclosing);
+
+    ScopeObject &scope() const;
+    JSObject &enclosingScope() const;
+
+
+    bool isForDeclarative() const;
+};
+
+
+class DebugScopes
+{
+
+    typedef WeakMap<HeapPtrObject, HeapPtrObject> ObjectWeakMap;
+    ObjectWeakMap proxiedScopes;
+
+
+
+
+
+    typedef HashMap<ScopeIter, DebugScopeObject *, ScopeIter, RuntimeAllocPolicy> MissingScopeMap;
+    MissingScopeMap missingScopes;
+
+  public:
+    DebugScopes(JSRuntime *rt);
+    ~DebugScopes();
+    bool init();
+
+    void mark(JSTracer *trc);
+    void sweep();
+
+    DebugScopeObject *hasDebugScope(JSContext *cx, ScopeObject &scope) const;
+    bool addDebugScope(JSContext *cx, ScopeObject &scope, DebugScopeObject &debugScope);
+
+    DebugScopeObject *hasDebugScope(JSContext *cx, ScopeIter si) const;
+    bool addDebugScope(JSContext *cx, ScopeIter si, DebugScopeObject &debugScope);
+
+
+
+
+
+    void onPopCall(StackFrame *fp);
+    void onPopBlock(JSContext *cx, StackFrame *fp);
+    void onGeneratorFrameChange(StackFrame *from, StackFrame *to);
+    void onCompartmentLeaveDebugMode(JSCompartment *c);
+};
+
+}
+# 12 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ScopeObject-inl.h" 2
+
+namespace js {
+
+inline
+ScopeCoordinate::ScopeCoordinate(jsbytecode *pc)
+  : hops(((unsigned)(((pc)[1] << 8) | (pc)[2]))), binding(((unsigned)(((pc + 2)[1] << 8) | (pc + 2)[2])))
+{
+    do { } while(0);
+}
+
+inline JSAtom *
+ScopeCoordinateAtom(JSScript *script, jsbytecode *pc)
+{
+    do { } while(0);
+    return script->getAtom(GET_UINT32_INDEX(pc + 2 * sizeof(uint16_t)));
+}
+
+inline JSObject &
+ScopeObject::enclosingScope() const
+{
+    return getReservedSlot(SCOPE_CHAIN_SLOT).toObject();
+}
+
+inline bool
+ScopeObject::setEnclosingScope(JSContext *cx, HandleObject obj)
+{
+    RootedObject self(cx, this);
+    if (!obj->setDelegate(cx))
+        return false;
+    self->setFixedSlot(SCOPE_CHAIN_SLOT, ObjectValue(*obj));
+    return true;
+}
+
+inline StackFrame *
+ScopeObject::maybeStackFrame() const
+{
+    do { } while(0);
+    return reinterpret_cast<StackFrame *>(JSObject::getPrivate());
+}
+
+inline void
+ScopeObject::setStackFrame(StackFrame *frame)
+{
+    return setPrivate(frame);
+}
+
+           inline size_t
+ScopeObject::offsetOfEnclosingScope()
+{
+    return getFixedSlotOffset(SCOPE_CHAIN_SLOT);
+}
+
+inline bool
+CallObject::isForEval() const
+{
+    do { } while(0);
+    do { } while (0)
+                                                                      ;
+    return getReservedSlot(CALLEE_SLOT).isNull();
+}
+
+inline void
+CallObject::setCallee(JSObject *callee)
+{
+    do { } while (0);
+    setFixedSlot(CALLEE_SLOT, ObjectOrNullValue(callee));
+}
+
+inline JSObject *
+CallObject::getCallee() const
+{
+    return getReservedSlot(CALLEE_SLOT).toObjectOrNull();
+}
+
+inline JSFunction *
+CallObject::getCalleeFunction() const
+{
+    return getReservedSlot(CALLEE_SLOT).toObject().toFunction();
+}
+
+inline const Value &
+CallObject::arg(unsigned i) const
+{
+    do { } while(0);
+    return getSlot(RESERVED_SLOTS + i);
+}
+
+inline void
+CallObject::setArg(unsigned i, const Value &v)
+{
+    do { } while(0);
+    setSlot(RESERVED_SLOTS + i, v);
+}
+
+inline void
+CallObject::initArgUnchecked(unsigned i, const Value &v)
+{
+    do { } while(0);
+    initSlotUnchecked(RESERVED_SLOTS + i, v);
+}
+
+inline const Value &
+CallObject::var(unsigned i) const
+{
+    JSFunction *fun = getCalleeFunction();
+    do { } while(0);
+    do { } while(0);
+    return getSlot(RESERVED_SLOTS + fun->nargs + i);
+}
+
+inline void
+CallObject::setVar(unsigned i, const Value &v)
+{
+    JSFunction *fun = getCalleeFunction();
+    do { } while(0);
+    do { } while(0);
+    setSlot(RESERVED_SLOTS + fun->nargs + i, v);
+}
+
+inline void
+CallObject::initVarUnchecked(unsigned i, const Value &v)
+{
+    JSFunction *fun = getCalleeFunction();
+    do { } while(0);
+    do { } while(0);
+    initSlotUnchecked(RESERVED_SLOTS + fun->nargs + i, v);
+}
+
+inline void
+CallObject::copyValues(unsigned nargs, Value *argv, unsigned nvars, Value *slots)
+{
+    do { } while(0);
+    copySlotRange(RESERVED_SLOTS, argv, nargs);
+    copySlotRange(RESERVED_SLOTS + nargs, slots, nvars);
+}
+
+inline HeapSlotArray
+CallObject::argArray()
+{
+    DebugOnly<JSFunction*> fun = getCalleeFunction();
+    do { } while(0);
+    return HeapSlotArray(getSlotAddress(RESERVED_SLOTS));
+}
+
+inline HeapSlotArray
+CallObject::varArray()
+{
+    JSFunction *fun = getCalleeFunction();
+    do { } while(0)
+                                                                    ;
+    return HeapSlotArray(getSlotAddress(RESERVED_SLOTS + fun->nargs));
+}
+
+inline uint32_t
+NestedScopeObject::stackDepth() const
+{
+    return getReservedSlot(DEPTH_SLOT).toPrivateUint32();
+}
+
+inline JSObject &
+WithObject::withThis() const
+{
+    return getReservedSlot(THIS_SLOT).toObject();
+}
+
+inline JSObject &
+WithObject::object() const
+{
+    return *JSObject::getProto();
+}
+
+inline uint32_t
+BlockObject::slotCount() const
+{
+    return propertyCount();
+}
+
+inline HeapSlot &
+BlockObject::slotValue(unsigned i)
+{
+    do { } while(0);
+    return getSlotRef(RESERVED_SLOTS + i);
+}
+
+inline StaticBlockObject *
+StaticBlockObject::enclosingBlock() const
+{
+    JSObject *obj = getReservedSlot(SCOPE_CHAIN_SLOT).toObjectOrNull();
+    return obj ? &obj->asStaticBlock() : __null;
+}
+
+inline void
+StaticBlockObject::setEnclosingBlock(StaticBlockObject *blockObj)
+{
+    setFixedSlot(SCOPE_CHAIN_SLOT, ObjectOrNullValue(blockObj));
+}
+
+inline void
+StaticBlockObject::setStackDepth(uint32_t depth)
+{
+    do { } while(0);
+    initReservedSlot(DEPTH_SLOT, PrivateUint32Value(depth));
+}
+
+inline void
+StaticBlockObject::setDefinitionParseNode(unsigned i, Definition *def)
+{
+    do { } while(0);
+    slotValue(i).init(this, i, PrivateValue(def));
+}
+
+inline Definition *
+StaticBlockObject::maybeDefinitionParseNode(unsigned i)
+{
+    Value v = slotValue(i);
+    return v.isUndefined() ? __null : reinterpret_cast<Definition *>(v.toPrivate());
+}
+
+inline void
+StaticBlockObject::setAliased(unsigned i, bool aliased)
+{
+    slotValue(i).init(this, i, BooleanValue(aliased));
+    if (aliased)
+        JSObject::setPrivate(reinterpret_cast<void *>(1));
+}
+
+inline bool
+StaticBlockObject::isAliased(unsigned i)
+{
+    return slotValue(i).isTrue();
+}
+
+inline bool
+StaticBlockObject::needsClone() const
+{
+    return JSObject::getPrivate() != __null;
+}
+
+inline bool
+StaticBlockObject::containsVarAtDepth(uint32_t depth)
+{
+    return depth >= stackDepth() && depth < stackDepth() + slotCount();
+}
+
+inline StaticBlockObject &
+ClonedBlockObject::staticBlock() const
+{
+    return getProto()->asStaticBlock();
+}
+
+inline const Value &
+ClonedBlockObject::closedSlot(unsigned i)
+{
+    do { } while(0);
+    return slotValue(i);
+}
+
+}
+
+inline js::ScopeObject &
+JSObject::asScope()
+{
+    do { } while(0);
+    return *static_cast<js::ScopeObject *>(this);
+}
+
+inline js::CallObject &
+JSObject::asCall()
+{
+    do { } while(0);
+    return *static_cast<js::CallObject *>(this);
+}
+
+inline js::DeclEnvObject &
+JSObject::asDeclEnv()
+{
+    do { } while(0);
+    return *static_cast<js::DeclEnvObject *>(this);
+}
+
+inline js::NestedScopeObject &
+JSObject::asNestedScope()
+{
+    do { } while(0);
+    return *static_cast<js::NestedScopeObject *>(this);
+}
+
+inline js::WithObject &
+JSObject::asWith()
+{
+    do { } while(0);
+    return *static_cast<js::WithObject *>(this);
+}
+
+inline js::BlockObject &
+JSObject::asBlock()
+{
+    do { } while(0);
+    return *static_cast<js::BlockObject *>(this);
+}
+
+inline js::StaticBlockObject &
+JSObject::asStaticBlock()
+{
+    do { } while(0);
+    return *static_cast<js::StaticBlockObject *>(this);
+}
+
+inline js::ClonedBlockObject &
+JSObject::asClonedBlock()
+{
+    do { } while(0);
+    return *static_cast<js::ClonedBlockObject *>(this);
+}
+
+inline js::DebugScopeObject &
+JSObject::asDebugScope()
+{
+    do { } while(0);
+    return *static_cast<js::DebugScopeObject *>(this);
+}
+# 17 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfuninlines.h" 2
+
+inline bool
+JSFunction::inStrictMode() const
+{
+    return script()->strictModeCode;
+}
+
+inline JSObject *
+JSFunction::environment() const
+{
+    do { } while(0);
+    return u.i.env_;
+}
+
+inline void
+JSFunction::setEnvironment(JSObject *obj)
+{
+    do { } while(0);
+    *(js::HeapPtrObject *)&u.i.env_ = obj;
+}
+
+inline void
+JSFunction::initEnvironment(JSObject *obj)
+{
+    do { } while(0);
+    ((js::HeapPtrObject *)&u.i.env_)->init(obj);
+}
+
+inline void
+JSFunction::initializeExtended()
+{
+    do { } while(0);
+
+    do { } while(0);
+    toExtended()->extendedSlots[0].init(js::UndefinedValue());
+    toExtended()->extendedSlots[1].init(js::UndefinedValue());
+}
+
+inline void
+JSFunction::setExtendedSlot(size_t which, const js::Value &val)
+{
+    do { } while(0);
+    toExtended()->extendedSlots[which] = val;
+}
+
+inline const js::Value &
+JSFunction::getExtendedSlot(size_t which) const
+{
+    do { } while(0);
+    return toExtended()->extendedSlots[which];
+}
+
+namespace js {
+
+static __attribute__((always_inline)) inline bool
+IsFunctionObject(const js::Value &v)
+{
+    return v.isObject() && v.toObject().isFunction();
+}
+
+static __attribute__((always_inline)) inline bool
+IsFunctionObject(const js::Value &v, JSFunction **fun)
+{
+    if (v.isObject() && v.toObject().isFunction()) {
+        *fun = v.toObject().toFunction();
+        return true;
+    }
+    return false;
+}
+
+static __attribute__((always_inline)) inline bool
+IsNativeFunction(const js::Value &v)
+{
+    JSFunction *fun;
+    return IsFunctionObject(v, &fun) && fun->isNative();
+}
+
+static __attribute__((always_inline)) inline bool
+IsNativeFunction(const js::Value &v, JSFunction **fun)
+{
+    return IsFunctionObject(v, fun) && (*fun)->isNative();
+}
+
+static __attribute__((always_inline)) inline bool
+IsNativeFunction(const js::Value &v, JSNative native)
+{
+    JSFunction *fun;
+    return IsFunctionObject(v, &fun) && fun->maybeNative() == native;
+}
+# 115 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfuninlines.h"
+static __attribute__((always_inline)) inline bool
+ClassMethodIsNative(JSContext *cx, HandleObject obj, Class *clasp, HandleId methodid, JSNative native)
+{
+    do { } while(0);
+
+    Value v;
+    if (!HasDataProperty(cx, obj, methodid, &v)) {
+        RootedObject proto(cx, obj->getProto());
+        if (!proto || proto->getClass() != clasp || !HasDataProperty(cx, proto, methodid, &v))
+            return false;
+    }
+
+    return js::IsNativeFunction(v, native);
+}
+
+extern __attribute__((always_inline)) inline bool
+SameTraceType(const Value &lhs, const Value &rhs)
+{
+    return SameType(lhs, rhs) &&
+           (lhs.isPrimitive() ||
+            lhs.toObject().isFunction() == rhs.toObject().isFunction());
+}
+
+
+static __attribute__((always_inline)) inline bool
+IsConstructing(const Value *vp)
+{
+# 151 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsfuninlines.h"
+    return vp[1].isMagic();
+}
+
+inline bool
+IsConstructing(CallReceiver call)
+{
+    return IsConstructing(call.base());
+}
+
+inline const char *
+GetFunctionNameBytes(JSContext *cx, JSFunction *fun, JSAutoByteString *bytes)
+{
+    if (fun->atom)
+        return bytes->encode(cx, fun->atom);
+    return js_anonymous_str;
+}
+
+extern JSFunctionSpec function_methods[];
+
+extern JSBool
+Function(JSContext *cx, unsigned argc, Value *vp);
+
+extern bool
+IsBuiltinFunctionConstructor(JSFunction *fun);
+
+static inline JSObject *
+SkipScopeParent(JSObject *parent)
+{
+    if (!parent)
+        return __null;
+    while (parent->isScope())
+        parent = &parent->asScope().enclosingScope();
+    return parent;
+}
+
+inline JSFunction *
+CloneFunctionObject(JSContext *cx, HandleFunction fun, HandleObject parent,
+                    gc::AllocKind kind = JSFunction::FinalizeKind)
+{
+    do { } while(0);
+    RootedObject proto(cx, parent->global().getOrCreateFunctionPrototype(cx));
+    if (!proto)
+        return __null;
+
+    return js_CloneFunctionObject(cx, fun, parent, proto, kind);
+}
+
+inline JSFunction *
+CloneFunctionObjectIfNotSingleton(JSContext *cx, HandleFunction fun, HandleObject parent)
+{
+
+
+
+
+
+
+
+    if (fun->hasSingletonType()) {
+        if (!JSObject::setParent(cx, fun, RootedObject(cx, SkipScopeParent(parent))))
+            return __null;
+        fun->setEnvironment(parent);
+        return fun;
+    }
+
+    return CloneFunctionObject(cx, fun, parent);
+}
+
+inline JSFunction *
+CloneFunctionObject(JSContext *cx, HandleFunction fun)
+{
+
+
+
+
+
+
+
+    do { } while(0);
+
+    if (fun->hasSingletonType())
+        return fun;
+
+    return js_CloneFunctionObject(cx, fun,
+                                  RootedObject(cx, fun->environment()),
+                                  RootedObject(cx, fun->getProto()),
+                                  JSFunction::ExtendedFinalizeKind);
+}
+
+}
+
+inline void
+JSFunction::setScript(JSScript *script_)
+{
+    do { } while(0);
+    mutableScript() = script_;
+}
+
+inline void
+JSFunction::initScript(JSScript *script_)
+{
+    do { } while(0);
+    mutableScript().init(script_);
+}
+# 42 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgcinlines.h" 1
+
+
+
+
+
+
+
+#define jsgcinlines_h___ 
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscompartment.h" 1
+# 13 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgcinlines.h" 2
+
+
+
+
+
+
+namespace js {
+
+struct Shape;
+
+namespace gc {
+
+inline JSGCTraceKind
+GetGCThingTraceKind(const void *thing)
+{
+    do { } while(0);
+    const Cell *cell = reinterpret_cast<const Cell *>(thing);
+    return MapAllocToTraceKind(cell->getAllocKind());
+}
+
+
+const size_t SLOTS_TO_THING_KIND_LIMIT = 17;
+
+
+static inline AllocKind
+GetGCObjectKind(size_t numSlots)
+{
+    extern AllocKind slotsToThingKind[];
+
+    if (numSlots >= SLOTS_TO_THING_KIND_LIMIT)
+        return FINALIZE_OBJECT16;
+    return slotsToThingKind[numSlots];
+}
+
+static inline AllocKind
+GetGCObjectKind(Class *clasp)
+{
+    if (clasp == &FunctionClass)
+        return JSFunction::FinalizeKind;
+    uint32_t nslots = (((clasp)->flags >> 8) & (((uint32_t)1 << (8)) - 1));
+    if (clasp->flags & (1<<0))
+        nslots++;
+    return GetGCObjectKind(nslots);
+}
+
+
+static inline AllocKind
+GetGCArrayKind(size_t numSlots)
+{
+    extern AllocKind slotsToThingKind[];
+
+
+
+
+
+
+
+    typedef int moz_static_assert107[(ObjectElements::VALUES_PER_HEADER == 2) ? 1 : -1];
+    if (numSlots > JSObject::NELEMENTS_LIMIT || numSlots + 2 >= SLOTS_TO_THING_KIND_LIMIT)
+        return FINALIZE_OBJECT2;
+    return slotsToThingKind[numSlots + 2];
+}
+
+static inline AllocKind
+GetGCObjectFixedSlotsKind(size_t numFixedSlots)
+{
+    extern AllocKind slotsToThingKind[];
+
+    do { } while(0);
+    return slotsToThingKind[numFixedSlots];
+}
+
+static inline bool
+IsBackgroundAllocKind(AllocKind kind)
+{
+    do { } while(0);
+    return kind <= FINALIZE_OBJECT_LAST && kind % 2 == 1;
+}
+
+static inline AllocKind
+GetBackgroundAllocKind(AllocKind kind)
+{
+    do { } while(0);
+    return (AllocKind) (kind + 1);
+}
+
+
+
+
+
+static inline bool
+TryIncrementAllocKind(AllocKind *kindp)
+{
+    size_t next = size_t(*kindp) + 2;
+    if (next >= size_t(FINALIZE_OBJECT_LIMIT))
+        return false;
+    *kindp = AllocKind(next);
+    return true;
+}
+
+
+static inline size_t
+GetGCKindSlots(AllocKind thingKind)
+{
+
+    switch (thingKind) {
+      case FINALIZE_OBJECT0:
+      case FINALIZE_OBJECT0_BACKGROUND:
+        return 0;
+      case FINALIZE_OBJECT2:
+      case FINALIZE_OBJECT2_BACKGROUND:
+        return 2;
+      case FINALIZE_OBJECT4:
+      case FINALIZE_OBJECT4_BACKGROUND:
+        return 4;
+      case FINALIZE_OBJECT8:
+      case FINALIZE_OBJECT8_BACKGROUND:
+        return 8;
+      case FINALIZE_OBJECT12:
+      case FINALIZE_OBJECT12_BACKGROUND:
+        return 12;
+      case FINALIZE_OBJECT16:
+      case FINALIZE_OBJECT16_BACKGROUND:
+        return 16;
+      default:
+        __builtin_unreachable();
+        return 0;
+    }
+}
+
+static inline size_t
+GetGCKindSlots(AllocKind thingKind, Class *clasp)
+{
+    size_t nslots = GetGCKindSlots(thingKind);
+
+
+    if (clasp->flags & (1<<0)) {
+        do { } while(0);
+        nslots--;
+    }
+
+
+
+
+
+    if (clasp == &FunctionClass)
+        nslots = 0;
+
+    return nslots;
+}
+
+static inline void
+GCPoke(JSRuntime *rt, Value oldval)
+{
+
+
+
+
+
+
+    rt->gcPoke = true;
+# 183 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgcinlines.h"
+}
+
+
+
+
+
+template <class ArenaOp, class CellOp>
+void
+ForEachArenaAndCell(JSCompartment *compartment, AllocKind thingKind,
+                    ArenaOp arenaOp, CellOp cellOp)
+{
+    size_t thingSize = Arena::thingSize(thingKind);
+    ArenaHeader *aheader = compartment->arenas.getFirstArena(thingKind);
+
+    for (; aheader; aheader = aheader->next) {
+        Arena *arena = aheader->getArena();
+        arenaOp(arena);
+        FreeSpan firstSpan(aheader->getFirstFreeSpan());
+        const FreeSpan *span = &firstSpan;
+
+        for (uintptr_t thing = arena->thingsStart(thingKind); ; thing += thingSize) {
+            do { } while(0);
+            if (thing == span->first) {
+                if (!span->hasNext())
+                    break;
+                thing = span->last;
+                span = span->nextSpan();
+            } else {
+                Cell *t = reinterpret_cast<Cell *>(thing);
+                cellOp(t);
+            }
+        }
+    }
+}
+
+class CellIterImpl
+{
+    size_t firstThingOffset;
+    size_t thingSize;
+    ArenaHeader *aheader;
+    FreeSpan firstSpan;
+    const FreeSpan *span;
+    uintptr_t thing;
+    Cell *cell;
+
+  protected:
+    CellIterImpl() {
+    }
+
+    void initSpan(JSCompartment *comp, AllocKind kind) {
+        do { } while(0);
+        firstThingOffset = Arena::firstThingOffset(kind);
+        thingSize = Arena::thingSize(kind);
+        firstSpan.initAsEmpty();
+        span = &firstSpan;
+        thing = span->first;
+    }
+
+    void init(ArenaHeader *singleAheader) {
+        aheader = singleAheader;
+        initSpan(aheader->compartment, aheader->getAllocKind());
+        next();
+        aheader = __null;
+    }
+
+    void init(JSCompartment *comp, AllocKind kind) {
+        initSpan(comp, kind);
+        aheader = comp->arenas.getFirstArena(kind);
+        next();
+    }
+
+  public:
+    bool done() const {
+        return !cell;
+    }
+
+    template<typename T> T *get() const {
+        do { } while(0);
+        return static_cast<T *>(cell);
+    }
+
+    Cell *getCell() const {
+        do { } while(0);
+        return cell;
+    }
+
+    void next() {
+        for (;;) {
+            if (thing != span->first)
+                break;
+            if ((__builtin_expect((span->hasNext()), 1))) {
+                thing = span->last + thingSize;
+                span = span->nextSpan();
+                break;
+            }
+            if (!aheader) {
+                cell = __null;
+                return;
+            }
+            firstSpan = aheader->getFirstFreeSpan();
+            span = &firstSpan;
+            thing = aheader->arenaAddress() | firstThingOffset;
+            aheader = aheader->next;
+        }
+        cell = reinterpret_cast<Cell *>(thing);
+        thing += thingSize;
+    }
+};
+
+class CellIterUnderGC : public CellIterImpl
+{
+  public:
+    CellIterUnderGC(JSCompartment *comp, AllocKind kind) {
+        do { } while(0);
+        init(comp, kind);
+    }
+
+    CellIterUnderGC(ArenaHeader *aheader) {
+        do { } while(0);
+        init(aheader);
+    }
+};
+
+
+
+
+
+
+class CellIter : public CellIterImpl
+{
+    ArenaLists *lists;
+    AllocKind kind;
+
+
+
+  public:
+    CellIter(JSCompartment *comp, AllocKind kind)
+      : lists(&comp->arenas),
+        kind(kind)
+    {
+
+
+
+
+
+
+        do { } while(0);
+        if (lists->isSynchronizedFreeList(kind)) {
+            lists = __null;
+        } else {
+            do { } while(0);
+            lists->copyFreeListToArena(kind);
+        }
+
+
+
+
+        init(comp, kind);
+    }
+
+    ~CellIter() {
+
+
+
+
+        if (lists)
+            lists->clearFreeListInArena(kind);
+    }
+};
+
+
+
+inline void EmptyArenaOp(Arena *arena) {}
+inline void EmptyCellOp(Cell *t) {}
+
+class GCCompartmentsIter {
+  private:
+    JSCompartment **it, **end;
+
+  public:
+    GCCompartmentsIter(JSRuntime *rt) {
+        do { } while(0);
+        it = rt->compartments.begin();
+        end = rt->compartments.end();
+        if (!(*it)->isCollecting())
+            next();
+    }
+
+    bool done() const { return it == end; }
+
+    void next() {
+        do { } while(0);
+        do {
+            it++;
+        } while (it != end && !(*it)->isCollecting());
+    }
+
+    JSCompartment *get() const {
+        do { } while(0);
+        return *it;
+    }
+
+    operator JSCompartment *() const { return get(); }
+    JSCompartment *operator->() const { return get(); }
+};
+# 396 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgcinlines.h"
+template <typename T>
+inline T *
+NewGCThing(JSContext *cx, js::gc::AllocKind kind, size_t thingSize)
+{
+    do { } while(0);
+
+    do { } while (0)
+                                                                                          ;
+
+    do { } while(0);
+    do { } while(0);
+
+
+    do {} while(0);
+
+
+
+
+
+
+    MaybeCheckStackRoots(cx);
+
+    JSCompartment *comp = cx->compartment;
+    void *t = comp->arenas.allocateFromFreeList(kind, thingSize);
+    if (!t)
+        t = js::gc::ArenaLists::refillFreeList(cx, kind);
+
+    do { } while (0)
+                                                                                ;
+    return static_cast<T *>(t);
+}
+
+
+template <typename T>
+inline T *
+TryNewGCThing(JSContext *cx, js::gc::AllocKind kind, size_t thingSize)
+{
+    do { } while(0);
+
+    do { } while (0)
+                                                                                          ;
+
+    do { } while(0);
+    do { } while(0);
+
+
+
+
+
+
+    void *t = cx->compartment->arenas.allocateFromFreeList(kind, thingSize);
+    do { } while (0)
+                                                                                ;
+    return static_cast<T *>(t);
+}
+
+}
+}
+
+inline JSObject *
+js_NewGCObject(JSContext *cx, js::gc::AllocKind kind)
+{
+    do { } while(0);
+    return js::gc::NewGCThing<JSObject>(cx, kind, js::gc::Arena::thingSize(kind));
+}
+
+inline JSObject *
+js_TryNewGCObject(JSContext *cx, js::gc::AllocKind kind)
+{
+    do { } while(0);
+    return js::gc::TryNewGCThing<JSObject>(cx, kind, js::gc::Arena::thingSize(kind));
+}
+
+inline JSString *
+js_NewGCString(JSContext *cx)
+{
+    return js::gc::NewGCThing<JSString>(cx, js::gc::FINALIZE_STRING, sizeof(JSString));
+}
+
+inline JSShortString *
+js_NewGCShortString(JSContext *cx)
+{
+    return js::gc::NewGCThing<JSShortString>(cx, js::gc::FINALIZE_SHORT_STRING, sizeof(JSShortString));
+}
+
+inline JSExternalString *
+js_NewGCExternalString(JSContext *cx)
+{
+    return js::gc::NewGCThing<JSExternalString>(cx, js::gc::FINALIZE_EXTERNAL_STRING,
+                                                sizeof(JSExternalString));
+}
+
+inline JSScript *
+js_NewGCScript(JSContext *cx)
+{
+    return js::gc::NewGCThing<JSScript>(cx, js::gc::FINALIZE_SCRIPT, sizeof(JSScript));
+}
+
+inline js::Shape *
+js_NewGCShape(JSContext *cx)
+{
+    return js::gc::NewGCThing<js::Shape>(cx, js::gc::FINALIZE_SHAPE, sizeof(js::Shape));
+}
+
+inline js::BaseShape *
+js_NewGCBaseShape(JSContext *cx)
+{
+    return js::gc::NewGCThing<js::BaseShape>(cx, js::gc::FINALIZE_BASE_SHAPE, sizeof(js::BaseShape));
+}
+
+
+extern JSXML *
+js_NewGCXML(JSContext *cx);
+# 43 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinferinlines.h" 1
+# 10 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinferinlines.h"
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsanalyze.h" 1
+# 10 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsanalyze.h"
+#define jsanalyze_h___ 
+
+# 1 "./jsautooplen.h" 1
+
+
+
+
+
+#define JSOP_NOP_LENGTH 1
+#define JSOP_UNDEFINED_LENGTH 1
+#define JSOP_POPV_LENGTH 1
+#define JSOP_ENTERWITH_LENGTH 1
+#define JSOP_LEAVEWITH_LENGTH 1
+#define JSOP_RETURN_LENGTH 1
+#define JSOP_GOTO_LENGTH 5
+#define JSOP_IFEQ_LENGTH 5
+#define JSOP_IFNE_LENGTH 5
+#define JSOP_ARGUMENTS_LENGTH 1
+#define JSOP_SWAP_LENGTH 1
+#define JSOP_POPN_LENGTH 3
+#define JSOP_DUP_LENGTH 1
+#define JSOP_DUP2_LENGTH 1
+#define JSOP_SETCONST_LENGTH 5
+#define JSOP_BITOR_LENGTH 1
+#define JSOP_BITXOR_LENGTH 1
+#define JSOP_BITAND_LENGTH 1
+#define JSOP_EQ_LENGTH 1
+#define JSOP_NE_LENGTH 1
+#define JSOP_LT_LENGTH 1
+#define JSOP_LE_LENGTH 1
+#define JSOP_GT_LENGTH 1
+#define JSOP_GE_LENGTH 1
+#define JSOP_LSH_LENGTH 1
+#define JSOP_RSH_LENGTH 1
+#define JSOP_URSH_LENGTH 1
+#define JSOP_ADD_LENGTH 1
+#define JSOP_SUB_LENGTH 1
+#define JSOP_MUL_LENGTH 1
+#define JSOP_DIV_LENGTH 1
+#define JSOP_MOD_LENGTH 1
+#define JSOP_NOT_LENGTH 1
+#define JSOP_BITNOT_LENGTH 1
+#define JSOP_NEG_LENGTH 1
+#define JSOP_POS_LENGTH 1
+#define JSOP_DELNAME_LENGTH 5
+#define JSOP_DELPROP_LENGTH 5
+#define JSOP_DELELEM_LENGTH 1
+#define JSOP_TYPEOF_LENGTH 1
+#define JSOP_VOID_LENGTH 1
+#define JSOP_INCNAME_LENGTH 6
+#define JSOP_INCPROP_LENGTH 6
+#define JSOP_INCELEM_LENGTH 2
+#define JSOP_DECNAME_LENGTH 6
+#define JSOP_DECPROP_LENGTH 6
+#define JSOP_DECELEM_LENGTH 2
+#define JSOP_NAMEINC_LENGTH 6
+#define JSOP_PROPINC_LENGTH 6
+#define JSOP_ELEMINC_LENGTH 2
+#define JSOP_NAMEDEC_LENGTH 6
+#define JSOP_PROPDEC_LENGTH 6
+#define JSOP_ELEMDEC_LENGTH 2
+#define JSOP_GETPROP_LENGTH 5
+#define JSOP_SETPROP_LENGTH 5
+#define JSOP_GETELEM_LENGTH 1
+#define JSOP_SETELEM_LENGTH 1
+#define JSOP_CALLNAME_LENGTH 5
+#define JSOP_CALL_LENGTH 3
+#define JSOP_NAME_LENGTH 5
+#define JSOP_DOUBLE_LENGTH 5
+#define JSOP_STRING_LENGTH 5
+#define JSOP_ZERO_LENGTH 1
+#define JSOP_ONE_LENGTH 1
+#define JSOP_NULL_LENGTH 1
+#define JSOP_THIS_LENGTH 1
+#define JSOP_FALSE_LENGTH 1
+#define JSOP_TRUE_LENGTH 1
+#define JSOP_OR_LENGTH 5
+#define JSOP_AND_LENGTH 5
+#define JSOP_TABLESWITCH_LENGTH -1
+#define JSOP_LOOKUPSWITCH_LENGTH -1
+#define JSOP_STRICTEQ_LENGTH 1
+#define JSOP_STRICTNE_LENGTH 1
+#define JSOP_SETCALL_LENGTH 1
+#define JSOP_ITER_LENGTH 2
+#define JSOP_MOREITER_LENGTH 1
+#define JSOP_ITERNEXT_LENGTH 2
+#define JSOP_ENDITER_LENGTH 1
+#define JSOP_FUNAPPLY_LENGTH 3
+#define JSOP_OBJECT_LENGTH 5
+#define JSOP_POP_LENGTH 1
+#define JSOP_NEW_LENGTH 3
+#define JSOP_UNUSED0_LENGTH 1
+#define JSOP_GETARG_LENGTH 3
+#define JSOP_SETARG_LENGTH 3
+#define JSOP_GETLOCAL_LENGTH 3
+#define JSOP_SETLOCAL_LENGTH 3
+#define JSOP_UINT16_LENGTH 3
+#define JSOP_NEWINIT_LENGTH 5
+#define JSOP_NEWARRAY_LENGTH 4
+#define JSOP_NEWOBJECT_LENGTH 5
+#define JSOP_ENDINIT_LENGTH 1
+#define JSOP_INITPROP_LENGTH 5
+#define JSOP_INITELEM_LENGTH 1
+#define JSOP_UNUSED14_LENGTH 1
+#define JSOP_UNUSED15_LENGTH 1
+#define JSOP_INCARG_LENGTH 3
+#define JSOP_DECARG_LENGTH 3
+#define JSOP_ARGINC_LENGTH 3
+#define JSOP_ARGDEC_LENGTH 3
+#define JSOP_INCLOCAL_LENGTH 3
+#define JSOP_DECLOCAL_LENGTH 3
+#define JSOP_LOCALINC_LENGTH 3
+#define JSOP_LOCALDEC_LENGTH 3
+#define JSOP_LEAVEFORLETIN_LENGTH 1
+#define JSOP_LABEL_LENGTH 5
+#define JSOP_UNUSED3_LENGTH 1
+#define JSOP_FUNCALL_LENGTH 3
+#define JSOP_LOOPHEAD_LENGTH 1
+#define JSOP_BINDNAME_LENGTH 5
+#define JSOP_SETNAME_LENGTH 5
+#define JSOP_THROW_LENGTH 1
+#define JSOP_IN_LENGTH 1
+#define JSOP_INSTANCEOF_LENGTH 1
+#define JSOP_DEBUGGER_LENGTH 1
+#define JSOP_GOSUB_LENGTH 5
+#define JSOP_RETSUB_LENGTH 1
+#define JSOP_EXCEPTION_LENGTH 1
+#define JSOP_LINENO_LENGTH 3
+#define JSOP_CONDSWITCH_LENGTH 1
+#define JSOP_CASE_LENGTH 5
+#define JSOP_DEFAULT_LENGTH 5
+#define JSOP_EVAL_LENGTH 3
+#define JSOP_ENUMELEM_LENGTH 1
+#define JSOP_GETTER_LENGTH 1
+#define JSOP_SETTER_LENGTH 1
+#define JSOP_DEFFUN_LENGTH 5
+#define JSOP_DEFCONST_LENGTH 5
+#define JSOP_DEFVAR_LENGTH 5
+#define JSOP_LAMBDA_LENGTH 5
+#define JSOP_CALLEE_LENGTH 1
+#define JSOP_UNUSED31_LENGTH 1
+#define JSOP_PICK_LENGTH 2
+#define JSOP_TRY_LENGTH 1
+#define JSOP_FINALLY_LENGTH 1
+#define JSOP_GETALIASEDVAR_LENGTH 9
+#define JSOP_CALLALIASEDVAR_LENGTH 9
+#define JSOP_SETALIASEDVAR_LENGTH 9
+#define JSOP_INCALIASEDVAR_LENGTH 10
+#define JSOP_DECALIASEDVAR_LENGTH 10
+#define JSOP_ALIASEDVARINC_LENGTH 10
+#define JSOP_ALIASEDVARDEC_LENGTH 10
+#define JSOP_UNUSED8_LENGTH 1
+#define JSOP_UNUSED9_LENGTH 1
+#define JSOP_UNUSED10_LENGTH 1
+#define JSOP_UNUSED11_LENGTH 1
+#define JSOP_UNUSED12_LENGTH 1
+#define JSOP_UNUSED13_LENGTH 1
+#define JSOP_BACKPATCH_LENGTH 5
+#define JSOP_BACKPATCH_POP_LENGTH 5
+#define JSOP_THROWING_LENGTH 1
+#define JSOP_SETRVAL_LENGTH 1
+#define JSOP_RETRVAL_LENGTH 1
+#define JSOP_GETGNAME_LENGTH 5
+#define JSOP_SETGNAME_LENGTH 5
+#define JSOP_INCGNAME_LENGTH 6
+#define JSOP_DECGNAME_LENGTH 6
+#define JSOP_GNAMEINC_LENGTH 6
+#define JSOP_GNAMEDEC_LENGTH 6
+#define JSOP_REGEXP_LENGTH 5
+#define JSOP_DEFXMLNS_LENGTH 1
+#define JSOP_ANYNAME_LENGTH 1
+#define JSOP_QNAMEPART_LENGTH 5
+#define JSOP_QNAMECONST_LENGTH 5
+#define JSOP_QNAME_LENGTH 1
+#define JSOP_TOATTRNAME_LENGTH 1
+#define JSOP_TOATTRVAL_LENGTH 1
+#define JSOP_ADDATTRNAME_LENGTH 1
+#define JSOP_ADDATTRVAL_LENGTH 1
+#define JSOP_BINDXMLNAME_LENGTH 1
+#define JSOP_SETXMLNAME_LENGTH 1
+#define JSOP_XMLNAME_LENGTH 1
+#define JSOP_DESCENDANTS_LENGTH 1
+#define JSOP_FILTER_LENGTH 5
+#define JSOP_ENDFILTER_LENGTH 5
+#define JSOP_TOXML_LENGTH 1
+#define JSOP_TOXMLLIST_LENGTH 1
+#define JSOP_XMLTAGEXPR_LENGTH 1
+#define JSOP_XMLELTEXPR_LENGTH 1
+#define JSOP_XMLCDATA_LENGTH 5
+#define JSOP_XMLCOMMENT_LENGTH 5
+#define JSOP_XMLPI_LENGTH 5
+#define JSOP_DELDESC_LENGTH 1
+#define JSOP_CALLPROP_LENGTH 5
+#define JSOP_ENTERLET0_LENGTH 5
+#define JSOP_ENTERLET1_LENGTH 5
+#define JSOP_UINT24_LENGTH 4
+#define JSOP_UNUSED18_LENGTH 1
+#define JSOP_UNUSED19_LENGTH 1
+#define JSOP_UNUSED20_LENGTH 1
+#define JSOP_STARTXML_LENGTH 1
+#define JSOP_STARTXMLEXPR_LENGTH 1
+#define JSOP_CALLELEM_LENGTH 1
+#define JSOP_STOP_LENGTH 1
+#define JSOP_GETXPROP_LENGTH 5
+#define JSOP_CALLXMLNAME_LENGTH 1
+#define JSOP_TYPEOFEXPR_LENGTH 1
+#define JSOP_ENTERBLOCK_LENGTH 5
+#define JSOP_LEAVEBLOCK_LENGTH 3
+#define JSOP_UNUSED1_LENGTH 1
+#define JSOP_UNUSED2_LENGTH 1
+#define JSOP_GENERATOR_LENGTH 1
+#define JSOP_YIELD_LENGTH 1
+#define JSOP_ARRAYPUSH_LENGTH 3
+#define JSOP_GETFUNNS_LENGTH 1
+#define JSOP_ENUMCONSTELEM_LENGTH 1
+#define JSOP_LEAVEBLOCKEXPR_LENGTH 3
+#define JSOP_UNUSED21_LENGTH 1
+#define JSOP_UNUSED22_LENGTH 1
+#define JSOP_UNUSED23_LENGTH 1
+#define JSOP_CALLGNAME_LENGTH 5
+#define JSOP_CALLLOCAL_LENGTH 3
+#define JSOP_CALLARG_LENGTH 3
+#define JSOP_BINDGNAME_LENGTH 5
+#define JSOP_INT8_LENGTH 2
+#define JSOP_INT32_LENGTH 5
+#define JSOP_LENGTH_LENGTH 5
+#define JSOP_HOLE_LENGTH 1
+#define JSOP_UNUSED17_LENGTH 1
+#define JSOP_UNUSED24_LENGTH 1
+#define JSOP_UNUSED25_LENGTH 1
+#define JSOP_UNUSED29_LENGTH 1
+#define JSOP_UNUSED30_LENGTH 1
+#define JSOP_REST_LENGTH 1
+#define JSOP_TOID_LENGTH 1
+#define JSOP_IMPLICITTHIS_LENGTH 5
+#define JSOP_LOOPENTRY_LENGTH 1
+#define JSOP_ACTUALSFILLED_LENGTH 3
+# 13 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsanalyze.h" 2
+
+
+
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ScopeObject.h" 1
+# 21 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsanalyze.h" 2
+
+struct JSScript;
+
+
+namespace js { namespace mjit { struct RegisterAllocation; } }
+
+namespace js {
+namespace analyze {
+# 59 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsanalyze.h"
+class Bytecode
+{
+    friend class ScriptAnalysis;
+
+  public:
+    Bytecode() { PodZero(this); }
+
+
+
+
+    bool jumpTarget : 1;
+
+
+    bool fallthrough : 1;
+
+
+    bool jumpFallthrough : 1;
+
+
+    bool switchTarget : 1;
+
+
+
+
+
+    bool unconditional : 1;
+
+
+    bool analyzed : 1;
+
+
+    bool exceptionEntry : 1;
+
+
+    bool inTryBlock : 1;
+
+
+    bool inLoop : 1;
+
+
+    bool safePoint : 1;
+
+
+
+
+
+    bool monitoredTypes : 1;
+
+
+    bool monitoredTypesReturn : 1;
+
+
+
+
+
+    bool arrayWriteHole: 1;
+    bool getStringElement:1;
+    bool accessGetter: 1;
+
+
+    uint32_t stackDepth;
+
+  private:
+
+    union {
+
+        types::TypeSet *observedTypes;
+
+
+        LoopAnalysis *loop;
+    };
+
+
+
+
+    mjit::RegisterAllocation *allocation;
+
+
+
+
+    SSAValue *poppedValues;
+
+
+    SSAUseChain **pushedUses;
+
+    union {
+
+
+
+
+
+
+        SlotValue *newValues;
+# 161 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsanalyze.h"
+        Vector<SlotValue> *pendingValues;
+    };
+
+
+
+
+    types::TypeSet *pushedTypes;
+
+
+    types::TypeBarrier *typeBarriers;
+};
+
+static inline unsigned
+GetDefCount(JSScript *script, unsigned offset)
+{
+    do { } while(0);
+    jsbytecode *pc = script->code + offset;
+
+
+
+
+
+    switch (JSOp(*pc)) {
+      case JSOP_OR:
+      case JSOP_AND:
+        return 1;
+      case JSOP_FILTER:
+        return 2;
+      case JSOP_PICK:
+
+
+
+
+
+
+        return (pc[1] + 1);
+      default:
+        return StackDefs(script, pc);
+    }
+}
+
+static inline unsigned
+GetUseCount(JSScript *script, unsigned offset)
+{
+    do { } while(0);
+    jsbytecode *pc = script->code + offset;
+
+    if (JSOp(*pc) == JSOP_PICK)
+        return (pc[1] + 1);
+    if (js_CodeSpec[*pc].nuses == -1)
+        return StackUses(script, pc);
+    return js_CodeSpec[*pc].nuses;
+}
+
+
+
+
+
+static inline bool
+ExtendedDef(jsbytecode *pc)
+{
+    switch ((JSOp)*pc) {
+      case JSOP_SETARG:
+      case JSOP_INCARG:
+      case JSOP_DECARG:
+      case JSOP_ARGINC:
+      case JSOP_ARGDEC:
+      case JSOP_SETLOCAL:
+      case JSOP_INCLOCAL:
+      case JSOP_DECLOCAL:
+      case JSOP_LOCALINC:
+      case JSOP_LOCALDEC:
+        return true;
+      default:
+        return false;
+    }
+}
+
+
+static inline bool
+BytecodeNoFallThrough(JSOp op)
+{
+    switch (op) {
+      case JSOP_GOTO:
+      case JSOP_DEFAULT:
+      case JSOP_RETURN:
+      case JSOP_STOP:
+      case JSOP_RETRVAL:
+      case JSOP_THROW:
+      case JSOP_TABLESWITCH:
+      case JSOP_LOOKUPSWITCH:
+      case JSOP_FILTER:
+        return true;
+      case JSOP_GOSUB:
+
+        return false;
+      default:
+        return false;
+    }
+}
+
+
+
+
+
+static inline bool
+ExtendedUse(jsbytecode *pc)
+{
+    if (ExtendedDef(pc))
+        return true;
+    switch ((JSOp)*pc) {
+      case JSOP_GETARG:
+      case JSOP_CALLARG:
+      case JSOP_GETLOCAL:
+      case JSOP_CALLLOCAL:
+        return true;
+      default:
+        return false;
+    }
+}
+
+static inline JSOp
+ReverseCompareOp(JSOp op)
+{
+    switch (op) {
+      case JSOP_GT:
+        return JSOP_LT;
+      case JSOP_GE:
+        return JSOP_LE;
+      case JSOP_LT:
+        return JSOP_GT;
+      case JSOP_LE:
+        return JSOP_GE;
+      default:
+        __builtin_unreachable();
+        return op;
+    }
+}
+
+static inline unsigned
+FollowBranch(JSContext *cx, JSScript *script, unsigned offset)
+{
+
+
+
+
+
+    jsbytecode *pc = script->code + offset;
+    unsigned targetOffset = offset + GET_JUMP_OFFSET(pc);
+    if (targetOffset < offset) {
+        jsbytecode *target = script->code + targetOffset;
+        JSOp nop = JSOp(*target);
+        if (nop == JSOP_GOTO)
+            return targetOffset + GET_JUMP_OFFSET(target);
+    }
+    return targetOffset;
+}
+
+
+static inline uint32_t CalleeSlot() {
+    return 0;
+}
+static inline uint32_t ThisSlot() {
+    return 1;
+}
+static inline uint32_t ArgSlot(uint32_t arg) {
+    return 2 + arg;
+}
+static inline uint32_t LocalSlot(JSScript *script, uint32_t local) {
+    return 2 + (script->function() ? script->function()->nargs : 0) + local;
+}
+static inline uint32_t TotalSlots(JSScript *script) {
+    return LocalSlot(script, 0) + script->nfixed;
+}
+
+static inline uint32_t StackSlot(JSScript *script, uint32_t index) {
+    return TotalSlots(script) + index;
+}
+
+static inline uint32_t GetBytecodeSlot(JSScript *script, jsbytecode *pc)
+{
+    switch (JSOp(*pc)) {
+
+      case JSOP_GETARG:
+      case JSOP_CALLARG:
+      case JSOP_SETARG:
+      case JSOP_INCARG:
+      case JSOP_DECARG:
+      case JSOP_ARGINC:
+      case JSOP_ARGDEC:
+        return ArgSlot(((unsigned)(((pc)[1] << 8) | (pc)[2])));
+
+      case JSOP_GETLOCAL:
+      case JSOP_CALLLOCAL:
+      case JSOP_SETLOCAL:
+      case JSOP_INCLOCAL:
+      case JSOP_DECLOCAL:
+      case JSOP_LOCALINC:
+      case JSOP_LOCALDEC:
+        return LocalSlot(script, ((unsigned)(((pc)[1] << 8) | (pc)[2])));
+
+      case JSOP_GETALIASEDVAR:
+      case JSOP_CALLALIASEDVAR:
+      case JSOP_SETALIASEDVAR:
+      {
+          ScopeCoordinate sc = ScopeCoordinate(pc);
+          return script->bindings.bindingIsArg(sc.binding)
+                 ? ArgSlot(script->bindings.bindingToArg(sc.binding))
+                 : LocalSlot(script, script->bindings.bindingToLocal(sc.binding));
+      }
+
+
+      case JSOP_THIS:
+        return ThisSlot();
+
+      default:
+        __builtin_unreachable();
+        return 0;
+    }
+}
+
+
+static inline bool
+BytecodeUpdatesSlot(JSOp op)
+{
+    switch (op) {
+      case JSOP_SETARG:
+      case JSOP_SETLOCAL:
+      case JSOP_INCARG:
+      case JSOP_DECARG:
+      case JSOP_ARGINC:
+      case JSOP_ARGDEC:
+      case JSOP_INCLOCAL:
+      case JSOP_DECLOCAL:
+      case JSOP_LOCALINC:
+      case JSOP_LOCALDEC:
+        return true;
+      default:
+        return false;
+    }
+}
+
+static inline int32_t
+GetBytecodeInteger(jsbytecode *pc)
+{
+    switch (JSOp(*pc)) {
+      case JSOP_ZERO: return 0;
+      case JSOP_ONE: return 1;
+      case JSOP_UINT16: return ((unsigned)(((pc)[1] << 8) | (pc)[2]));
+      case JSOP_UINT24: return ((jsatomid)(((pc)[1] << 16) | ((pc)[2] << 8) | (pc)[3]));
+      case JSOP_INT8: return (int8_t((pc)[1]));
+      case JSOP_INT32: return (((uint32_t((pc)[1]) << 24) | (uint32_t((pc)[2]) << 16) | (uint32_t((pc)[3]) << 8) | uint32_t((pc)[4])));
+      default:
+        __builtin_unreachable();
+        return 0;
+    }
+}
+# 426 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsanalyze.h"
+struct Lifetime
+{
+
+
+
+
+    uint32_t start;
+    uint32_t end;
+
+
+
+
+
+    uint32_t savedEnd;
+
+
+
+
+
+
+    bool loopTail;
+
+
+
+
+
+    bool write;
+
+
+    Lifetime *next;
+
+    Lifetime(uint32_t offset, uint32_t savedEnd, Lifetime *next)
+        : start(offset), end(offset), savedEnd(savedEnd),
+          loopTail(false), write(false), next(next)
+    {}
+};
+
+
+class LoopAnalysis
+{
+  public:
+
+    LoopAnalysis *parent;
+
+
+    uint32_t head;
+
+
+
+
+
+    uint32_t backedge;
+
+
+    uint32_t entry;
+
+
+
+
+
+
+
+    uint32_t lastBlock;
+
+
+
+
+
+    bool hasSafePoints;
+
+
+    bool hasCallsLoops;
+};
+
+
+struct LifetimeVariable
+{
+
+    Lifetime *lifetime;
+
+
+    Lifetime *saved;
+
+
+    uint32_t savedEnd : 31;
+
+
+    bool ensured : 1;
+
+
+    Lifetime * live(uint32_t offset) const {
+        if (lifetime && lifetime->end >= offset)
+            return lifetime;
+        Lifetime *segment = lifetime ? lifetime : saved;
+        while (segment && segment->start <= offset) {
+            if (segment->end >= offset)
+                return segment;
+            segment = segment->next;
+        }
+        return __null;
+    }
+
+
+
+
+
+    uint32_t firstWrite(uint32_t start, uint32_t end) const {
+        Lifetime *segment = lifetime ? lifetime : saved;
+        while (segment && segment->start <= end) {
+            if (segment->start >= start && segment->write)
+                return segment->start;
+            segment = segment->next;
+        }
+        return (4294967295U);
+    }
+    uint32_t firstWrite(LoopAnalysis *loop) const {
+        return firstWrite(loop->head, loop->backedge);
+    }
+
+
+    bool nonDecreasing(JSScript *script, LoopAnalysis *loop) const {
+        Lifetime *segment = lifetime ? lifetime : saved;
+        while (segment && segment->start <= loop->backedge) {
+            if (segment->start >= loop->head && segment->write) {
+                switch (JSOp(script->code[segment->start])) {
+                  case JSOP_INCLOCAL:
+                  case JSOP_LOCALINC:
+                  case JSOP_INCARG:
+                  case JSOP_ARGINC:
+                    break;
+                  default:
+                    return false;
+                }
+            }
+            segment = segment->next;
+        }
+        return true;
+    }
+
+
+
+
+
+    uint32_t onlyWrite(LoopAnalysis *loop) const {
+        uint32_t offset = (4294967295U);
+        Lifetime *segment = lifetime ? lifetime : saved;
+        while (segment && segment->start <= loop->backedge) {
+            if (segment->start >= loop->head && segment->write) {
+                if (offset != (4294967295U))
+                    return (4294967295U);
+                offset = segment->start;
+            }
+            segment = segment->next;
+        }
+        return offset;
+    }
+
+
+
+
+};
+
+struct SSAPhiNode;
+
+
+
+
+
+
+
+class SSAValue
+{
+    friend class ScriptAnalysis;
+
+  public:
+    enum Kind {
+        EMPTY = 0,
+        PUSHED = 1,
+        VAR = 2,
+        PHI = 3
+    };
+
+    Kind kind() const {
+        do { } while(0);
+
+
+        return (Kind) (u.pushed.kind & 0x3);
+    }
+
+    bool operator==(const SSAValue &o) const {
+        return !memcmp(this, &o, sizeof(SSAValue));
+    }
+
+
+
+    uint32_t pushedOffset() const {
+        do { } while(0);
+        return u.pushed.offset;
+    }
+
+    uint32_t pushedIndex() const {
+        do { } while(0);
+        return u.pushed.index;
+    }
+
+
+
+    bool varInitial() const {
+        do { } while(0);
+        return u.var.initial;
+    }
+
+    uint32_t varSlot() const {
+        do { } while(0);
+        return u.var.slot;
+    }
+
+    uint32_t varOffset() const {
+        do { } while(0);
+        return u.var.offset;
+    }
+
+
+
+    uint32_t phiSlot() const;
+    uint32_t phiLength() const;
+    const SSAValue &phiValue(uint32_t i) const;
+    types::TypeSet *phiTypes() const;
+
+
+    uint32_t phiOffset() const {
+        do { } while(0);
+        return u.phi.offset;
+    }
+
+    SSAPhiNode *phiNode() const {
+        do { } while(0);
+        return u.phi.node;
+    }
+
+
+
+
+
+
+
+    void clear() {
+        PodZero(this);
+        do { } while(0);
+    }
+
+    void initPushed(uint32_t offset, uint32_t index) {
+        clear();
+        u.pushed.kind = PUSHED;
+        u.pushed.offset = offset;
+        u.pushed.index = index;
+    }
+
+    static SSAValue PushedValue(uint32_t offset, uint32_t index) {
+        SSAValue v;
+        v.initPushed(offset, index);
+        return v;
+    }
+
+    void initInitial(uint32_t slot) {
+        clear();
+        u.var.kind = VAR;
+        u.var.initial = true;
+        u.var.slot = slot;
+    }
+
+    void initWritten(uint32_t slot, uint32_t offset) {
+        clear();
+        u.var.kind = VAR;
+        u.var.initial = false;
+        u.var.slot = slot;
+        u.var.offset = offset;
+    }
+
+    static SSAValue WrittenVar(uint32_t slot, uint32_t offset) {
+        SSAValue v;
+        v.initWritten(slot, offset);
+        return v;
+    }
+
+    void initPhi(uint32_t offset, SSAPhiNode *node) {
+        clear();
+        u.phi.kind = PHI;
+        u.phi.offset = offset;
+        u.phi.node = node;
+    }
+
+    static SSAValue PhiValue(uint32_t offset, SSAPhiNode *node) {
+        SSAValue v;
+        v.initPhi(offset, node);
+        return v;
+    }
+
+  private:
+    union {
+        struct {
+            Kind kind : 2;
+            uint32_t offset : 30;
+            uint32_t index;
+        } pushed;
+        struct {
+            Kind kind : 2;
+            bool initial : 1;
+            uint32_t slot : 29;
+            uint32_t offset;
+        } var;
+        struct {
+            Kind kind : 2;
+            uint32_t offset : 30;
+            SSAPhiNode *node;
+        } phi;
+    } u;
+};
+
+
+
+
+
+
+
+struct SSAPhiNode
+{
+    types::TypeSet types;
+    uint32_t slot;
+    uint32_t length;
+    SSAValue *options;
+    SSAUseChain *uses;
+    SSAPhiNode() { PodZero(this); }
+};
+
+inline uint32_t
+SSAValue::phiSlot() const
+{
+    return u.phi.node->slot;
+}
+
+inline uint32_t
+SSAValue::phiLength() const
+{
+    do { } while(0);
+    return u.phi.node->length;
+}
+
+inline const SSAValue &
+SSAValue::phiValue(uint32_t i) const
+{
+    do { } while(0);
+    return u.phi.node->options[i];
+}
+
+inline types::TypeSet *
+SSAValue::phiTypes() const
+{
+    do { } while(0);
+    return &u.phi.node->types;
+}
+
+class SSAUseChain
+{
+  public:
+    bool popped : 1;
+    uint32_t offset : 31;
+
+    union {
+        uint32_t which;
+        SSAPhiNode *phi;
+    } u;
+    SSAUseChain *next;
+
+    SSAUseChain() { PodZero(this); }
+};
+
+class SlotValue
+{
+  public:
+    uint32_t slot;
+    SSAValue value;
+    SlotValue(uint32_t slot, const SSAValue &value) : slot(slot), value(value) {}
+};
+
+struct NeedsArgsObjState;
+
+
+class ScriptAnalysis
+{
+    friend class Bytecode;
+
+    JSScript *script;
+
+    Bytecode **codeArray;
+
+    uint32_t numSlots;
+
+    bool outOfMemory;
+    bool hadFailure;
+
+    bool *escapedSlots;
+
+
+    bool ranBytecode_;
+    bool ranSSA_;
+    bool ranLifetimes_;
+    bool ranInference_;
+# 842 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsanalyze.h"
+    bool usesReturnValue_:1;
+    bool usesScopeChain_:1;
+    bool usesThisValue_:1;
+    bool hasFunctionCalls_:1;
+    bool modifiesArguments_:1;
+    bool extendsScope_:1;
+    bool addsScopeObjects_:1;
+    bool localsAliasStack_:1;
+    bool isInlineable:1;
+    bool isJaegerCompileable:1;
+    bool canTrackVars:1;
+
+    uint32_t numReturnSites_;
+
+
+
+    LifetimeVariable *lifetimes;
+
+  public:
+
+    ScriptAnalysis(JSScript *script) {
+        PodZero(this);
+        this->script = script;
+
+
+
+    }
+
+    bool ranBytecode() { return ranBytecode_; }
+    bool ranSSA() { return ranSSA_; }
+    bool ranLifetimes() { return ranLifetimes_; }
+    bool ranInference() { return ranInference_; }
+
+    void analyzeBytecode(JSContext *cx);
+    void analyzeSSA(JSContext *cx);
+    void analyzeLifetimes(JSContext *cx);
+    void analyzeTypes(JSContext *cx);
+
+
+    void analyzeTypesNew(JSContext *cx);
+
+    bool OOM() { return outOfMemory; }
+    bool failed() { return hadFailure; }
+    bool inlineable(uint32_t argc) { return isInlineable && argc == script->function()->nargs; }
+    bool jaegerCompileable() { return isJaegerCompileable; }
+
+
+    bool usesReturnValue() const { return usesReturnValue_; }
+
+
+    bool usesScopeChain() const { return usesScopeChain_; }
+
+    bool usesThisValue() const { return usesThisValue_; }
+    bool hasFunctionCalls() const { return hasFunctionCalls_; }
+    uint32_t numReturnSites() const { return numReturnSites_; }
+
+
+
+
+
+    bool modifiesArguments() { return modifiesArguments_; }
+
+
+
+
+
+    bool extendsScope() { return extendsScope_; }
+
+
+    bool addsScopeObjects() { return addsScopeObjects_; }
+
+
+
+
+
+    bool localsAliasStack() { return localsAliasStack_; }
+
+
+
+    Bytecode& getCode(uint32_t offset) {
+        do { } while(0);
+        do { } while(0);
+        return *codeArray[offset];
+    }
+    Bytecode& getCode(const jsbytecode *pc) { return getCode(pc - script->code); }
+
+    Bytecode* maybeCode(uint32_t offset) {
+        do { } while(0);
+        return codeArray[offset];
+    }
+    Bytecode* maybeCode(const jsbytecode *pc) { return maybeCode(pc - script->code); }
+
+    bool jumpTarget(uint32_t offset) {
+        do { } while(0);
+        return codeArray[offset] && codeArray[offset]->jumpTarget;
+    }
+    bool jumpTarget(const jsbytecode *pc) { return jumpTarget(pc - script->code); }
+
+    bool popGuaranteed(jsbytecode *pc) {
+        jsbytecode *next = pc + GetBytecodeLength(pc);
+        return JSOp(*next) == JSOP_POP && !jumpTarget(next);
+    }
+
+    bool incrementInitialValueObserved(jsbytecode *pc) {
+        const JSCodeSpec *cs = &js_CodeSpec[*pc];
+        return (cs->format & (1U<<12)) && !popGuaranteed(pc);
+    }
+
+    types::TypeSet *bytecodeTypes(const jsbytecode *pc) {
+        do { } while(0);
+        return getCode(pc).observedTypes;
+    }
+
+    const SSAValue &poppedValue(uint32_t offset, uint32_t which) {
+        do { } while(0);
+        do { } while(0)
+                                                               ;
+        return getCode(offset).poppedValues[which];
+    }
+    const SSAValue &poppedValue(const jsbytecode *pc, uint32_t which) {
+        return poppedValue(pc - script->code, which);
+    }
+
+    const SlotValue *newValues(uint32_t offset) {
+        do { } while(0);
+        return getCode(offset).newValues;
+    }
+    const SlotValue *newValues(const jsbytecode *pc) { return newValues(pc - script->code); }
+
+    types::TypeSet *pushedTypes(uint32_t offset, uint32_t which = 0) {
+        do { } while(0);
+        do { } while(0)
+                                                               ;
+        types::TypeSet *array = getCode(offset).pushedTypes;
+        do { } while(0);
+        return array + which;
+    }
+    types::TypeSet *pushedTypes(const jsbytecode *pc, uint32_t which) {
+        return pushedTypes(pc - script->code, which);
+    }
+
+    bool hasPushedTypes(const jsbytecode *pc) { return getCode(pc).pushedTypes != __null; }
+
+    types::TypeBarrier *typeBarriers(JSContext *cx, uint32_t offset) {
+        if (getCode(offset).typeBarriers)
+            pruneTypeBarriers(cx, offset);
+        return getCode(offset).typeBarriers;
+    }
+    types::TypeBarrier *typeBarriers(JSContext *cx, const jsbytecode *pc) {
+        return typeBarriers(cx, pc - script->code);
+    }
+    void addTypeBarrier(JSContext *cx, const jsbytecode *pc,
+                        types::TypeSet *target, types::Type type);
+    void addSingletonTypeBarrier(JSContext *cx, const jsbytecode *pc,
+                                 types::TypeSet *target, JSObject *singleton, jsid singletonId);
+
+
+    void pruneTypeBarriers(JSContext *cx, uint32_t offset);
+
+
+
+
+
+
+    void breakTypeBarriers(JSContext *cx, uint32_t offset, bool all);
+
+
+    void breakTypeBarriersSSA(JSContext *cx, const SSAValue &v);
+
+    inline void addPushedType(JSContext *cx, uint32_t offset, uint32_t which, types::Type type);
+
+    types::TypeSet *getValueTypes(const SSAValue &v) {
+        switch (v.kind()) {
+          case SSAValue::PUSHED:
+            return pushedTypes(v.pushedOffset(), v.pushedIndex());
+          case SSAValue::VAR:
+            do { } while(0);
+            if (v.varInitial()) {
+                return types::TypeScript::SlotTypes(script, v.varSlot());
+            } else {
+
+
+
+
+
+
+                return pushedTypes(v.varOffset(), 0);
+            }
+          case SSAValue::PHI:
+            return &v.phiNode()->types;
+          default:
+
+            __builtin_unreachable();
+            return __null;
+        }
+    }
+
+    types::TypeSet *poppedTypes(uint32_t offset, uint32_t which) {
+        return getValueTypes(poppedValue(offset, which));
+    }
+    types::TypeSet *poppedTypes(const jsbytecode *pc, uint32_t which) {
+        return getValueTypes(poppedValue(pc, which));
+    }
+
+
+    bool integerOperation(JSContext *cx, jsbytecode *pc);
+
+    bool trackUseChain(const SSAValue &v) {
+        do { } while (0);
+        return v.kind() != SSAValue::EMPTY &&
+               (v.kind() != SSAValue::VAR || !v.varInitial());
+    }
+
+
+
+
+
+    SSAUseChain *& useChain(const SSAValue &v) {
+        do { } while(0);
+        if (v.kind() == SSAValue::PUSHED)
+            return getCode(v.pushedOffset()).pushedUses[v.pushedIndex()];
+        if (v.kind() == SSAValue::VAR)
+            return getCode(v.varOffset()).pushedUses[GetDefCount(script, v.varOffset())];
+        return v.phiNode()->uses;
+    }
+
+    mjit::RegisterAllocation *&getAllocation(uint32_t offset) {
+        do { } while(0);
+        return getCode(offset).allocation;
+    }
+    mjit::RegisterAllocation *&getAllocation(const jsbytecode *pc) {
+        return getAllocation(pc - script->code);
+    }
+
+    LoopAnalysis *getLoop(uint32_t offset) {
+        do { } while(0);
+        return getCode(offset).loop;
+    }
+    LoopAnalysis *getLoop(const jsbytecode *pc) { return getLoop(pc - script->code); }
+
+
+    jsbytecode *getCallPC(jsbytecode *pc)
+    {
+        SSAUseChain *uses = useChain(SSAValue::PushedValue(pc - script->code, 0));
+        do { } while(0);
+        do { } while(0);
+        return script->code + uses->offset;
+    }
+# 1100 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsanalyze.h"
+    bool slotEscapes(uint32_t slot) {
+        do { } while(0);
+        if (slot >= numSlots)
+            return true;
+        return escapedSlots[slot];
+    }
+
+
+
+
+
+
+
+    bool trackSlot(uint32_t slot) { return !slotEscapes(slot) && canTrackVars && slot < 1000; }
+
+    const LifetimeVariable & liveness(uint32_t slot) {
+        do { } while(0);
+        do { } while(0);
+        return lifetimes[slot];
+    }
+
+
+
+
+
+    struct NameAccess {
+        JSScript *script;
+        types::TypeScriptNesting *nesting;
+        uint32_t slot;
+
+
+        bool arg;
+        uint32_t index;
+
+        const Value **basePointer() const {
+            return arg ? &nesting->argArray : &nesting->varArray;
+        }
+    };
+    NameAccess resolveNameAccess(JSContext *cx, jsid id, bool addDependency = false);
+
+    void printSSA(JSContext *cx);
+    void printTypes(JSContext *cx);
+
+    void clearAllocations();
+
+  private:
+    void setOOM(JSContext *cx) {
+        if (!outOfMemory)
+            js_ReportOutOfMemory(cx);
+        outOfMemory = true;
+        hadFailure = true;
+    }
+
+
+    inline bool addJump(JSContext *cx, unsigned offset,
+                        unsigned *currentOffset, unsigned *forwardJump, unsigned *forwardLoop,
+                        unsigned stackDepth);
+
+
+    inline void addVariable(JSContext *cx, LifetimeVariable &var, unsigned offset,
+                            LifetimeVariable **&saved, unsigned &savedCount);
+    inline void killVariable(JSContext *cx, LifetimeVariable &var, unsigned offset,
+                             LifetimeVariable **&saved, unsigned &savedCount);
+    inline void extendVariable(JSContext *cx, LifetimeVariable &var, unsigned start, unsigned end);
+    inline void ensureVariable(LifetimeVariable &var, unsigned until);
+
+
+    struct SSAValueInfo
+    {
+        SSAValue v;
+
+
+
+
+
+
+        int32_t branchSize;
+    };
+
+
+    bool makePhi(JSContext *cx, uint32_t slot, uint32_t offset, SSAValue *pv);
+    void insertPhi(JSContext *cx, SSAValue &phi, const SSAValue &v);
+    void mergeValue(JSContext *cx, uint32_t offset, const SSAValue &v, SlotValue *pv);
+    void checkPendingValue(JSContext *cx, const SSAValue &v, uint32_t slot,
+                           Vector<SlotValue> *pending);
+    void checkBranchTarget(JSContext *cx, uint32_t targetOffset, Vector<uint32_t> &branchTargets,
+                           SSAValueInfo *values, uint32_t stackDepth);
+    void checkExceptionTarget(JSContext *cx, uint32_t catchOffset,
+                              Vector<uint32_t> &exceptionTargets);
+    void mergeBranchTarget(JSContext *cx, SSAValueInfo &value, uint32_t slot,
+                           const Vector<uint32_t> &branchTargets, uint32_t currentOffset);
+    void mergeExceptionTarget(JSContext *cx, const SSAValue &value, uint32_t slot,
+                              const Vector<uint32_t> &exceptionTargets);
+    void mergeAllExceptionTargets(JSContext *cx, SSAValueInfo *values,
+                                  const Vector<uint32_t> &exceptionTargets);
+    void freezeNewValues(JSContext *cx, uint32_t offset);
+
+    struct TypeInferenceState {
+        Vector<SSAPhiNode *> phiNodes;
+        bool hasGetSet;
+        bool hasHole;
+        types::TypeSet *forTypes;
+        TypeInferenceState(JSContext *cx)
+            : phiNodes(cx), hasGetSet(false), hasHole(false), forTypes(__null)
+        {}
+    };
+
+
+    bool analyzeTypesBytecode(JSContext *cx, unsigned offset, TypeInferenceState &state);
+    bool needsArgsObj(NeedsArgsObjState &state, const SSAValue &v);
+    bool needsArgsObj(NeedsArgsObjState &state, SSAUseChain *use);
+    bool needsArgsObj(JSContext *cx);
+
+  public:
+
+
+
+    void assertMatchingDebugMode() { }
+
+};
+
+
+class AutoEnterAnalysis
+{
+    JSCompartment *compartment;
+    bool oldActiveAnalysis;
+    bool left;
+
+    void construct(JSCompartment *compartment)
+    {
+        this->compartment = compartment;
+        oldActiveAnalysis = compartment->activeAnalysis;
+        compartment->activeAnalysis = true;
+        left = false;
+    }
+
+  public:
+    AutoEnterAnalysis(JSContext *cx) { construct(cx->compartment); }
+    AutoEnterAnalysis(JSCompartment *compartment) { construct(compartment); }
+
+    void leave()
+    {
+        if (!left) {
+            left = true;
+            compartment->activeAnalysis = oldActiveAnalysis;
+        }
+    }
+
+    ~AutoEnterAnalysis()
+    {
+        leave();
+    }
+};
+
+
+struct CrossSSAValue
+{
+    unsigned frame;
+    SSAValue v;
+    CrossSSAValue(unsigned frame, const SSAValue &v) : frame(frame), v(v) {}
+};
+
+
+
+
+
+
+class CrossScriptSSA
+{
+  public:
+
+    static const uint32_t OUTER_FRAME = (4294967295U);
+    static const unsigned INVALID_FRAME = uint32_t(-2);
+
+    struct Frame {
+        uint32_t index;
+        JSScript *script;
+        uint32_t depth;
+        uint32_t parent;
+        jsbytecode *parentpc;
+
+        Frame(uint32_t index, JSScript *script, uint32_t depth, uint32_t parent, jsbytecode *parentpc)
+            : index(index), script(script), depth(depth), parent(parent), parentpc(parentpc)
+        {}
+    };
+
+    const Frame &getFrame(uint32_t index) {
+        if (index == OUTER_FRAME)
+            return outerFrame;
+        return inlineFrames[index];
+    }
+
+    unsigned numFrames() { return 1 + inlineFrames.length(); }
+    const Frame &iterFrame(unsigned i) {
+        if (i == 0)
+            return outerFrame;
+        return inlineFrames[i - 1];
+    }
+
+    JSScript *outerScript() { return outerFrame.script; }
+
+
+    size_t frameLength(uint32_t index) {
+        if (index == OUTER_FRAME)
+            return 0;
+        size_t res = outerFrame.script->length;
+        for (unsigned i = 0; i < index; i++)
+            res += inlineFrames[i].script->length;
+        return res;
+    }
+
+    types::TypeSet *getValueTypes(const CrossSSAValue &cv) {
+        return getFrame(cv.frame).script->analysis()->getValueTypes(cv.v);
+    }
+
+    bool addInlineFrame(JSScript *script, uint32_t depth, uint32_t parent, jsbytecode *parentpc)
+    {
+        uint32_t index = inlineFrames.length();
+        return inlineFrames.append(Frame(index, script, depth, parent, parentpc));
+    }
+
+    CrossScriptSSA(JSContext *cx, JSScript *outer)
+        : cx(cx), outerFrame(OUTER_FRAME, outer, 0, INVALID_FRAME, __null), inlineFrames(cx)
+    {}
+
+    CrossSSAValue foldValue(const CrossSSAValue &cv);
+
+  private:
+    JSContext *cx;
+
+    Frame outerFrame;
+    Vector<Frame> inlineFrames;
+};
+
+
+
+
+
+}
+}
+
+namespace js {
+namespace tl {
+
+template <> struct IsPodType<js::analyze::LifetimeVariable> { static const bool result = true; };
+template <> struct IsPodType<js::analyze::LoopAnalysis> { static const bool result = true; };
+template <> struct IsPodType<js::analyze::SlotValue> { static const bool result = true; };
+template <> struct IsPodType<js::analyze::SSAValue> { static const bool result = true; };
+template <> struct IsPodType<js::analyze::SSAUseChain> { static const bool result = true; };
+
+}
+}
+# 11 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinferinlines.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprf.h" 1
+
+
+
+
+
+
+#define jsprf_h___ 
+# 29 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprf.h"
+# 1 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stdarg.h" 1 3 4
+# 31 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stdarg.h" 3 4
+#define _STDARG_H 
+#define _ANSI_STDARG_H_ 
+
+#undef __need___va_list
+# 47 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stdarg.h" 3 4
+#define va_start(v,l) __builtin_va_start(v,l)
+#define va_end(v) __builtin_va_end(v)
+#define va_arg(v,l) __builtin_va_arg(v,l)
+
+#define va_copy(d,s) __builtin_va_copy(d,s)
+
+#define __va_copy(d,s) __builtin_va_copy(d,s)
+# 108 "/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.5.4/include/stdarg.h" 3 4
+#define _VA_LIST_ 
+
+
+#define _VA_LIST 
+
+
+
+
+
+#define _VA_LIST_T_H 
+
+
+#define __va_list__ 
+# 30 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprf.h" 2
+
+extern "C" {
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) uint32_t JS_snprintf(char *out, uint32_t outlen, const char *fmt, ...);
+
+
+
+
+
+
+extern __attribute__((visibility("default"))) char* JS_smprintf(const char *fmt, ...);
+
+
+
+
+extern __attribute__((visibility("default"))) void JS_smprintf_free(char *mem);
+# 59 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprf.h"
+extern __attribute__((visibility("default"))) char* JS_sprintf_append(char *last, const char *fmt, ...);
+# 68 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprf.h"
+typedef int (*JSStuffFunc)(void *arg, const char *s, uint32_t slen);
+
+extern __attribute__((visibility("default"))) uint32_t JS_sxprintf(JSStuffFunc f, void *arg, const char *fmt, ...);
+
+
+
+
+extern __attribute__((visibility("default"))) uint32_t JS_vsnprintf(char *out, uint32_t outlen, const char *fmt, va_list ap);
+extern __attribute__((visibility("default"))) char* JS_vsmprintf(const char *fmt, va_list ap);
+extern __attribute__((visibility("default"))) char* JS_vsprintf_append(char *last, const char *fmt, va_list ap);
+extern __attribute__((visibility("default"))) uint32_t JS_vsxprintf(JSStuffFunc f, void *arg, const char *fmt, va_list ap);
+
+}
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinferinlines.h" 2
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack-inl.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack-inl.h"
+#define Stack_inl_h__ 
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/methodjit/MethodJIT.h" 1
+# 15 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack-inl.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack.h" 1
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack-inl.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscriptinlines.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscriptinlines.h"
+#define jsscriptinlines_h___ 
+
+# 1 "./jsautooplen.h" 1
+
+
+
+
+
+#define JSOP_NOP_LENGTH 1
+#define JSOP_UNDEFINED_LENGTH 1
+#define JSOP_POPV_LENGTH 1
+#define JSOP_ENTERWITH_LENGTH 1
+#define JSOP_LEAVEWITH_LENGTH 1
+#define JSOP_RETURN_LENGTH 1
+#define JSOP_GOTO_LENGTH 5
+#define JSOP_IFEQ_LENGTH 5
+#define JSOP_IFNE_LENGTH 5
+#define JSOP_ARGUMENTS_LENGTH 1
+#define JSOP_SWAP_LENGTH 1
+#define JSOP_POPN_LENGTH 3
+#define JSOP_DUP_LENGTH 1
+#define JSOP_DUP2_LENGTH 1
+#define JSOP_SETCONST_LENGTH 5
+#define JSOP_BITOR_LENGTH 1
+#define JSOP_BITXOR_LENGTH 1
+#define JSOP_BITAND_LENGTH 1
+#define JSOP_EQ_LENGTH 1
+#define JSOP_NE_LENGTH 1
+#define JSOP_LT_LENGTH 1
+#define JSOP_LE_LENGTH 1
+#define JSOP_GT_LENGTH 1
+#define JSOP_GE_LENGTH 1
+#define JSOP_LSH_LENGTH 1
+#define JSOP_RSH_LENGTH 1
+#define JSOP_URSH_LENGTH 1
+#define JSOP_ADD_LENGTH 1
+#define JSOP_SUB_LENGTH 1
+#define JSOP_MUL_LENGTH 1
+#define JSOP_DIV_LENGTH 1
+#define JSOP_MOD_LENGTH 1
+#define JSOP_NOT_LENGTH 1
+#define JSOP_BITNOT_LENGTH 1
+#define JSOP_NEG_LENGTH 1
+#define JSOP_POS_LENGTH 1
+#define JSOP_DELNAME_LENGTH 5
+#define JSOP_DELPROP_LENGTH 5
+#define JSOP_DELELEM_LENGTH 1
+#define JSOP_TYPEOF_LENGTH 1
+#define JSOP_VOID_LENGTH 1
+#define JSOP_INCNAME_LENGTH 6
+#define JSOP_INCPROP_LENGTH 6
+#define JSOP_INCELEM_LENGTH 2
+#define JSOP_DECNAME_LENGTH 6
+#define JSOP_DECPROP_LENGTH 6
+#define JSOP_DECELEM_LENGTH 2
+#define JSOP_NAMEINC_LENGTH 6
+#define JSOP_PROPINC_LENGTH 6
+#define JSOP_ELEMINC_LENGTH 2
+#define JSOP_NAMEDEC_LENGTH 6
+#define JSOP_PROPDEC_LENGTH 6
+#define JSOP_ELEMDEC_LENGTH 2
+#define JSOP_GETPROP_LENGTH 5
+#define JSOP_SETPROP_LENGTH 5
+#define JSOP_GETELEM_LENGTH 1
+#define JSOP_SETELEM_LENGTH 1
+#define JSOP_CALLNAME_LENGTH 5
+#define JSOP_CALL_LENGTH 3
+#define JSOP_NAME_LENGTH 5
+#define JSOP_DOUBLE_LENGTH 5
+#define JSOP_STRING_LENGTH 5
+#define JSOP_ZERO_LENGTH 1
+#define JSOP_ONE_LENGTH 1
+#define JSOP_NULL_LENGTH 1
+#define JSOP_THIS_LENGTH 1
+#define JSOP_FALSE_LENGTH 1
+#define JSOP_TRUE_LENGTH 1
+#define JSOP_OR_LENGTH 5
+#define JSOP_AND_LENGTH 5
+#define JSOP_TABLESWITCH_LENGTH -1
+#define JSOP_LOOKUPSWITCH_LENGTH -1
+#define JSOP_STRICTEQ_LENGTH 1
+#define JSOP_STRICTNE_LENGTH 1
+#define JSOP_SETCALL_LENGTH 1
+#define JSOP_ITER_LENGTH 2
+#define JSOP_MOREITER_LENGTH 1
+#define JSOP_ITERNEXT_LENGTH 2
+#define JSOP_ENDITER_LENGTH 1
+#define JSOP_FUNAPPLY_LENGTH 3
+#define JSOP_OBJECT_LENGTH 5
+#define JSOP_POP_LENGTH 1
+#define JSOP_NEW_LENGTH 3
+#define JSOP_UNUSED0_LENGTH 1
+#define JSOP_GETARG_LENGTH 3
+#define JSOP_SETARG_LENGTH 3
+#define JSOP_GETLOCAL_LENGTH 3
+#define JSOP_SETLOCAL_LENGTH 3
+#define JSOP_UINT16_LENGTH 3
+#define JSOP_NEWINIT_LENGTH 5
+#define JSOP_NEWARRAY_LENGTH 4
+#define JSOP_NEWOBJECT_LENGTH 5
+#define JSOP_ENDINIT_LENGTH 1
+#define JSOP_INITPROP_LENGTH 5
+#define JSOP_INITELEM_LENGTH 1
+#define JSOP_UNUSED14_LENGTH 1
+#define JSOP_UNUSED15_LENGTH 1
+#define JSOP_INCARG_LENGTH 3
+#define JSOP_DECARG_LENGTH 3
+#define JSOP_ARGINC_LENGTH 3
+#define JSOP_ARGDEC_LENGTH 3
+#define JSOP_INCLOCAL_LENGTH 3
+#define JSOP_DECLOCAL_LENGTH 3
+#define JSOP_LOCALINC_LENGTH 3
+#define JSOP_LOCALDEC_LENGTH 3
+#define JSOP_LEAVEFORLETIN_LENGTH 1
+#define JSOP_LABEL_LENGTH 5
+#define JSOP_UNUSED3_LENGTH 1
+#define JSOP_FUNCALL_LENGTH 3
+#define JSOP_LOOPHEAD_LENGTH 1
+#define JSOP_BINDNAME_LENGTH 5
+#define JSOP_SETNAME_LENGTH 5
+#define JSOP_THROW_LENGTH 1
+#define JSOP_IN_LENGTH 1
+#define JSOP_INSTANCEOF_LENGTH 1
+#define JSOP_DEBUGGER_LENGTH 1
+#define JSOP_GOSUB_LENGTH 5
+#define JSOP_RETSUB_LENGTH 1
+#define JSOP_EXCEPTION_LENGTH 1
+#define JSOP_LINENO_LENGTH 3
+#define JSOP_CONDSWITCH_LENGTH 1
+#define JSOP_CASE_LENGTH 5
+#define JSOP_DEFAULT_LENGTH 5
+#define JSOP_EVAL_LENGTH 3
+#define JSOP_ENUMELEM_LENGTH 1
+#define JSOP_GETTER_LENGTH 1
+#define JSOP_SETTER_LENGTH 1
+#define JSOP_DEFFUN_LENGTH 5
+#define JSOP_DEFCONST_LENGTH 5
+#define JSOP_DEFVAR_LENGTH 5
+#define JSOP_LAMBDA_LENGTH 5
+#define JSOP_CALLEE_LENGTH 1
+#define JSOP_UNUSED31_LENGTH 1
+#define JSOP_PICK_LENGTH 2
+#define JSOP_TRY_LENGTH 1
+#define JSOP_FINALLY_LENGTH 1
+#define JSOP_GETALIASEDVAR_LENGTH 9
+#define JSOP_CALLALIASEDVAR_LENGTH 9
+#define JSOP_SETALIASEDVAR_LENGTH 9
+#define JSOP_INCALIASEDVAR_LENGTH 10
+#define JSOP_DECALIASEDVAR_LENGTH 10
+#define JSOP_ALIASEDVARINC_LENGTH 10
+#define JSOP_ALIASEDVARDEC_LENGTH 10
+#define JSOP_UNUSED8_LENGTH 1
+#define JSOP_UNUSED9_LENGTH 1
+#define JSOP_UNUSED10_LENGTH 1
+#define JSOP_UNUSED11_LENGTH 1
+#define JSOP_UNUSED12_LENGTH 1
+#define JSOP_UNUSED13_LENGTH 1
+#define JSOP_BACKPATCH_LENGTH 5
+#define JSOP_BACKPATCH_POP_LENGTH 5
+#define JSOP_THROWING_LENGTH 1
+#define JSOP_SETRVAL_LENGTH 1
+#define JSOP_RETRVAL_LENGTH 1
+#define JSOP_GETGNAME_LENGTH 5
+#define JSOP_SETGNAME_LENGTH 5
+#define JSOP_INCGNAME_LENGTH 6
+#define JSOP_DECGNAME_LENGTH 6
+#define JSOP_GNAMEINC_LENGTH 6
+#define JSOP_GNAMEDEC_LENGTH 6
+#define JSOP_REGEXP_LENGTH 5
+#define JSOP_DEFXMLNS_LENGTH 1
+#define JSOP_ANYNAME_LENGTH 1
+#define JSOP_QNAMEPART_LENGTH 5
+#define JSOP_QNAMECONST_LENGTH 5
+#define JSOP_QNAME_LENGTH 1
+#define JSOP_TOATTRNAME_LENGTH 1
+#define JSOP_TOATTRVAL_LENGTH 1
+#define JSOP_ADDATTRNAME_LENGTH 1
+#define JSOP_ADDATTRVAL_LENGTH 1
+#define JSOP_BINDXMLNAME_LENGTH 1
+#define JSOP_SETXMLNAME_LENGTH 1
+#define JSOP_XMLNAME_LENGTH 1
+#define JSOP_DESCENDANTS_LENGTH 1
+#define JSOP_FILTER_LENGTH 5
+#define JSOP_ENDFILTER_LENGTH 5
+#define JSOP_TOXML_LENGTH 1
+#define JSOP_TOXMLLIST_LENGTH 1
+#define JSOP_XMLTAGEXPR_LENGTH 1
+#define JSOP_XMLELTEXPR_LENGTH 1
+#define JSOP_XMLCDATA_LENGTH 5
+#define JSOP_XMLCOMMENT_LENGTH 5
+#define JSOP_XMLPI_LENGTH 5
+#define JSOP_DELDESC_LENGTH 1
+#define JSOP_CALLPROP_LENGTH 5
+#define JSOP_ENTERLET0_LENGTH 5
+#define JSOP_ENTERLET1_LENGTH 5
+#define JSOP_UINT24_LENGTH 4
+#define JSOP_UNUSED18_LENGTH 1
+#define JSOP_UNUSED19_LENGTH 1
+#define JSOP_UNUSED20_LENGTH 1
+#define JSOP_STARTXML_LENGTH 1
+#define JSOP_STARTXMLEXPR_LENGTH 1
+#define JSOP_CALLELEM_LENGTH 1
+#define JSOP_STOP_LENGTH 1
+#define JSOP_GETXPROP_LENGTH 5
+#define JSOP_CALLXMLNAME_LENGTH 1
+#define JSOP_TYPEOFEXPR_LENGTH 1
+#define JSOP_ENTERBLOCK_LENGTH 5
+#define JSOP_LEAVEBLOCK_LENGTH 3
+#define JSOP_UNUSED1_LENGTH 1
+#define JSOP_UNUSED2_LENGTH 1
+#define JSOP_GENERATOR_LENGTH 1
+#define JSOP_YIELD_LENGTH 1
+#define JSOP_ARRAYPUSH_LENGTH 3
+#define JSOP_GETFUNNS_LENGTH 1
+#define JSOP_ENUMCONSTELEM_LENGTH 1
+#define JSOP_LEAVEBLOCKEXPR_LENGTH 3
+#define JSOP_UNUSED21_LENGTH 1
+#define JSOP_UNUSED22_LENGTH 1
+#define JSOP_UNUSED23_LENGTH 1
+#define JSOP_CALLGNAME_LENGTH 5
+#define JSOP_CALLLOCAL_LENGTH 3
+#define JSOP_CALLARG_LENGTH 3
+#define JSOP_BINDGNAME_LENGTH 5
+#define JSOP_INT8_LENGTH 2
+#define JSOP_INT32_LENGTH 5
+#define JSOP_LENGTH_LENGTH 5
+#define JSOP_HOLE_LENGTH 1
+#define JSOP_UNUSED17_LENGTH 1
+#define JSOP_UNUSED24_LENGTH 1
+#define JSOP_UNUSED25_LENGTH 1
+#define JSOP_UNUSED29_LENGTH 1
+#define JSOP_UNUSED30_LENGTH 1
+#define JSOP_REST_LENGTH 1
+#define JSOP_TOID_LENGTH 1
+#define JSOP_IMPLICITTHIS_LENGTH 5
+#define JSOP_LOOPENTRY_LENGTH 1
+#define JSOP_ACTUALSFILLED_LENGTH 3
+# 12 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscriptinlines.h" 2
+# 22 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscriptinlines.h"
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscopeinlines.h" 1
+
+
+
+
+
+
+
+#define jsscopeinlines_h___ 
+# 22 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscopeinlines.h"
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ArgumentsObject.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ArgumentsObject.h"
+#define ArgumentsObject_h___ 
+
+
+
+namespace js {
+# 22 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ArgumentsObject.h"
+struct ArgumentsData
+{
+
+
+
+
+    HeapValue callee;
+
+
+
+
+
+    size_t *deletedBits;
+
+
+
+
+
+    HeapValue slots[1];
+};
+# 95 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ArgumentsObject.h"
+class ArgumentsObject : public JSObject
+{
+    static const uint32_t INITIAL_LENGTH_SLOT = 0;
+    static const uint32_t DATA_SLOT = 1;
+    static const uint32_t STACK_FRAME_SLOT = 2;
+
+
+    static const uint32_t LENGTH_OVERRIDDEN_BIT = 0x1;
+    static const uint32_t PACKED_BITS_COUNT = 1;
+
+    void initInitialLength(uint32_t length);
+    void initData(ArgumentsData *data);
+    static ArgumentsObject *create(JSContext *cx, uint32_t argc, HandleObject callee);
+
+  public:
+    static const uint32_t RESERVED_SLOTS = 3;
+    static const gc::AllocKind FINALIZE_KIND = gc::FINALIZE_OBJECT4;
+
+
+    static ArgumentsObject *create(JSContext *cx, StackFrame *fp);
+
+
+
+
+
+
+
+    static ArgumentsObject *createUnexpected(JSContext *cx, StackFrame *fp);
+
+
+
+
+
+    inline uint32_t initialLength() const;
+
+
+    inline bool hasOverriddenLength() const;
+    inline void markLengthOverridden();
+# 142 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ArgumentsObject.h"
+    inline bool getElement(uint32_t i, js::Value *vp);
+# 153 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ArgumentsObject.h"
+    inline bool getElements(uint32_t start, uint32_t count, js::Value *vp);
+
+    inline js::ArgumentsData *data() const;
+# 171 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ArgumentsObject.h"
+    inline bool isElementDeleted(uint32_t i) const;
+    inline bool isAnyElementDeleted() const;
+    inline void markElementDeleted(uint32_t i);
+
+    inline const js::Value &element(uint32_t i) const;
+    inline void setElement(uint32_t i, const js::Value &v);
+
+
+    inline js::StackFrame *maybeStackFrame() const;
+    inline void setStackFrame(js::StackFrame *frame);
+
+
+
+
+
+    inline size_t sizeOfMisc(JSMallocSizeOfFun mallocSizeOf) const;
+};
+
+class NormalArgumentsObject : public ArgumentsObject
+{
+  public:
+
+
+
+
+    inline const js::Value &callee() const;
+
+
+    inline void clearCallee();
+
+
+
+
+
+
+    static bool optimizedGetElem(JSContext *cx, StackFrame *fp, const Value &elem, Value *vp);
+};
+
+class StrictArgumentsObject : public ArgumentsObject
+{};
+
+}
+
+js::NormalArgumentsObject &
+JSObject::asNormalArguments()
+{
+    do { } while(0);
+    return *static_cast<js::NormalArgumentsObject *>(this);
+}
+
+js::StrictArgumentsObject &
+JSObject::asStrictArguments()
+{
+    do { } while(0);
+    return *static_cast<js::StrictArgumentsObject *>(this);
+}
+
+js::ArgumentsObject &
+JSObject::asArguments()
+{
+    do { } while(0);
+    return *static_cast<js::ArgumentsObject *>(this);
+}
+
+const js::ArgumentsObject &
+JSObject::asArguments() const
+{
+    do { } while(0);
+    return *static_cast<const js::ArgumentsObject *>(this);
+}
+# 23 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscopeinlines.h" 2
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxtinlines.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxtinlines.h"
+#define jscntxtinlines_h___ 
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinterp.h" 1
+# 15 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxtinlines.h" 2
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/frontend/ParseMaps.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/frontend/ParseMaps.h"
+#define ParseMaps_h__ 
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/ds/InlineMap.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/ds/InlineMap.h"
+#define InlineMap_h__ 
+
+
+
+namespace js {
+
+
+
+
+
+template <typename T> struct ZeroIsReserved { static const bool result = false; };
+template <typename T> struct ZeroIsReserved<T *> { static const bool result = true; };
+
+template <typename K, typename V, size_t InlineElems>
+class InlineMap
+{
+  public:
+    typedef HashMap<K, V, DefaultHasher<K>, TempAllocPolicy> WordMap;
+
+    struct InlineElem
+    {
+        K key;
+        V value;
+    };
+
+  private:
+    typedef typename WordMap::Ptr WordMapPtr;
+    typedef typename WordMap::AddPtr WordMapAddPtr;
+    typedef typename WordMap::Range WordMapRange;
+
+    size_t inlNext;
+    size_t inlCount;
+    InlineElem inl[InlineElems];
+    WordMap map;
+
+    void checkStaticInvariants() {
+        typedef int moz_static_assert108[(ZeroIsReserved<K>::result) ? 1 : -1];
+    }
+
+    bool usingMap() const {
+        return inlNext > InlineElems;
+    }
+
+    bool switchToMap() {
+        do { } while(0);
+
+        if (map.initialized()) {
+            map.clear();
+        } else {
+            if (!map.init(count()))
+                return false;
+            do { } while(0);
+        }
+
+        for (InlineElem *it = inl, *end = inl + inlNext; it != end; ++it) {
+            if (it->key && !map.putNew(it->key, it->value))
+                return false;
+        }
+
+        inlNext = InlineElems + 1;
+        do { } while(0);
+        do { } while(0);
+        return true;
+    }
+
+    __attribute__((noinline))
+    bool switchAndAdd(const K &key, const V &value) {
+        if (!switchToMap())
+            return false;
+
+        return map.putNew(key, value);
+    }
+
+  public:
+    explicit InlineMap(JSContext *cx)
+      : inlNext(0), inlCount(0), map(cx) {
+        checkStaticInvariants();
+    }
+
+    class Entry
+    {
+        friend class InlineMap;
+        const K &key_;
+        const V &value_;
+
+        Entry(const K &key, const V &value) : key_(key), value_(value) {}
+
+      public:
+        const K &key() { return key_; }
+        const V &value() { return value_; }
+    };
+
+    class Ptr
+    {
+        friend class InlineMap;
+
+        WordMapPtr mapPtr;
+        InlineElem *inlPtr;
+        bool isInlinePtr;
+
+        typedef Ptr ******* ConvertibleToBool;
+
+        explicit Ptr(WordMapPtr p) : mapPtr(p), isInlinePtr(false) {}
+        explicit Ptr(InlineElem *ie) : inlPtr(ie), isInlinePtr(true) {}
+        void operator==(const Ptr &other);
+
+      public:
+
+        Ptr() {
+
+
+
+
+        }
+
+
+
+        bool found() const {
+            return isInlinePtr ? bool(inlPtr) : mapPtr.found();
+        }
+
+        operator ConvertibleToBool() const {
+            return ConvertibleToBool(found());
+        }
+
+        K &key() {
+            do { } while(0);
+            return isInlinePtr ? inlPtr->key : mapPtr->key;
+        }
+
+        V &value() {
+            do { } while(0);
+            return isInlinePtr ? inlPtr->value : mapPtr->value;
+        }
+    };
+
+    class AddPtr
+    {
+        friend class InlineMap;
+
+        WordMapAddPtr mapAddPtr;
+        InlineElem *inlAddPtr;
+        bool isInlinePtr;
+
+        bool inlPtrFound;
+
+        AddPtr(InlineElem *ptr, bool found)
+          : inlAddPtr(ptr), isInlinePtr(true), inlPtrFound(found)
+        {}
+
+        AddPtr(const WordMapAddPtr &p) : mapAddPtr(p), isInlinePtr(false) {}
+
+        void operator==(const AddPtr &other);
+
+        typedef AddPtr ******* ConvertibleToBool;
+
+      public:
+        AddPtr() {}
+
+        bool found() const {
+            return isInlinePtr ? inlPtrFound : mapAddPtr.found();
+        }
+
+        operator ConvertibleToBool() const {
+            return found() ? ConvertibleToBool(1) : ConvertibleToBool(0);
+        }
+
+        V &value() {
+            do { } while(0);
+            if (isInlinePtr)
+                return inlAddPtr->value;
+            return mapAddPtr->value;
+        }
+    };
+
+    size_t count() {
+        return usingMap() ? map.count() : inlCount;
+    }
+
+    bool empty() const {
+        return usingMap() ? map.empty() : !inlCount;
+    }
+
+    void clear() {
+        inlNext = 0;
+        inlCount = 0;
+    }
+
+    bool isMap() const {
+        return usingMap();
+    }
+
+    const WordMap &asMap() const {
+        do { } while(0);
+        return map;
+    }
+
+    const InlineElem *asInline() const {
+        do { } while(0);
+        return inl;
+    }
+
+    const InlineElem *inlineEnd() const {
+        do { } while(0);
+        return inl + inlNext;
+    }
+
+    __attribute__((always_inline)) inline
+    Ptr lookup(const K &key) {
+        if (usingMap())
+            return Ptr(map.lookup(key));
+
+        for (InlineElem *it = inl, *end = inl + inlNext; it != end; ++it) {
+            if (it->key == key)
+                return Ptr(it);
+        }
+
+        return Ptr(__null);
+    }
+
+    __attribute__((always_inline)) inline
+    AddPtr lookupForAdd(const K &key) {
+        if (usingMap())
+            return AddPtr(map.lookupForAdd(key));
+
+        for (InlineElem *it = inl, *end = inl + inlNext; it != end; ++it) {
+            if (it->key == key)
+                return AddPtr(it, true);
+        }
+
+
+
+
+
+
+        return AddPtr(inl + inlNext, false);
+    }
+
+    __attribute__((always_inline)) inline
+    bool add(AddPtr &p, const K &key, const V &value) {
+        do { } while(0);
+
+        if (p.isInlinePtr) {
+            InlineElem *addPtr = p.inlAddPtr;
+            do { } while(0);
+
+
+            if (addPtr == inl + InlineElems)
+                return switchAndAdd(key, value);
+
+            do { } while(0);
+            do { } while(0);
+            p.inlAddPtr->key = key;
+            p.inlAddPtr->value = value;
+            ++inlCount;
+            ++inlNext;
+            return true;
+        }
+
+        return map.add(p.mapAddPtr, key, value);
+    }
+
+    __attribute__((always_inline)) inline
+    bool put(const K &key, const V &value) {
+        AddPtr p = lookupForAdd(key);
+        if (p) {
+            p.value() = value;
+            return true;
+        }
+        return add(p, key, value);
+    }
+
+    void remove(Ptr p) {
+        do { } while(0);
+        if (p.isInlinePtr) {
+            do { } while(0);
+            do { } while(0);
+            p.inlPtr->key = __null;
+            --inlCount;
+            return;
+        }
+        do { } while(0);
+        map.remove(p.mapPtr);
+    }
+
+    void remove(const K &key) {
+        if (Ptr p = lookup(key))
+            remove(p);
+    }
+
+    class Range
+    {
+        friend class InlineMap;
+
+        WordMapRange mapRange;
+        InlineElem *cur;
+        InlineElem *end;
+        bool isInline;
+
+        explicit Range(WordMapRange r)
+          : cur(__null), end(__null),
+            isInline(false) {
+            mapRange = r;
+            do { } while(0);
+        }
+
+        Range(const InlineElem *begin, const InlineElem *end_)
+          : cur(const_cast<InlineElem *>(begin)),
+            end(const_cast<InlineElem *>(end_)),
+            isInline(true) {
+            advancePastNulls(cur);
+            do { } while(0);
+        }
+
+        bool checkInlineRangeInvariants() const {
+            do { } while(0);
+            do { } while (0);
+            return true;
+        }
+
+        bool isInlineRange() const {
+            do { } while (0);
+            return isInline;
+        }
+
+        void advancePastNulls(InlineElem *begin) {
+            InlineElem *newCur = begin;
+            while (newCur < end && __null == newCur->key)
+                ++newCur;
+            do { } while(0);
+            cur = newCur;
+        }
+
+        void bumpCurPtr() {
+            do { } while(0);
+            advancePastNulls(cur + 1);
+        }
+
+        void operator==(const Range &other);
+
+      public:
+        bool empty() const {
+            return isInlineRange() ? cur == end : mapRange.empty();
+        }
+
+        Entry front() {
+            do { } while(0);
+            if (isInlineRange())
+                return Entry(cur->key, cur->value);
+            return Entry(mapRange.front().key, mapRange.front().value);
+        }
+
+        void popFront() {
+            do { } while(0);
+            if (isInlineRange())
+                bumpCurPtr();
+            else
+                mapRange.popFront();
+        }
+    };
+
+    Range all() const {
+        return usingMap() ? Range(map.all()) : Range(inl, inl + inlNext);
+    }
+};
+
+}
+# 14 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/frontend/ParseMaps.h" 2
+
+
+
+namespace js {
+
+struct Definition;
+# 28 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/frontend/ParseMaps.h"
+class ParseMapPool
+{
+    typedef Vector<void *, 32, SystemAllocPolicy> RecyclableMaps;
+
+    RecyclableMaps all;
+    RecyclableMaps recyclable;
+    JSContext *cx;
+
+    void checkInvariants();
+
+    void recycle(void *map) {
+        do { } while(0);
+# 53 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/frontend/ParseMaps.h"
+        do { } while(0);
+        recyclable.infallibleAppend(map);
+    }
+
+    void *allocateFresh();
+    void *allocate();
+
+
+    typedef AtomIndexMap AtomMapT;
+
+    static AtomMapT *asAtomMap(void *ptr) {
+        return reinterpret_cast<AtomMapT *>(ptr);
+    }
+
+  public:
+    explicit ParseMapPool(JSContext *cx) : cx(cx) {}
+
+    ~ParseMapPool() {
+        purgeAll();
+    }
+
+    void purgeAll();
+
+    bool empty() const {
+        return all.empty();
+    }
+
+
+    template <typename T>
+    T *acquire();
+
+
+
+    void release(AtomIndexMap *map) {
+        recycle((void *) map);
+    }
+
+    void release(AtomDefnMap *map) {
+        recycle((void *) map);
+    }
+
+    void release(AtomDOHMap *map) {
+        recycle((void *) map);
+    }
+};
+
+
+
+
+
+template <class Map>
+struct AtomThingMapPtr
+{
+    Map *map_;
+
+    void init() { clearMap(); }
+
+    bool ensureMap(JSContext *cx);
+    void releaseMap(JSContext *cx);
+
+    bool hasMap() const { return map_; }
+    Map *getMap() { return map_; }
+    void setMap(Map *newMap) { do { } while(0); map_ = newMap; }
+    void clearMap() { map_ = __null; }
+
+    Map *operator->() { return map_; }
+    const Map *operator->() const { return map_; }
+    Map &operator*() const { return *map_; }
+};
+
+struct AtomDefnMapPtr : public AtomThingMapPtr<AtomDefnMap>
+{
+    __attribute__((always_inline)) inline
+    Definition *lookupDefn(JSAtom *atom) {
+        AtomDefnMap::Ptr p = map_->lookup(atom);
+        return p ? p.value() : __null;
+    }
+};
+
+typedef AtomThingMapPtr<AtomIndexMap> AtomIndexMapPtr;
+
+
+
+
+
+template <typename AtomThingMapPtrT>
+class OwnedAtomThingMapPtr : public AtomThingMapPtrT
+{
+    JSContext *cx;
+
+  public:
+    explicit OwnedAtomThingMapPtr(JSContext *cx) : cx(cx) {
+        AtomThingMapPtrT::init();
+    }
+
+    ~OwnedAtomThingMapPtr() {
+        AtomThingMapPtrT::releaseMap(cx);
+    }
+};
+
+typedef OwnedAtomThingMapPtr<AtomDefnMapPtr> OwnedAtomDefnMapPtr;
+typedef OwnedAtomThingMapPtr<AtomIndexMapPtr> OwnedAtomIndexMapPtr;
+
+
+struct AtomDeclNode
+{
+    Definition *defn;
+    AtomDeclNode *next;
+
+    explicit AtomDeclNode(Definition *defn)
+      : defn(defn), next(__null)
+    {}
+};
+
+
+
+
+
+class DefnOrHeader
+{
+    union {
+        Definition *defn;
+        AtomDeclNode *head;
+        uintptr_t bits;
+    } u;
+
+  public:
+    DefnOrHeader() {
+        u.bits = 0;
+    }
+
+    explicit DefnOrHeader(Definition *defn) {
+        u.defn = defn;
+        do { } while(0);
+    }
+
+    explicit DefnOrHeader(AtomDeclNode *node) {
+        u.head = node;
+        u.bits |= 0x1;
+        do { } while(0);
+    }
+
+    bool isHeader() const {
+        return u.bits & 0x1;
+    }
+
+    Definition *defn() const {
+        do { } while(0);
+        return u.defn;
+    }
+
+    AtomDeclNode *header() const {
+        do { } while(0);
+        return (AtomDeclNode *) (u.bits & ~0x1);
+    }
+
+
+
+
+};
+
+namespace tl {
+
+template <> struct IsPodType<DefnOrHeader> {
+    static const bool result = true;
+};
+
+}
+# 231 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/frontend/ParseMaps.h"
+class AtomDecls
+{
+
+    friend class AtomDeclsIter;
+
+    JSContext *cx;
+    AtomDOHMap *map;
+
+    AtomDecls(const AtomDecls &other) ;
+    void operator=(const AtomDecls &other) ;
+
+    AtomDeclNode *allocNode(Definition *defn);
+
+
+
+
+
+    AtomDeclNode *lastAsNode(DefnOrHeader *doh);
+
+  public:
+    explicit AtomDecls(JSContext *cx)
+      : cx(cx), map(__null)
+    {}
+
+    ~AtomDecls();
+
+    bool init();
+
+    void clear() {
+        map->clear();
+    }
+
+
+    inline Definition *lookupFirst(JSAtom *atom);
+
+
+    inline MultiDeclRange lookupMulti(JSAtom *atom);
+
+
+    inline bool addUnique(JSAtom *atom, Definition *defn);
+    bool addShadow(JSAtom *atom, Definition *defn);
+    bool addHoist(JSAtom *atom, Definition *defn);
+
+
+    void updateFirst(JSAtom *atom, Definition *defn) {
+        do { } while(0);
+        AtomDOHMap::Ptr p = map->lookup(atom);
+        do { } while(0);
+        if (p.value().isHeader())
+            p.value().header()->defn = defn;
+        else
+            p.value() = DefnOrHeader(defn);
+    }
+
+
+    void remove(JSAtom *atom) {
+        do { } while(0);
+        AtomDOHMap::Ptr p = map->lookup(atom);
+        if (!p)
+            return;
+
+        DefnOrHeader &doh = p.value();
+        if (!doh.isHeader()) {
+            map->remove(p);
+            return;
+        }
+
+        AtomDeclNode *node = doh.header();
+        AtomDeclNode *newHead = node->next;
+        if (newHead)
+            p.value() = DefnOrHeader(newHead);
+        else
+            map->remove(p);
+    }
+
+    AtomDOHMap::Range all() {
+        do { } while(0);
+        return map->all();
+    }
+
+
+
+
+};
+
+
+
+
+
+
+class MultiDeclRange
+{
+    friend class AtomDecls;
+
+    AtomDeclNode *node;
+    Definition *defn;
+
+    explicit MultiDeclRange(Definition *defn) : node(__null), defn(defn) {}
+    explicit MultiDeclRange(AtomDeclNode *node) : node(node), defn(node->defn) {}
+
+  public:
+    void popFront() {
+        do { } while(0);
+        if (!node) {
+            defn = __null;
+            return;
+        }
+        node = node->next;
+        defn = node ? node->defn : __null;
+    }
+
+    Definition *front() {
+        do { } while(0);
+        return defn;
+    }
+
+    bool empty() const {
+        do { } while (0);
+        return !defn;
+    }
+};
+
+
+class AtomDeclsIter
+{
+    AtomDOHMap::Range r;
+    AtomDeclNode *link;
+
+  public:
+    explicit AtomDeclsIter(AtomDecls *decls) : r(decls->all()), link(__null) {}
+
+    Definition *next() {
+        if (link) {
+            do { } while(0);
+            Definition *result = link->defn;
+            link = link->next;
+            do { } while(0);
+            return result;
+        }
+
+        if (r.empty())
+            return __null;
+
+        const DefnOrHeader &doh = r.front().value();
+        r.popFront();
+
+        if (!doh.isHeader())
+            return doh.defn();
+
+        do { } while(0);
+        AtomDeclNode *node = doh.header();
+        link = node->next;
+        return node->defn;
+    }
+};
+
+typedef AtomDefnMap::Range AtomDefnRange;
+typedef AtomDefnMap::AddPtr AtomDefnAddPtr;
+typedef AtomDefnMap::Ptr AtomDefnPtr;
+typedef AtomIndexMap::AddPtr AtomIndexAddPtr;
+typedef AtomIndexMap::Ptr AtomIndexPtr;
+typedef AtomDOHMap::Ptr AtomDOHPtr;
+typedef AtomDOHMap::AddPtr AtomDOHAddPtr;
+typedef AtomDOHMap::Range AtomDOHRange;
+
+}
+# 20 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxtinlines.h" 2
+
+
+
+
+namespace js {
+
+inline void
+NewObjectCache::staticAsserts()
+{
+    typedef int moz_static_assert109[(NewObjectCache::MAX_OBJ_SIZE == sizeof(JSObject_Slots16)) ? 1 : -1];
+    typedef int moz_static_assert110[(gc::FINALIZE_OBJECT_LAST == gc::FINALIZE_OBJECT16_BACKGROUND) ? 1 : -1];
+}
+
+inline bool
+NewObjectCache::lookup(Class *clasp, gc::Cell *key, gc::AllocKind kind, EntryIndex *pentry)
+{
+    uintptr_t hash = (uintptr_t(clasp) ^ uintptr_t(key)) + kind;
+    *pentry = hash % js::ArrayLength(entries);
+
+    Entry *entry = &entries[*pentry];
+
+
+    return (entry->clasp == clasp && entry->key == key);
+}
+
+inline bool
+NewObjectCache::lookupProto(Class *clasp, JSObject *proto, gc::AllocKind kind, EntryIndex *pentry)
+{
+    do { } while(0);
+    return lookup(clasp, proto, kind, pentry);
+}
+
+inline bool
+NewObjectCache::lookupGlobal(Class *clasp, js::GlobalObject *global, gc::AllocKind kind, EntryIndex *pentry)
+{
+    return lookup(clasp, global, kind, pentry);
+}
+
+inline bool
+NewObjectCache::lookupType(Class *clasp, js::types::TypeObject *type, gc::AllocKind kind, EntryIndex *pentry)
+{
+    return lookup(clasp, type, kind, pentry);
+}
+
+inline void
+NewObjectCache::fill(EntryIndex entry_, Class *clasp, gc::Cell *key, gc::AllocKind kind, JSObject *obj)
+{
+    do { } while(0);
+    Entry *entry = &entries[entry_];
+
+    do { } while(0);
+
+    entry->clasp = clasp;
+    entry->key = key;
+    entry->kind = kind;
+
+    entry->nbytes = obj->sizeOfThis();
+    js_memcpy(&entry->templateObject, obj, entry->nbytes);
+}
+
+inline void
+NewObjectCache::fillProto(EntryIndex entry, Class *clasp, JSObject *proto, gc::AllocKind kind, JSObject *obj)
+{
+    do { } while(0);
+    do { } while(0);
+    return fill(entry, clasp, proto, kind, obj);
+}
+
+inline void
+NewObjectCache::fillGlobal(EntryIndex entry, Class *clasp, js::GlobalObject *global, gc::AllocKind kind, JSObject *obj)
+{
+
+    return fill(entry, clasp, global, kind, obj);
+}
+
+inline void
+NewObjectCache::fillType(EntryIndex entry, Class *clasp, js::types::TypeObject *type, gc::AllocKind kind, JSObject *obj)
+{
+    do { } while(0);
+    return fill(entry, clasp, type, kind, obj);
+}
+
+inline JSObject *
+NewObjectCache::newObjectFromHit(JSContext *cx, EntryIndex entry_)
+{
+    do { } while(0);
+    Entry *entry = &entries[entry_];
+
+    JSObject *obj = js_TryNewGCObject(cx, entry->kind);
+    if (obj) {
+        copyCachedToObject(obj, reinterpret_cast<JSObject *>(&entry->templateObject));
+        Probes::createObject(cx, obj);
+        return obj;
+    }
+
+
+    size_t nbytes = entry->nbytes;
+    char stackObject[sizeof(JSObject_Slots16)];
+    do { } while(0);
+    js_memcpy(&stackObject, &entry->templateObject, nbytes);
+
+    JSObject *baseobj = (JSObject *) stackObject;
+
+    obj = js_NewGCObject(cx, entry->kind);
+    if (obj) {
+        copyCachedToObject(obj, baseobj);
+        Probes::createObject(cx, obj);
+        return obj;
+    }
+
+    return __null;
+}
+
+struct PreserveRegsGuard
+{
+    PreserveRegsGuard(JSContext *cx, FrameRegs &regs)
+      : prevContextRegs(cx->maybeRegs()), cx(cx), regs_(regs) {
+        cx->stack.repointRegs(&regs_);
+    }
+    ~PreserveRegsGuard() {
+        do { } while(0);
+        *prevContextRegs = regs_;
+        cx->stack.repointRegs(prevContextRegs);
+    }
+
+    FrameRegs *prevContextRegs;
+
+  private:
+    JSContext *cx;
+    FrameRegs &regs_;
+};
+
+static inline GlobalObject *
+GetGlobalForScopeChain(JSContext *cx)
+{
+    if (cx->hasfp())
+        return &cx->fp()->global();
+
+    JSObject *scope = JS_ObjectToInnerObject(cx, cx->globalObject);
+    if (!scope)
+        return __null;
+    return &scope->asGlobal();
+}
+
+inline GSNCache *
+GetGSNCache(JSContext *cx)
+{
+    return &cx->runtime->gsnCache;
+}
+
+
+
+class AutoNamespaceArray : protected AutoGCRooter {
+  public:
+    AutoNamespaceArray(JSContext *cx)
+        : AutoGCRooter(cx, NAMESPACES), context(cx) {
+        array.init();
+    }
+
+    ~AutoNamespaceArray() {
+        array.finish(context->runtime->defaultFreeOp());
+    }
+
+    uint32_t length() const { return array.length; }
+
+  private:
+    JSContext *context;
+    friend void AutoGCRooter::trace(JSTracer *trc);
+
+  public:
+    JSXMLArray<JSObject> array;
+};
+
+
+
+template <typename T>
+class AutoPtr
+{
+    JSContext *cx;
+    T *value;
+
+    AutoPtr(const AutoPtr &other) ;
+
+  public:
+    explicit AutoPtr(JSContext *cx) : cx(cx), value(__null) {}
+    ~AutoPtr() {
+        cx->delete_<T>(value);
+    }
+
+    void operator=(T *ptr) { value = ptr; }
+
+    typedef void ***** ConvertibleToBool;
+    operator ConvertibleToBool() const { return (ConvertibleToBool) value; }
+
+    const T *operator->() const { return value; }
+    T *operator->() { return value; }
+
+    T *get() { return value; }
+};
+# 325 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxtinlines.h"
+#define START_ASSERT_SAME_COMPARTMENT() if (cx->runtime->gcRunning) return; CompartmentChecker c(cx)
+
+
+
+
+template <class T1> inline void
+assertSameCompartment(JSContext *cx, const T1 &t1)
+{
+
+
+
+
+}
+
+template <class T1, class T2> inline void
+assertSameCompartment(JSContext *cx, const T1 &t1, const T2 &t2)
+{
+
+
+
+
+
+}
+
+template <class T1, class T2, class T3> inline void
+assertSameCompartment(JSContext *cx, const T1 &t1, const T2 &t2, const T3 &t3)
+{
+
+
+
+
+
+
+}
+
+template <class T1, class T2, class T3, class T4> inline void
+assertSameCompartment(JSContext *cx, const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4)
+{
+
+
+
+
+
+
+
+}
+
+template <class T1, class T2, class T3, class T4, class T5> inline void
+assertSameCompartment(JSContext *cx, const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4, const T5 &t5)
+{
+# 383 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxtinlines.h"
+}
+
+#undef START_ASSERT_SAME_COMPARTMENT
+
+
+__attribute__((always_inline)) inline bool
+CallJSNative(JSContext *cx, Native native, const CallArgs &args)
+{
+
+
+
+    assertSameCompartment(cx, args);
+    bool ok = native(cx, args.length(), args.base());
+    if (ok) {
+        assertSameCompartment(cx, args.rval());
+        do { } while (0);
+    }
+    return ok;
+}
+
+extern JSBool CallOrConstructBoundFunction(JSContext *, unsigned, js::Value *);
+
+
+__attribute__((always_inline)) inline bool
+CallJSNativeConstructor(JSContext *cx, Native native, const CallArgs &args)
+{
+
+
+
+
+    do { } while(0);
+    if (!CallJSNative(cx, native, args))
+        return false;
+# 432 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jscntxtinlines.h"
+    do { } while (0)
+
+
+                                                                                 ;
+
+    return true;
+}
+
+__attribute__((always_inline)) inline bool
+CallJSPropertyOp(JSContext *cx, PropertyOp op, HandleObject receiver, HandleId id, Value *vp)
+{
+    assertSameCompartment(cx, receiver, id, *vp);
+    JSBool ok = op(cx, receiver, id, vp);
+    if (ok)
+        assertSameCompartment(cx, *vp);
+    return ok;
+}
+
+__attribute__((always_inline)) inline bool
+CallJSPropertyOpSetter(JSContext *cx, StrictPropertyOp op, HandleObject obj, HandleId id,
+                       JSBool strict, Value *vp)
+{
+    assertSameCompartment(cx, obj, id, *vp);
+    return op(cx, obj, id, strict, vp);
+}
+
+inline bool
+CallSetter(JSContext *cx, HandleObject obj, HandleId id, StrictPropertyOp op, unsigned attrs,
+           unsigned shortid, JSBool strict, Value *vp)
+{
+    if (attrs & 0x20)
+        return InvokeGetterOrSetter(cx, obj, CastAsObjectJsval(op), 1, vp, vp);
+
+    if (attrs & 0x10)
+        return js_ReportGetterOnlyAssignment(cx);
+
+    if (!(attrs & 0x100))
+        return CallJSPropertyOpSetter(cx, op, obj, id, strict, vp);
+
+    RootedId nid(cx, INT_TO_JSID(shortid));
+
+    return CallJSPropertyOpSetter(cx, op, obj, nid, strict, vp);
+}
+
+static inline HeapPtrAtom *
+FrameAtomBase(JSContext *cx, js::StackFrame *fp)
+{
+    return fp->script()->atoms;
+}
+
+}
+
+inline JSVersion
+JSContext::findVersion() const
+{
+    if (hasVersionOverride)
+        return versionOverride;
+
+    if (stack.hasfp()) {
+
+        js::StackFrame *f = fp();
+        while (f && !f->isScriptFrame())
+            f = f->prev();
+        if (f)
+            return f->script()->getVersion();
+    }
+
+    return defaultVersion;
+}
+
+inline bool
+JSContext::canSetDefaultVersion() const
+{
+    return !stack.hasfp() && !hasVersionOverride;
+}
+
+inline void
+JSContext::overrideVersion(JSVersion newVersion)
+{
+    do { } while(0);
+    versionOverride = newVersion;
+    hasVersionOverride = true;
+}
+
+inline bool
+JSContext::maybeOverrideVersion(JSVersion newVersion)
+{
+    if (canSetDefaultVersion()) {
+        setDefaultVersion(newVersion);
+        return false;
+    }
+    overrideVersion(newVersion);
+    return true;
+}
+
+inline unsigned
+JSContext::getCompileOptions() const { return js::VersionFlagsToOptions(findVersion()); }
+
+inline unsigned
+JSContext::allOptions() const { return getRunOptions() | getCompileOptions(); }
+
+inline void
+JSContext::setCompileOptions(unsigned newcopts)
+{
+    do { } while(0);
+    if ((__builtin_expect((getCompileOptions() == newcopts), 1)))
+        return;
+    JSVersion version = findVersion();
+    JSVersion newVersion = js::OptionFlagsToVersion(newcopts, version);
+    maybeOverrideVersion(newVersion);
+}
+
+inline void
+JSContext::assertValidStackDepth(unsigned depth)
+{
+
+
+
+
+}
+
+inline js::LifoAlloc &
+JSContext::typeLifoAlloc()
+{
+    return compartment->typeLifoAlloc;
+}
+
+inline bool
+JSContext::ensureGeneratorStackSpace()
+{
+    bool ok = genStack.reserve(genStack.length() + 1);
+    if (!ok)
+        js_ReportOutOfMemory(this);
+    return ok;
+}
+
+inline void
+JSContext::setPendingException(js::Value v) {
+    do { } while(0);
+    this->throwing = true;
+    this->exception = v;
+    js::assertSameCompartment(this, v);
+}
+
+inline bool
+JSContext::ensureParseMapPool()
+{
+    if (parseMapPool_)
+        return true;
+    parseMapPool_ = js::OffTheBooks::new_<js::ParseMapPool>(this);
+    return parseMapPool_;
+}
+
+inline js::PropertyTree&
+JSContext::propertyTree()
+{
+    return compartment->propertyTree;
+}
+
+
+static inline js::StackFrame *
+js_GetTopStackFrame(JSContext *cx, FrameExpandKind expand)
+{
+
+    if (expand)
+        js::mjit::ExpandInlineFrames(cx->compartment);
+
+
+    return cx->maybefp();
+}
+# 27 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscopeinlines.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 1
+# 29 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscopeinlines.h" 2
+
+
+
+namespace js {
+
+inline
+BaseShape::BaseShape(Class *clasp, JSObject *parent, uint32_t objectFlags)
+{
+    do { } while(0);
+    PodZero(this);
+    this->clasp = clasp;
+    this->parent = parent;
+    this->flags = objectFlags;
+}
+
+inline
+BaseShape::BaseShape(Class *clasp, JSObject *parent, uint32_t objectFlags,
+                     uint8_t attrs, js::PropertyOp rawGetter, js::StrictPropertyOp rawSetter)
+{
+    do { } while(0);
+    PodZero(this);
+    this->clasp = clasp;
+    this->parent = parent;
+    this->flags = objectFlags;
+    this->rawGetter = rawGetter;
+    this->rawSetter = rawSetter;
+    if ((attrs & 0x10) && rawGetter) {
+        this->flags |= HAS_GETTER_OBJECT;
+        JSObject::writeBarrierPost(this->getterObj, &this->getterObj);
+    }
+    if ((attrs & 0x20) && rawSetter) {
+        this->flags |= HAS_SETTER_OBJECT;
+        JSObject::writeBarrierPost(this->setterObj, &this->setterObj);
+    }
+}
+
+inline
+BaseShape::BaseShape(const StackBaseShape &base)
+{
+    PodZero(this);
+    this->clasp = base.clasp;
+    this->parent = base.parent;
+    this->flags = base.flags;
+    this->rawGetter = base.rawGetter;
+    this->rawSetter = base.rawSetter;
+    if ((base.flags & HAS_GETTER_OBJECT) && base.rawGetter) {
+        JSObject::writeBarrierPost(this->getterObj, &this->getterObj);
+    }
+    if ((base.flags & HAS_SETTER_OBJECT) && base.rawSetter) {
+        JSObject::writeBarrierPost(this->setterObj, &this->setterObj);
+    }
+}
+
+inline BaseShape &
+BaseShape::operator=(const BaseShape &other)
+{
+    clasp = other.clasp;
+    parent = other.parent;
+    flags = other.flags;
+    slotSpan_ = other.slotSpan_;
+    if (flags & HAS_GETTER_OBJECT) {
+        getterObj = other.getterObj;
+        JSObject::writeBarrierPost(getterObj, &getterObj);
+    } else {
+        rawGetter = other.rawGetter;
+    }
+    if (flags & HAS_SETTER_OBJECT) {
+        setterObj = other.setterObj;
+        JSObject::writeBarrierPost(setterObj, &setterObj);
+    } else {
+        rawSetter = other.rawSetter;
+    }
+    return *this;
+}
+
+inline bool
+BaseShape::matchesGetterSetter(PropertyOp rawGetter, StrictPropertyOp rawSetter) const
+{
+    return rawGetter == this->rawGetter && rawSetter == this->rawSetter;
+}
+
+inline
+StackBaseShape::StackBaseShape(Shape *shape)
+  : flags(shape->getObjectFlags()),
+    clasp(shape->getObjectClass()),
+    parent(shape->getObjectParent())
+{
+    updateGetterSetter(shape->attrs, shape->getter(), shape->setter());
+}
+
+inline void
+StackBaseShape::updateGetterSetter(uint8_t attrs,
+                                   PropertyOp rawGetter,
+                                   StrictPropertyOp rawSetter)
+{
+    flags &= ~(BaseShape::HAS_GETTER_OBJECT | BaseShape::HAS_SETTER_OBJECT);
+    if ((attrs & 0x10) && rawGetter)
+        flags |= BaseShape::HAS_GETTER_OBJECT;
+    if ((attrs & 0x20) && rawSetter)
+        flags |= BaseShape::HAS_SETTER_OBJECT;
+
+    this->rawGetter = rawGetter;
+    this->rawSetter = rawSetter;
+}
+
+inline void
+BaseShape::adoptUnowned(UnownedBaseShape *other)
+{
+
+
+
+
+    do { } while(0);
+    DebugOnly<uint32_t> flags = getObjectFlags();
+    do { } while(0);
+
+    uint32_t span = slotSpan();
+    ShapeTable *table = &this->table();
+
+    *this = *other;
+    setOwned(other);
+    setTable(table);
+    setSlotSpan(span);
+
+    assertConsistency();
+}
+
+inline void
+BaseShape::setOwned(UnownedBaseShape *unowned)
+{
+    flags |= OWNED_SHAPE;
+    this->unowned_ = unowned;
+}
+
+inline void
+BaseShape::assertConsistency()
+{
+# 177 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscopeinlines.h"
+}
+
+inline
+Shape::Shape(const StackShape &other, uint32_t nfixed)
+  : base_(other.base),
+    propid_(other.propid),
+    slotInfo(other.maybeSlot() | (nfixed << FIXED_SLOTS_SHIFT)),
+    attrs(other.attrs),
+    flags(other.flags),
+    shortid_(other.shortid),
+    parent(__null)
+{
+    kids.setNull();
+}
+
+inline
+Shape::Shape(UnownedBaseShape *base, uint32_t nfixed)
+  : base_(base),
+    propid_(((jsid)0x4)),
+    slotInfo(SHAPE_INVALID_SLOT | (nfixed << FIXED_SLOTS_SHIFT)),
+    attrs(0x40),
+    flags(0),
+    shortid_(0),
+    parent(__null)
+{
+    do { } while(0);
+    kids.setNull();
+}
+
+inline HashNumber
+StackShape::hash() const
+{
+    HashNumber hash = uintptr_t(base);
+
+
+    hash = (((hash) << (4)) | ((hash) >> (32 - (4)))) ^ (flags & Shape::PUBLIC_FLAGS);
+    hash = (((hash) << (4)) | ((hash) >> (32 - (4)))) ^ attrs;
+    hash = (((hash) << (4)) | ((hash) >> (32 - (4)))) ^ shortid;
+    hash = (((hash) << (4)) | ((hash) >> (32 - (4)))) ^ slot_;
+    hash = (((hash) << (4)) | ((hash) >> (32 - (4)))) ^ (propid);
+    return hash;
+}
+
+inline bool
+Shape::matches(const js::Shape *other) const
+{
+    return propid_.get() == other->propid_.get() &&
+           matchesParamsAfterId(other->base(), other->maybeSlot(), other->attrs,
+                                other->flags, other->shortid_);
+}
+
+inline bool
+Shape::matches(const StackShape &other) const
+{
+    return propid_.get() == other.propid &&
+           matchesParamsAfterId(other.base, other.slot_, other.attrs, other.flags, other.shortid);
+}
+
+inline bool
+Shape::matchesParamsAfterId(BaseShape *base, uint32_t aslot,
+                            unsigned aattrs, unsigned aflags, int ashortid) const
+{
+    return base->unowned() == this->base()->unowned() &&
+           maybeSlot() == aslot &&
+           attrs == aattrs &&
+           ((flags ^ aflags) & PUBLIC_FLAGS) == 0 &&
+           shortid_ == ashortid;
+}
+
+inline bool
+Shape::getUserId(JSContext *cx, jsid *idp) const
+{
+    const Shape *self = this;
+
+
+
+
+
+
+    if (self->hasShortID()) {
+        int16_t id = self->shortid();
+        if (id < 0)
+            return ValueToId(cx, Int32Value(id), idp);
+        *idp = INT_TO_JSID(id);
+    } else {
+        *idp = propid();
+    }
+    return true;
+}
+
+inline bool
+Shape::get(JSContext* cx, HandleObject receiver, JSObject* obj, JSObject *pobj, Value* vp) const
+{
+    do { } while(0);
+
+    if (hasGetterValue()) {
+        Value fval = getterValue();
+        return InvokeGetterOrSetter(cx, receiver, fval, 0, 0, vp);
+    }
+
+    RootedId id(cx);
+    if (!getUserId(cx, id.address()))
+        return false;
+
+    return CallJSPropertyOp(cx, getterOp(), receiver, id, vp);
+}
+
+inline bool
+Shape::set(JSContext* cx, HandleObject obj, bool strict, Value* vp) const
+{
+    do { } while (0);
+
+    if (attrs & 0x20) {
+        Value fval = setterValue();
+        return InvokeGetterOrSetter(cx, obj, fval, 1, vp, vp);
+    }
+
+    if (attrs & 0x10)
+        return js_ReportGetterOnlyAssignment(cx);
+
+    RootedId id(cx);
+    if (!getUserId(cx, id.address()))
+        return false;
+
+
+
+
+
+    if (obj->isWith()) {
+        RootedObject nobj(cx, &obj->asWith().object());
+        return CallJSPropertyOpSetter(cx, setterOp(), nobj, id, strict, vp);
+    }
+
+    return CallJSPropertyOpSetter(cx, setterOp(), obj, id, strict, vp);
+}
+
+inline void
+Shape::setParent(js::Shape *p)
+{
+    do { } while (0)
+                                               ;
+    do { } while (0)
+                                                              ;
+    parent = p;
+}
+
+inline void
+Shape::removeFromDictionary(JSObject *obj)
+{
+    do { } while(0);
+    do { } while(0);
+    do { } while(0);
+
+    do { } while(0);
+    do { } while(0);
+
+    if (parent)
+        parent->listp = listp;
+    *listp = parent;
+    listp = __null;
+}
+
+inline void
+Shape::insertIntoDictionary(HeapPtrShape *dictp)
+{
+
+
+
+
+    do { } while(0);
+    do { } while(0);
+
+    do { } while (0);
+    do { } while (0);
+    do { } while (0);
+
+    setParent(*dictp);
+    if (parent)
+        parent->listp = &parent;
+    listp = (HeapPtrShape *) dictp;
+    *dictp = this;
+}
+
+void
+Shape::initDictionaryShape(const StackShape &child, uint32_t nfixed, HeapPtrShape *dictp)
+{
+    new (this) Shape(child, nfixed);
+    this->flags |= IN_DICTIONARY;
+
+    this->listp = __null;
+    insertIntoDictionary(dictp);
+}
+
+inline
+EmptyShape::EmptyShape(UnownedBaseShape *base, uint32_t nfixed)
+  : js::Shape(base, nfixed)
+{
+
+    if (!getObjectClass()->isNative())
+        flags |= NON_NATIVE;
+}
+
+inline void
+Shape::writeBarrierPre(const js::Shape *shape)
+{
+
+    if (!shape)
+        return;
+
+    JSCompartment *comp = shape->compartment();
+    if (comp->needsBarrier()) {
+        Shape *tmp = const_cast<Shape *>(shape);
+        MarkShapeUnbarriered(comp->barrierTracer(), &tmp, "write barrier");
+        do { } while(0);
+    }
+
+}
+
+inline void
+Shape::writeBarrierPost(const js::Shape *shape, void *addr)
+{
+}
+
+inline void
+Shape::readBarrier(const Shape *shape)
+{
+
+    JSCompartment *comp = shape->compartment();
+    if (comp->needsBarrier()) {
+        Shape *tmp = const_cast<Shape *>(shape);
+        MarkShapeUnbarriered(comp->barrierTracer(), &tmp, "read barrier");
+        do { } while(0);
+    }
+
+}
+
+inline void
+Shape::markChildren(JSTracer *trc)
+{
+    MarkBaseShape(trc, &base_, "base");
+    gc::MarkId(trc, &propidRef(), "propid");
+    if (parent)
+        MarkShape(trc, &parent, "parent");
+}
+
+inline void
+BaseShape::writeBarrierPre(BaseShape *base)
+{
+
+    if (!base)
+        return;
+
+    JSCompartment *comp = base->compartment();
+    if (comp->needsBarrier()) {
+        BaseShape *tmp = base;
+        MarkBaseShapeUnbarriered(comp->barrierTracer(), &tmp, "write barrier");
+        do { } while(0);
+    }
+
+}
+
+inline void
+BaseShape::writeBarrierPost(BaseShape *shape, void *addr)
+{
+}
+
+inline void
+BaseShape::readBarrier(BaseShape *base)
+{
+
+    JSCompartment *comp = base->compartment();
+    if (comp->needsBarrier()) {
+        BaseShape *tmp = base;
+        MarkBaseShapeUnbarriered(comp->barrierTracer(), &tmp, "read barrier");
+        do { } while(0);
+    }
+
+}
+
+inline void
+BaseShape::markChildren(JSTracer *trc)
+{
+    if (hasGetterObject())
+        MarkObjectUnbarriered(trc, &getterObj, "getter");
+
+    if (hasSetterObject())
+        MarkObjectUnbarriered(trc, &setterObj, "setter");
+
+    if (isOwned())
+        MarkBaseShape(trc, &unowned_, "base");
+
+    if (parent)
+        MarkObject(trc, &parent, "parent");
+}
+
+}
+# 23 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscriptinlines.h" 2
+
+namespace js {
+
+inline
+Bindings::Bindings(JSContext *cx)
+    : lastBinding(__null), nargs(0), nvars(0), hasDup_(false)
+{}
+
+inline void
+Bindings::transfer(JSContext *cx, Bindings *bindings)
+{
+    do { } while(0);
+    do { } while(0);
+
+    *this = *bindings;
+
+
+
+}
+
+inline void
+Bindings::clone(JSContext *cx, Bindings *bindings)
+{
+    do { } while(0);
+    do { } while(0);
+
+    *this = *bindings;
+}
+
+Shape *
+Bindings::lastShape() const
+{
+    do { } while(0);
+    do { } while(0);
+    return lastBinding;
+}
+
+Shape *
+Bindings::initialShape(JSContext *cx) const
+{
+
+    gc::AllocKind kind = gc::FINALIZE_OBJECT4;
+    do { } while(0);
+
+    return EmptyShape::getInitialShape(cx, &CallClass, __null, __null, kind,
+                                       BaseShape::VAROBJ);
+}
+
+bool
+Bindings::ensureShape(JSContext *cx)
+{
+    if (!lastBinding) {
+        lastBinding = initialShape(cx);
+        if (!lastBinding)
+            return false;
+    }
+    return true;
+}
+
+bool
+Bindings::extensibleParents()
+{
+    return lastBinding && lastBinding->extensibleParents();
+}
+
+extern void
+CurrentScriptFileLineOriginSlow(JSContext *cx, const char **file, unsigned *linenop, JSPrincipals **origin);
+
+inline void
+CurrentScriptFileLineOrigin(JSContext *cx, const char **file, unsigned *linenop, JSPrincipals **origin,
+                            LineOption opt = NOT_CALLED_FROM_JSOP_EVAL)
+{
+    if (opt == CALLED_FROM_JSOP_EVAL) {
+        do { } while(0);
+        do { } while(0);
+        JSScript *script = cx->fp()->script();
+        *file = script->filename;
+        *linenop = ((unsigned)(((cx->regs().pc + 3)[1] << 8) | (cx->regs().pc + 3)[2]));
+        *origin = script->originPrincipals;
+        return;
+    }
+
+    CurrentScriptFileLineOriginSlow(cx, file, linenop, origin);
+}
+
+inline void
+ScriptCounts::destroy(FreeOp *fop)
+{
+    fop->free_(pcCountsVector);
+}
+
+inline void
+MarkScriptFilename(JSRuntime *rt, const char *filename)
+{
+
+
+
+
+
+    if (rt->gcIsFull)
+        ScriptFilenameEntry::fromFilename(filename)->marked = true;
+}
+
+}
+
+inline void
+JSScript::setFunction(JSFunction *fun)
+{
+    function_ = fun;
+}
+
+inline JSFunction *
+JSScript::getFunction(size_t index)
+{
+    JSObject *funobj = getObject(index);
+    do { } while(0);
+    return funobj->toFunction();
+}
+
+inline JSFunction *
+JSScript::getCallerFunction()
+{
+    do { } while(0);
+    return getFunction(0);
+}
+
+inline JSObject *
+JSScript::getRegExp(size_t index)
+{
+    js::ObjectArray *arr = regexps();
+    do { } while(0);
+    JSObject *obj = arr->vector[index];
+    do { } while(0);
+    return obj;
+}
+
+inline bool
+JSScript::isEmpty() const
+{
+    if (length > 3)
+        return false;
+
+    jsbytecode *pc = code;
+    if (noScriptRval && JSOp(*pc) == JSOP_FALSE)
+        ++pc;
+    return JSOp(*pc) == JSOP_STOP;
+}
+
+inline bool
+JSScript::hasGlobal() const
+{
+
+
+
+
+
+    do { } while(0);
+    js::GlobalObject *obj = types->global;
+    return obj && !obj->isCleared();
+}
+
+inline js::GlobalObject *
+JSScript::global() const
+{
+    do { } while(0);
+    return types->global;
+}
+
+inline bool
+JSScript::hasClearedGlobal() const
+{
+    do { } while(0);
+    js::GlobalObject *obj = types->global;
+    return obj && obj->isCleared();
+}
+
+inline js::types::TypeScriptNesting *
+JSScript::nesting() const
+{
+    do { } while(0);
+    return types->nesting;
+}
+
+inline void
+JSScript::clearNesting()
+{
+    js::types::TypeScriptNesting *nesting = this->nesting();
+    if (nesting) {
+        js::Foreground::delete_(nesting);
+        types->nesting = __null;
+    }
+}
+
+
+inline bool
+JSScript::ensureHasJITInfo(JSContext *cx)
+{
+    if (jitInfo)
+        return true;
+    jitInfo = cx->new_<JITScriptSet>();
+    return jitInfo != __null;
+}
+
+inline void
+JSScript::destroyJITInfo(js::FreeOp *fop)
+{
+    fop->delete_(jitInfo);
+    jitInfo = __null;
+}
+
+
+inline void
+JSScript::writeBarrierPre(JSScript *script)
+{
+
+    if (!script)
+        return;
+
+    JSCompartment *comp = script->compartment();
+    if (comp->needsBarrier()) {
+        do { } while(0);
+        JSScript *tmp = script;
+        MarkScriptUnbarriered(comp->barrierTracer(), &tmp, "write barrier");
+        do { } while(0);
+    }
+
+}
+
+inline void
+JSScript::writeBarrierPost(JSScript *script, void *addr)
+{
+}
+# 18 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack-inl.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ArgumentsObject-inl.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ArgumentsObject-inl.h"
+#define ArgumentsObject_inl_h___ 
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ArgumentsObject.h" 1
+# 12 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ArgumentsObject-inl.h" 2
+
+namespace js {
+
+inline void
+ArgumentsObject::initInitialLength(uint32_t length)
+{
+    do { } while(0);
+    initFixedSlot(INITIAL_LENGTH_SLOT, Int32Value(length << PACKED_BITS_COUNT));
+    do { } while(0);
+    do { } while(0);
+}
+
+inline uint32_t
+ArgumentsObject::initialLength() const
+{
+    uint32_t argc = uint32_t(getFixedSlot(INITIAL_LENGTH_SLOT).toInt32()) >> PACKED_BITS_COUNT;
+    do { } while(0);
+    return argc;
+}
+
+inline void
+ArgumentsObject::markLengthOverridden()
+{
+    uint32_t v = getFixedSlot(INITIAL_LENGTH_SLOT).toInt32() | LENGTH_OVERRIDDEN_BIT;
+    setFixedSlot(INITIAL_LENGTH_SLOT, Int32Value(v));
+}
+
+inline bool
+ArgumentsObject::hasOverriddenLength() const
+{
+    const js::Value &v = getFixedSlot(INITIAL_LENGTH_SLOT);
+    return v.toInt32() & LENGTH_OVERRIDDEN_BIT;
+}
+
+inline void
+ArgumentsObject::initData(ArgumentsData *data)
+{
+    do { } while(0);
+    initFixedSlot(DATA_SLOT, PrivateValue(data));
+}
+
+inline ArgumentsData *
+ArgumentsObject::data() const
+{
+    return reinterpret_cast<js::ArgumentsData *>(getFixedSlot(DATA_SLOT).toPrivate());
+}
+
+inline bool
+ArgumentsObject::isElementDeleted(uint32_t i) const
+{
+    return IsBitArrayElementSet(data()->deletedBits, initialLength(), i);
+}
+
+inline bool
+ArgumentsObject::isAnyElementDeleted() const
+{
+    return IsAnyBitArrayElementSet(data()->deletedBits, initialLength());
+}
+
+inline void
+ArgumentsObject::markElementDeleted(uint32_t i)
+{
+    SetBitArrayElement(data()->deletedBits, initialLength(), i);
+}
+
+inline const js::Value &
+ArgumentsObject::element(uint32_t i) const
+{
+    do { } while(0);
+    return data()->slots[i];
+}
+
+inline void
+ArgumentsObject::setElement(uint32_t i, const js::Value &v)
+{
+    do { } while(0);
+    data()->slots[i] = v;
+}
+
+inline bool
+ArgumentsObject::getElement(uint32_t i, Value *vp)
+{
+    if (i >= initialLength() || isElementDeleted(i))
+        return false;
+
+
+
+
+
+
+    StackFrame *fp = maybeStackFrame();
+    do { } while (0);
+    if (fp)
+        *vp = fp->canonicalActualArg(i);
+    else
+        *vp = element(i);
+    return true;
+}
+
+namespace detail {
+
+struct CopyNonHoleArgsTo
+{
+    CopyNonHoleArgsTo(ArgumentsObject *argsobj, Value *dst) : argsobj(*argsobj), dst(dst) {}
+    ArgumentsObject &argsobj;
+    Value *dst;
+    bool operator()(uint32_t argi, Value *src) {
+        *dst++ = *src;
+        return true;
+    }
+};
+
+}
+
+inline bool
+ArgumentsObject::getElements(uint32_t start, uint32_t count, Value *vp)
+{
+    do { } while(0);
+
+    uint32_t length = initialLength();
+    if (start > length || start + count > length || isAnyElementDeleted())
+        return false;
+
+    StackFrame *fp = maybeStackFrame();
+
+
+    if (!fp) {
+        const Value *srcbeg = Valueify(data()->slots) + start;
+        const Value *srcend = srcbeg + count;
+        const Value *src = srcbeg;
+        for (Value *dst = vp; src < srcend; ++dst, ++src)
+            *dst = *src;
+        return true;
+    }
+
+
+    do { } while(0);
+    return fp->forEachCanonicalActualArg(detail::CopyNonHoleArgsTo(this, vp), start, count);
+}
+
+inline js::StackFrame *
+ArgumentsObject::maybeStackFrame() const
+{
+    return reinterpret_cast<js::StackFrame *>(getFixedSlot(STACK_FRAME_SLOT).toPrivate());
+}
+
+inline void
+ArgumentsObject::setStackFrame(StackFrame *frame)
+{
+    setFixedSlot(STACK_FRAME_SLOT, PrivateValue(frame));
+}
+
+inline size_t
+ArgumentsObject::sizeOfMisc(JSMallocSizeOfFun mallocSizeOf) const
+{
+    return mallocSizeOf(data());
+}
+
+inline const js::Value &
+NormalArgumentsObject::callee() const
+{
+    return data()->callee;
+}
+
+inline void
+NormalArgumentsObject::clearCallee()
+{
+    data()->callee.set(compartment(), MagicValue(JS_OVERWRITTEN_CALLEE));
+}
+
+}
+# 20 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack-inl.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ScopeObject-inl.h" 1
+# 21 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack-inl.h" 2
+
+
+namespace js {
+
+
+
+
+
+
+static inline bool
+IsCacheableNonGlobalScope(JSObject *obj)
+{
+    bool cacheable = (obj->isCall() || obj->isBlock() || obj->isDeclEnv());
+
+    do { } while (0);
+    return cacheable;
+}
+
+inline HandleObject
+StackFrame::scopeChain() const
+{
+    do { } while (0);
+    if (!(flags_ & HAS_SCOPECHAIN)) {
+        scopeChain_ = callee().environment();
+        flags_ |= HAS_SCOPECHAIN;
+    }
+    return HandleObject::fromMarkedLocation(&scopeChain_);
+}
+
+inline GlobalObject &
+StackFrame::global() const
+{
+    return scopeChain()->global();
+}
+
+inline JSObject &
+StackFrame::varObj()
+{
+    JSObject *obj = scopeChain();
+    while (!obj->isVarObj())
+        obj = obj->enclosingScope();
+    return *obj;
+}
+
+inline JSCompartment *
+StackFrame::compartment() const
+{
+    do { } while (0);
+    return scopeChain()->compartment();
+}
+
+
+inline mjit::JITScript *
+StackFrame::jit()
+{
+    JSScript *script_ = script();
+    return script_->getJIT(isConstructing(), script_->compartment()->needsBarrier());
+}
+
+
+inline void
+StackFrame::initPrev(JSContext *cx)
+{
+    do { } while(0);
+    if (FrameRegs *regs = cx->maybeRegs()) {
+        prev_ = regs->fp();
+        prevpc_ = regs->pc;
+        prevInline_ = regs->inlined();
+        do { } while (0)
+                                                                                         ;
+    } else {
+        prev_ = __null;
+
+
+
+
+    }
+}
+
+inline void
+StackFrame::resetGeneratorPrev(JSContext *cx)
+{
+    flags_ |= HAS_PREVPC;
+    initPrev(cx);
+}
+
+inline void
+StackFrame::initInlineFrame(JSFunction *fun, StackFrame *prevfp, jsbytecode *prevpc)
+{
+
+
+
+
+    flags_ = StackFrame::FUNCTION;
+    exec.fun = fun;
+    resetInlinePrev(prevfp, prevpc);
+}
+
+inline void
+StackFrame::resetInlinePrev(StackFrame *prevfp, jsbytecode *prevpc)
+{
+    do { } while (0);
+    flags_ |= StackFrame::HAS_PREVPC;
+    prev_ = prevfp;
+    prevpc_ = prevpc;
+    prevInline_ = __null;
+}
+
+inline void
+StackFrame::initCallFrame(JSContext *cx, JSFunction &callee,
+                          JSScript *script, uint32_t nactual, StackFrame::Flags flagsArg)
+{
+    do { } while(0)
+
+
+                                                  ;
+    do { } while(0);
+
+
+    flags_ = FUNCTION | HAS_PREVPC | HAS_SCOPECHAIN | HAS_BLOCKCHAIN | flagsArg;
+    exec.fun = &callee;
+    u.nactual = nactual;
+    scopeChain_ = callee.environment();
+    ncode_ = __null;
+    initPrev(cx);
+    blockChain_= __null;
+    do { } while(0);
+    do { } while(0);
+    do { } while(0);
+    do { } while(0);
+
+    SetValueRangeToUndefined(slots(), script->nfixed);
+}
+
+
+
+
+
+inline void
+StackFrame::initFixupFrame(StackFrame *prev, StackFrame::Flags flags, void *ncode, unsigned nactual)
+{
+    do { } while(0)
+
+
+
+                                               ;
+
+    flags_ = FUNCTION | flags;
+    prev_ = prev;
+    ncode_ = ncode;
+    u.nactual = nactual;
+}
+
+inline JSObject *
+StackFrame::createRestParameter(JSContext *cx)
+{
+    do { } while(0);
+    unsigned nformal = fun()->nargs - 1, nactual = numActualArgs();
+    unsigned nrest = (nactual > nformal) ? nactual - nformal : 0;
+    return NewDenseCopiedArray(cx, nrest, actualArgs() + nformal);
+}
+
+inline Value &
+StackFrame::canonicalActualArg(unsigned i) const
+{
+    if (i < numFormalArgs())
+        return formalArg(i);
+    do { } while(0);
+    return actualArgs()[i];
+}
+
+template <class Op>
+inline bool
+StackFrame::forEachCanonicalActualArg(Op op, unsigned start , unsigned count )
+{
+    unsigned nformal = fun()->nargs;
+    do { } while(0);
+
+    Value *formals = formalArgsEnd() - nformal;
+    unsigned nactual = numActualArgs();
+    if (count == unsigned(-1))
+        count = nactual - start;
+
+    unsigned end = start + count;
+    do { } while(0);
+    do { } while(0);
+
+    if (end <= nformal) {
+        Value *p = formals + start;
+        for (; start < end; ++p, ++start) {
+            if (!op(start, p))
+                return false;
+        }
+    } else {
+        for (Value *p = formals + start; start < nformal; ++p, ++start) {
+            if (!op(start, p))
+                return false;
+        }
+        do { } while(0);
+        Value *actuals = formals - (nactual + 2) + start;
+        for (Value *p = actuals; start < end; ++p, ++start) {
+            if (!op(start, p))
+                return false;
+        }
+    }
+    return true;
+}
+
+template <class Op>
+inline bool
+StackFrame::forEachFormalArg(Op op)
+{
+    Value *formals = formalArgsEnd() - fun()->nargs;
+    Value *formalsEnd = formalArgsEnd();
+    unsigned i = 0;
+    for (Value *p = formals; p != formalsEnd; ++p, ++i) {
+        if (!op(i, p))
+            return false;
+    }
+    return true;
+}
+
+struct CopyTo
+{
+    Value *dst;
+    CopyTo(Value *dst) : dst(dst) {}
+    bool operator()(unsigned, Value *src) {
+        *dst++ = *src;
+        return true;
+    }
+};
+
+inline unsigned
+StackFrame::numActualArgs() const
+{
+# 264 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack-inl.h"
+    do { } while(0);
+    if ((__builtin_expect((flags_ & (OVERFLOW_ARGS | UNDERFLOW_ARGS)), 0)))
+        return u.nactual;
+    return numFormalArgs();
+}
+
+inline Value *
+StackFrame::actualArgs() const
+{
+    do { } while(0);
+    Value *argv = formalArgs();
+    if ((__builtin_expect((flags_ & OVERFLOW_ARGS), 0)))
+        return argv - (2 + u.nactual);
+    return argv;
+}
+
+inline Value *
+StackFrame::actualArgsEnd() const
+{
+    do { } while(0);
+    if ((__builtin_expect((flags_ & OVERFLOW_ARGS), 0)))
+        return formalArgs() - 2;
+    return formalArgs() + numActualArgs();
+}
+
+inline void
+StackFrame::setScopeChain(JSObject &obj)
+{
+# 304 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Stack-inl.h"
+    scopeChain_ = &obj;
+    flags_ |= HAS_SCOPECHAIN;
+}
+
+inline void
+StackFrame::initScopeChain(CallObject &obj)
+{
+    do { } while(0);
+    do { } while(0);
+    scopeChain_ = &obj;
+    flags_ |= HAS_SCOPECHAIN | HAS_CALL_OBJ;
+}
+
+inline CallObject &
+StackFrame::callObj() const
+{
+    do { } while (0);
+
+    JSObject *pobj = scopeChain();
+    while ((__builtin_expect((!pobj->isCall()), 0)))
+        pobj = pobj->enclosingScope();
+    return pobj->asCall();
+}
+
+inline bool
+StackFrame::maintainNestingState() const
+{
+
+
+
+
+    return isNonEvalFunctionFrame() && !isGeneratorFrame() && script()->nesting();
+}
+
+inline bool
+StackFrame::functionPrologue(JSContext *cx)
+{
+    do { } while(0);
+    do { } while(0);
+
+    if (fun()->isHeavyweight()) {
+        CallObject *callobj = CallObject::createForFunction(cx, this);
+        if (!callobj)
+            return false;
+        initScopeChain(*callobj);
+    } else {
+
+        scopeChain();
+    }
+
+    if (script()->nesting()) {
+        do { } while(0);
+        types::NestingPrologue(cx, this);
+    }
+
+    return true;
+}
+
+inline void
+StackFrame::functionEpilogue(JSContext *cx)
+{
+    do { } while(0);
+
+    if (cx->compartment->debugMode())
+        cx->runtime->debugScopes->onPopCall(this);
+
+    if (flags_ & (HAS_ARGS_OBJ | HAS_CALL_OBJ)) {
+        if (hasCallObj())
+            js_PutCallObject(this, scopeChain_->asCall());
+        if (hasArgsObj())
+            js_PutArgsObject(this);
+    }
+
+    if (maintainNestingState())
+        types::NestingEpilogue(this);
+}
+
+inline void
+StackFrame::updateEpilogueFlags()
+{
+    if (flags_ & (HAS_ARGS_OBJ | HAS_CALL_OBJ)) {
+        if (hasArgsObj() && !argsObj().maybeStackFrame())
+            flags_ &= ~HAS_ARGS_OBJ;
+        if (hasCallObj() && !callObj().maybeStackFrame()) {
+
+
+
+
+
+
+
+            scopeChain_ = isFunctionFrame()
+                          ? callee().environment()
+                          : &scopeChain_->asScope().enclosingScope();
+            flags_ &= ~HAS_CALL_OBJ;
+        }
+    }
+
+
+
+
+
+
+    if (maintainNestingState())
+        script()->nesting()->activeFrames++;
+}
+
+
+
+
+__attribute__((always_inline)) inline bool
+StackSpace::ensureSpace(JSContext *cx, MaybeReportError report, Value *from, ptrdiff_t nvals,
+                        JSCompartment *dest) const
+{
+    assertInvariants();
+    do { } while(0);
+
+
+
+    if ((__builtin_expect((conservativeEnd_ - from < nvals), 0)))
+        return ensureSpaceSlow(cx, report, from, nvals, dest);
+    return true;
+}
+
+inline Value *
+StackSpace::getStackLimit(JSContext *cx, MaybeReportError report)
+{
+    FrameRegs &regs = cx->regs();
+    unsigned nvals = regs.fp()->numSlots() + STACK_JIT_EXTRA;
+    return ensureSpace(cx, report, regs.sp, nvals)
+           ? conservativeEnd_
+           : __null;
+}
+
+
+
+__attribute__((always_inline)) inline StackFrame *
+ContextStack::getCallFrame(JSContext *cx, MaybeReportError report, const CallArgs &args,
+                           JSFunction *fun, JSScript *script, StackFrame::Flags *flags) const
+{
+    do { } while(0);
+    unsigned nformal = fun->nargs;
+
+    Value *firstUnused = args.end();
+    do { } while(0);
+
+
+    unsigned nvals = VALUES_PER_STACK_FRAME + script->nslots + StackSpace::STACK_JIT_EXTRA;
+
+
+
+    if (args.length() == nformal) {
+        if (!space().ensureSpace(cx, report, firstUnused, nvals))
+            return __null;
+        return reinterpret_cast<StackFrame *>(firstUnused);
+    }
+
+    if (args.length() < nformal) {
+        *flags = StackFrame::Flags(*flags | StackFrame::UNDERFLOW_ARGS);
+        unsigned nmissing = nformal - args.length();
+        if (!space().ensureSpace(cx, report, firstUnused, nmissing + nvals))
+            return __null;
+        SetValueRangeToUndefined(firstUnused, nmissing);
+        return reinterpret_cast<StackFrame *>(firstUnused + nmissing);
+    }
+
+    *flags = StackFrame::Flags(*flags | StackFrame::OVERFLOW_ARGS);
+    unsigned ncopy = 2 + nformal;
+    if (!space().ensureSpace(cx, report, firstUnused, ncopy + nvals))
+        return __null;
+    Value *dst = firstUnused;
+    Value *src = args.base();
+    PodCopy(dst, src, ncopy);
+    return reinterpret_cast<StackFrame *>(firstUnused + ncopy);
+}
+
+__attribute__((always_inline)) inline bool
+ContextStack::pushInlineFrame(JSContext *cx, FrameRegs &regs, const CallArgs &args,
+                              JSFunction &callee, JSScript *script,
+                              InitialFrameFlags initial)
+{
+    do { } while(0);
+    do { } while(0);
+
+    do { } while(0);
+
+    StackFrame::Flags flags = ToFrameFlags(initial);
+    StackFrame *fp = getCallFrame(cx, REPORT_ERROR, args, &callee, script, &flags);
+    if (!fp)
+        return false;
+
+
+    fp->initCallFrame(cx, callee, script, args.length(), flags);
+
+
+
+
+
+    regs.prepareToRun(*fp, script);
+    return true;
+}
+
+__attribute__((always_inline)) inline bool
+ContextStack::pushInlineFrame(JSContext *cx, FrameRegs &regs, const CallArgs &args,
+                              JSFunction &callee, JSScript *script,
+                              InitialFrameFlags initial, Value **stackLimit)
+{
+    if (!pushInlineFrame(cx, regs, args, callee, script, initial))
+        return false;
+    *stackLimit = space().conservativeEnd_;
+    return true;
+}
+
+__attribute__((always_inline)) inline StackFrame *
+ContextStack::getFixupFrame(JSContext *cx, MaybeReportError report,
+                            const CallArgs &args, JSFunction *fun, JSScript *script,
+                            void *ncode, InitialFrameFlags initial, Value **stackLimit)
+{
+    do { } while(0);
+    do { } while(0);
+    do { } while(0);
+
+    StackFrame::Flags flags = ToFrameFlags(initial);
+    StackFrame *fp = getCallFrame(cx, report, args, fun, script, &flags);
+    if (!fp)
+        return __null;
+
+
+    fp->initFixupFrame(cx->fp(), flags, ncode, args.length());
+
+    *stackLimit = space().conservativeEnd_;
+    return fp;
+}
+
+__attribute__((always_inline)) inline void
+ContextStack::popInlineFrame(FrameRegs &regs)
+{
+    do { } while(0);
+    do { } while(0);
+
+    StackFrame *fp = regs.fp();
+    fp->functionEpilogue(cx_);
+
+    Value *newsp = fp->actualArgs() - 1;
+    do { } while(0);
+
+    newsp[-1] = fp->returnValue();
+    regs.popFrame(newsp);
+}
+
+inline void
+ContextStack::popFrameAfterOverflow()
+{
+
+    FrameRegs &regs = seg_->regs();
+    StackFrame *fp = regs.fp();
+    regs.popFrame(fp->actualArgsEnd());
+}
+
+inline JSScript *
+ContextStack::currentScript(jsbytecode **ppc) const
+{
+    if (ppc)
+        *ppc = __null;
+
+    FrameRegs *regs = maybeRegs();
+    StackFrame *fp = regs ? regs->fp() : __null;
+    while (fp && fp->isDummyFrame())
+        fp = fp->prev();
+    if (!fp)
+        return __null;
+
+
+    mjit::CallSite *inlined = regs->inlined();
+    if (inlined) {
+        mjit::JITChunk *chunk = fp->jit()->chunk(regs->pc);
+        do { } while(0);
+        mjit::InlineFrame *frame = &chunk->inlineFrames()[inlined->inlineIndex];
+        JSScript *script = frame->fun->script();
+        if (script->compartment() != cx_->compartment)
+            return __null;
+        if (ppc)
+            *ppc = script->code + inlined->pcOffset;
+        return script;
+    }
+
+
+    JSScript *script = fp->script();
+    if (script->compartment() != cx_->compartment)
+        return __null;
+
+    if (ppc)
+        *ppc = fp->pcQuadratic(*this);
+    return script;
+}
+
+inline JSScript *
+ContextStack::currentScriptWithDiagnostics(jsbytecode **ppc) const
+{
+    if (ppc)
+        *ppc = __null;
+
+    FrameRegs *regs = maybeRegs();
+    StackFrame *fp = regs ? regs->fp() : __null;
+    while (fp && fp->isDummyFrame())
+        fp = fp->prev();
+    if (!fp)
+        *(int *) 0x10 = 0;
+
+
+    mjit::CallSite *inlined = regs->inlined();
+    if (inlined) {
+        mjit::JITChunk *chunk = fp->jit()->chunk(regs->pc);
+        do { } while(0);
+        mjit::InlineFrame *frame = &chunk->inlineFrames()[inlined->inlineIndex];
+        JSScript *script = frame->fun->script();
+        if (script->compartment() != cx_->compartment)
+            *(int *) 0x20 = 0;
+        if (ppc)
+            *ppc = script->code + inlined->pcOffset;
+        return script;
+    }
+
+
+    JSScript *script = fp->script();
+    if (script->compartment() != cx_->compartment)
+        *(int *) 0x30 = 0;
+
+    if (ppc)
+        *ppc = fp->pcQuadratic(*this);
+    if (!script)
+        *(int *) 0x40 = 0;
+    return script;
+}
+
+inline HandleObject
+ContextStack::currentScriptedScopeChain() const
+{
+    return fp()->scopeChain();
+}
+
+}
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinferinlines.h" 2
+
+
+#define jsinferinlines_h___ 
+
+
+
+
+
+namespace js {
+namespace types {
+
+             inline Type
+Type::ObjectType(JSObject *obj)
+{
+    if (obj->hasSingletonType())
+        return Type(uintptr_t(obj) | 1);
+    return Type(uintptr_t(obj->type()));
+}
+
+             inline Type
+Type::ObjectType(TypeObject *obj)
+{
+    if (obj->singleton)
+        return Type(uintptr_t(obj->singleton.get()) | 1);
+    return Type(uintptr_t(obj));
+}
+
+             inline Type
+Type::ObjectType(TypeObjectKey *obj)
+{
+    return Type(uintptr_t(obj));
+}
+
+inline Type
+GetValueType(JSContext *cx, const Value &val)
+{
+    do { } while(0);
+    if (val.isDouble())
+        return Type::DoubleType();
+    if (val.isObject())
+        return Type::ObjectType(&val.toObject());
+    return Type::PrimitiveType(val.extractNonDoubleType());
+}
+
+inline TypeFlags
+PrimitiveTypeFlag(JSValueType type)
+{
+    switch (type) {
+      case JSVAL_TYPE_UNDEFINED:
+        return TYPE_FLAG_UNDEFINED;
+      case JSVAL_TYPE_NULL:
+        return TYPE_FLAG_NULL;
+      case JSVAL_TYPE_BOOLEAN:
+        return TYPE_FLAG_BOOLEAN;
+      case JSVAL_TYPE_INT32:
+        return TYPE_FLAG_INT32;
+      case JSVAL_TYPE_DOUBLE:
+        return TYPE_FLAG_DOUBLE;
+      case JSVAL_TYPE_STRING:
+        return TYPE_FLAG_STRING;
+      case JSVAL_TYPE_MAGIC:
+        return TYPE_FLAG_LAZYARGS;
+      default:
+        __builtin_unreachable();
+        return 0;
+    }
+}
+
+inline JSValueType
+TypeFlagPrimitive(TypeFlags flags)
+{
+    switch (flags) {
+      case TYPE_FLAG_UNDEFINED:
+        return JSVAL_TYPE_UNDEFINED;
+      case TYPE_FLAG_NULL:
+        return JSVAL_TYPE_NULL;
+      case TYPE_FLAG_BOOLEAN:
+        return JSVAL_TYPE_BOOLEAN;
+      case TYPE_FLAG_INT32:
+        return JSVAL_TYPE_INT32;
+      case TYPE_FLAG_DOUBLE:
+        return JSVAL_TYPE_DOUBLE;
+      case TYPE_FLAG_STRING:
+        return JSVAL_TYPE_STRING;
+      case TYPE_FLAG_LAZYARGS:
+        return JSVAL_TYPE_MAGIC;
+      default:
+        __builtin_unreachable();
+        return (JSValueType) 0;
+    }
+}
+
+
+
+
+
+
+inline jsid
+MakeTypeId(JSContext *cx, jsid id)
+{
+    do { } while(0);
+
+
+
+
+
+    if (JSID_IS_INT(id))
+        return ((jsid)0x2);
+
+
+
+
+
+    if (JSID_IS_STRING(id)) {
+        JSFlatString *str = JSID_TO_FLAT_STRING(id);
+        const jschar *cp = str->getCharsZ(cx);
+        if (((((unsigned)(*cp)) - '0') <= 9) || *cp == '-') {
+            cp++;
+            while (((((unsigned)(*cp)) - '0') <= 9))
+                cp++;
+            if (*cp == 0)
+                return ((jsid)0x2);
+        }
+        return id;
+    }
+
+    return ((jsid)0x2);
+}
+
+const char * TypeIdStringImpl(jsid id);
+
+
+static inline const char *
+TypeIdString(jsid id)
+{
+
+
+
+    return "(missing)";
+
+}
+# 171 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinferinlines.h"
+struct AutoEnterTypeInference
+{
+    FreeOp *freeOp;
+    JSCompartment *compartment;
+    bool oldActiveAnalysis;
+    bool oldActiveInference;
+
+    AutoEnterTypeInference(JSContext *cx, bool compiling = false)
+    {
+        do { } while (0);
+        init(cx->runtime->defaultFreeOp(), cx->compartment);
+    }
+
+    AutoEnterTypeInference(FreeOp *fop, JSCompartment *comp)
+    {
+        init(fop, comp);
+    }
+
+    ~AutoEnterTypeInference()
+    {
+        compartment->activeAnalysis = oldActiveAnalysis;
+        compartment->activeInference = oldActiveInference;
+
+
+
+
+
+
+
+        if (!compartment->activeInference) {
+            TypeCompartment *types = &compartment->types;
+            if (types->pendingNukeTypes)
+                types->nukeTypes(freeOp);
+            else if (types->pendingRecompiles)
+                types->processPendingRecompiles(freeOp);
+        }
+    }
+
+  private:
+    void init(FreeOp *fop, JSCompartment *comp) {
+        freeOp = fop;
+        compartment = comp;
+        oldActiveAnalysis = compartment->activeAnalysis;
+        oldActiveInference = compartment->activeInference;
+        compartment->activeAnalysis = true;
+        compartment->activeInference = true;
+    }
+};
+
+
+
+
+
+struct AutoEnterCompilation
+{
+    RecompileInfo &info;
+
+    AutoEnterCompilation(JSContext *cx, JSScript *script, bool constructing, unsigned chunkIndex)
+        : info(cx->compartment->types.compiledInfo)
+    {
+        do { } while(0);
+        info.script = script;
+        info.constructing = constructing;
+        info.barriers = cx->compartment->needsBarrier();
+        info.chunkIndex = chunkIndex;
+    }
+
+    ~AutoEnterCompilation()
+    {
+        do { } while(0);
+        info.script = __null;
+        info.constructing = false;
+        info.barriers = false;
+        info.chunkIndex = 0;
+    }
+};
+# 263 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinferinlines.h"
+inline TypeObject *
+GetTypeNewObject(JSContext *cx, JSProtoKey key)
+{
+    JSObject *proto;
+    if (!js_GetClassPrototype(cx, __null, key, &proto, __null))
+        return __null;
+    return proto->getNewType(cx);
+}
+
+
+inline TypeObject *
+GetTypeCallerInitObject(JSContext *cx, JSProtoKey key)
+{
+    if (cx->typeInferenceEnabled()) {
+        jsbytecode *pc;
+        JSScript *script = cx->stack.currentScript(&pc);
+        if (script)
+            return TypeScript::InitObject(cx, script, pc, key);
+    }
+    return GetTypeNewObject(cx, key);
+}
+
+
+
+
+
+inline void
+MarkIteratorUnknown(JSContext *cx)
+{
+    extern void MarkIteratorUnknownSlow(JSContext *cx);
+
+    if (cx->typeInferenceEnabled())
+        MarkIteratorUnknownSlow(cx);
+}
+
+
+
+
+
+inline bool
+TypeMonitorCall(JSContext *cx, const js::CallArgs &args, bool constructing)
+{
+    extern void TypeMonitorCallSlow(JSContext *cx, JSObject *callee,
+                                    const CallArgs &args, bool constructing);
+
+    JSObject *callee = &args.callee();
+    if (callee->isFunction()) {
+        JSFunction *fun = callee->toFunction();
+        if (fun->isInterpreted()) {
+            JSScript *script = fun->script();
+            if (!script->ensureRanAnalysis(cx, fun->environment()))
+                return false;
+            if (cx->typeInferenceEnabled())
+                TypeMonitorCallSlow(cx, callee, args, constructing);
+        }
+    }
+
+    return true;
+}
+
+inline bool
+TrackPropertyTypes(JSContext *cx, JSObject *obj, jsid id)
+{
+    if (!cx->typeInferenceEnabled() || obj->hasLazyType() || obj->type()->unknownProperties())
+        return false;
+
+    if (obj->hasSingletonType() && !obj->type()->maybeGetProperty(cx, id))
+        return false;
+
+    return true;
+}
+
+
+inline void
+AddTypePropertyId(JSContext *cx, JSObject *obj, jsid id, Type type)
+{
+    if (cx->typeInferenceEnabled())
+        id = MakeTypeId(cx, id);
+    if (TrackPropertyTypes(cx, obj, id))
+        obj->type()->addPropertyType(cx, id, type);
+}
+
+inline void
+AddTypePropertyId(JSContext *cx, JSObject *obj, jsid id, const Value &value)
+{
+    if (cx->typeInferenceEnabled())
+        id = MakeTypeId(cx, id);
+    if (TrackPropertyTypes(cx, obj, id))
+        obj->type()->addPropertyType(cx, id, value);
+}
+
+inline void
+AddTypeProperty(JSContext *cx, TypeObject *obj, const char *name, Type type)
+{
+    if (cx->typeInferenceEnabled() && !obj->unknownProperties())
+        obj->addPropertyType(cx, name, type);
+}
+
+inline void
+AddTypeProperty(JSContext *cx, TypeObject *obj, const char *name, const Value &value)
+{
+    if (cx->typeInferenceEnabled() && !obj->unknownProperties())
+        obj->addPropertyType(cx, name, value);
+}
+
+
+inline void
+MarkTypeObjectFlags(JSContext *cx, JSObject *obj, TypeObjectFlags flags)
+{
+    if (cx->typeInferenceEnabled() && !obj->hasLazyType() && !obj->type()->hasAllFlags(flags))
+        obj->type()->setFlags(cx, flags);
+}
+
+
+
+
+
+
+
+inline void
+MarkTypeObjectUnknownProperties(JSContext *cx, TypeObject *obj,
+                                bool markSetsUnknown = false)
+{
+    if (cx->typeInferenceEnabled()) {
+        if (!obj->unknownProperties())
+            obj->markUnknown(cx);
+        if (markSetsUnknown && !(obj->flags & OBJECT_FLAG_SETS_MARKED_UNKNOWN))
+            cx->compartment->types.markSetsUnknown(cx, obj);
+    }
+}
+
+
+
+
+
+inline void
+MarkTypePropertyConfigured(JSContext *cx, JSObject *obj, jsid id)
+{
+    if (cx->typeInferenceEnabled())
+        id = MakeTypeId(cx, id);
+    if (TrackPropertyTypes(cx, obj, id))
+        obj->type()->markPropertyConfigured(cx, id);
+}
+
+
+inline void
+MarkObjectStateChange(JSContext *cx, JSObject *obj)
+{
+    if (cx->typeInferenceEnabled() && !obj->hasLazyType() && !obj->type()->unknownProperties())
+        obj->type()->markStateChange(cx);
+}
+
+
+
+
+
+
+inline void
+FixArrayType(JSContext *cx, JSObject *obj)
+{
+    if (cx->typeInferenceEnabled())
+        cx->compartment->types.fixArrayType(cx, obj);
+}
+
+inline void
+FixObjectType(JSContext *cx, JSObject *obj)
+{
+    if (cx->typeInferenceEnabled())
+        cx->compartment->types.fixObjectType(cx, obj);
+}
+
+
+extern void TypeMonitorResult(JSContext *cx, JSScript *script, jsbytecode *pc, const js::Value &rval);
+extern void TypeDynamicResult(JSContext *cx, JSScript *script, jsbytecode *pc, js::types::Type type);
+
+inline bool
+UseNewTypeAtEntry(JSContext *cx, StackFrame *fp)
+{
+    return fp->isConstructing() && cx->typeInferenceEnabled() &&
+           fp->prev() && fp->prev()->isScriptFrame() &&
+           UseNewType(cx, fp->prev()->script(), fp->prev()->pcQuadratic(cx->stack, fp));
+}
+
+
+
+
+
+inline
+TypeScript::TypeScript()
+{
+    this->global = (js::GlobalObject *) GLOBAL_MISSING_SCOPE;
+}
+
+             inline unsigned
+TypeScript::NumTypeSets(JSScript *script)
+{
+    return script->nTypeSets + analyze::TotalSlots(script);
+}
+
+             inline TypeSet *
+TypeScript::ReturnTypes(JSScript *script)
+{
+    return script->types->typeArray() + script->nTypeSets + js::analyze::CalleeSlot();
+}
+
+             inline TypeSet *
+TypeScript::ThisTypes(JSScript *script)
+{
+    return script->types->typeArray() + script->nTypeSets + js::analyze::ThisSlot();
+}
+
+
+
+
+
+
+
+             inline TypeSet *
+TypeScript::ArgTypes(JSScript *script, unsigned i)
+{
+    do { } while(0);
+    return script->types->typeArray() + script->nTypeSets + js::analyze::ArgSlot(i);
+}
+
+             inline TypeSet *
+TypeScript::LocalTypes(JSScript *script, unsigned i)
+{
+    do { } while(0);
+    return script->types->typeArray() + script->nTypeSets + js::analyze::LocalSlot(script, i);
+}
+
+             inline TypeSet *
+TypeScript::SlotTypes(JSScript *script, unsigned slot)
+{
+    do { } while(0);
+    return script->types->typeArray() + script->nTypeSets + slot;
+}
+
+             inline TypeObject *
+TypeScript::StandardType(JSContext *cx, JSScript *script, JSProtoKey key)
+{
+    JSObject *proto;
+    if (!js_GetClassPrototype(cx, script->global(), key, &proto, __null))
+        return __null;
+    return proto->getNewType(cx);
+}
+
+struct AllocationSiteKey {
+    JSScript *script;
+
+    uint32_t offset : 24;
+    JSProtoKey kind : 8;
+
+    static const uint32_t OFFSET_LIMIT = (1 << 23);
+
+    AllocationSiteKey() { PodZero(this); }
+
+    typedef AllocationSiteKey Lookup;
+
+    static inline uint32_t hash(AllocationSiteKey key) {
+        return uint32_t(size_t(key.script->code + key.offset)) ^ key.kind;
+    }
+
+    static inline bool match(const AllocationSiteKey &a, const AllocationSiteKey &b) {
+        return a.script == b.script && a.offset == b.offset && a.kind == b.kind;
+    }
+};
+
+             inline TypeObject *
+TypeScript::InitObject(JSContext *cx, JSScript *script, jsbytecode *pc, JSProtoKey kind)
+{
+    do { } while(0);
+
+
+    uint32_t offset = pc - script->code;
+
+    if (!cx->typeInferenceEnabled() || !script->hasGlobal() || offset >= AllocationSiteKey::OFFSET_LIMIT)
+        return GetTypeNewObject(cx, kind);
+
+    AllocationSiteKey key;
+    key.script = script;
+    key.offset = offset;
+    key.kind = kind;
+
+    if (!cx->compartment->types.allocationSiteTable)
+        return cx->compartment->types.newAllocationSiteTypeObject(cx, key);
+
+    AllocationSiteTable::Ptr p = cx->compartment->types.allocationSiteTable->lookup(key);
+
+    if (p)
+        return p->value;
+    return cx->compartment->types.newAllocationSiteTypeObject(cx, key);
+}
+
+
+static inline bool
+SetInitializerObjectType(JSContext *cx, JSScript *script, jsbytecode *pc, JSObject *obj)
+{
+    if (!cx->typeInferenceEnabled())
+        return true;
+
+    if (UseNewTypeForInitializer(cx, script, pc)) {
+        if (!obj->setSingletonType(cx))
+            return false;
+
+
+
+
+
+
+        TypeScript::Monitor(cx, script, pc, ObjectValue(*obj));
+    } else {
+        JSProtoKey key = obj->isDenseArray() ? JSProto_Array : JSProto_Object;
+        types::TypeObject *type = TypeScript::InitObject(cx, script, pc, key);
+        if (!type)
+            return false;
+        obj->setType(type);
+    }
+
+    return true;
+}
+
+             inline void
+TypeScript::Monitor(JSContext *cx, JSScript *script, jsbytecode *pc, const js::Value &rval)
+{
+    if (cx->typeInferenceEnabled())
+        TypeMonitorResult(cx, script, pc, rval);
+}
+
+             inline void
+TypeScript::MonitorOverflow(JSContext *cx, JSScript *script, jsbytecode *pc)
+{
+    if (cx->typeInferenceEnabled())
+        TypeDynamicResult(cx, script, pc, Type::DoubleType());
+}
+
+             inline void
+TypeScript::MonitorString(JSContext *cx, JSScript *script, jsbytecode *pc)
+{
+    if (cx->typeInferenceEnabled())
+        TypeDynamicResult(cx, script, pc, Type::StringType());
+}
+
+             inline void
+TypeScript::MonitorUnknown(JSContext *cx, JSScript *script, jsbytecode *pc)
+{
+    if (cx->typeInferenceEnabled())
+        TypeDynamicResult(cx, script, pc, Type::UnknownType());
+}
+
+             inline void
+TypeScript::GetPcScript(JSContext *cx, JSScript **script, jsbytecode **pc)
+{
+    *script = cx->fp()->script();
+    *pc = cx->regs().pc;
+}
+
+             inline void
+TypeScript::MonitorOverflow(JSContext *cx)
+{
+    JSScript *script;
+    jsbytecode *pc;
+    GetPcScript(cx, &script, &pc);
+    MonitorOverflow(cx, script, pc);
+}
+
+             inline void
+TypeScript::MonitorString(JSContext *cx)
+{
+    JSScript *script;
+    jsbytecode *pc;
+    GetPcScript(cx, &script, &pc);
+    MonitorString(cx, script, pc);
+}
+
+             inline void
+TypeScript::MonitorUnknown(JSContext *cx)
+{
+    JSScript *script;
+    jsbytecode *pc;
+    GetPcScript(cx, &script, &pc);
+    MonitorUnknown(cx, script, pc);
+}
+
+             inline void
+TypeScript::Monitor(JSContext *cx, const js::Value &rval)
+{
+    JSScript *script;
+    jsbytecode *pc;
+    GetPcScript(cx, &script, &pc);
+    Monitor(cx, script, pc, rval);
+}
+
+             inline void
+TypeScript::MonitorAssign(JSContext *cx, JSObject *obj, jsid id)
+{
+    if (cx->typeInferenceEnabled() && !obj->hasSingletonType()) {
+# 668 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinferinlines.h"
+        uint32_t i;
+        if (js_IdIsIndex(id, &i))
+            return;
+        MarkTypeObjectUnknownProperties(cx, obj->type());
+    }
+}
+
+             inline void
+TypeScript::SetThis(JSContext *cx, JSScript *script, Type type)
+{
+    if (!cx->typeInferenceEnabled())
+        return;
+    do { } while(0);
+
+
+    bool analyze = cx->hasRunOption(((uint32_t)1 << (16)));
+
+    if (!ThisTypes(script)->hasType(type) || analyze) {
+        AutoEnterTypeInference enter(cx);
+
+        InferSpew(ISpewOps, "externalType: setThis #%u: %s",
+                  script->id(), TypeString(type));
+        ThisTypes(script)->addType(cx, type);
+
+        if (analyze && script->types->hasScope())
+            script->ensureRanInference(cx);
+    }
+}
+
+             inline void
+TypeScript::SetThis(JSContext *cx, JSScript *script, const js::Value &value)
+{
+    if (cx->typeInferenceEnabled())
+        SetThis(cx, script, GetValueType(cx, value));
+}
+
+             inline void
+TypeScript::SetLocal(JSContext *cx, JSScript *script, unsigned local, Type type)
+{
+    if (!cx->typeInferenceEnabled())
+        return;
+    do { } while(0);
+
+    if (!LocalTypes(script, local)->hasType(type)) {
+        AutoEnterTypeInference enter(cx);
+
+        InferSpew(ISpewOps, "externalType: setLocal #%u %u: %s",
+                  script->id(), local, TypeString(type));
+        LocalTypes(script, local)->addType(cx, type);
+    }
+}
+
+             inline void
+TypeScript::SetLocal(JSContext *cx, JSScript *script, unsigned local, const js::Value &value)
+{
+    if (cx->typeInferenceEnabled()) {
+        Type type = GetValueType(cx, value);
+        SetLocal(cx, script, local, type);
+    }
+}
+
+             inline void
+TypeScript::SetArgument(JSContext *cx, JSScript *script, unsigned arg, Type type)
+{
+    if (!cx->typeInferenceEnabled())
+        return;
+    do { } while(0);
+
+    if (!ArgTypes(script, arg)->hasType(type)) {
+        AutoEnterTypeInference enter(cx);
+
+        InferSpew(ISpewOps, "externalType: setArg #%u %u: %s",
+                  script->id(), arg, TypeString(type));
+        ArgTypes(script, arg)->addType(cx, type);
+    }
+}
+
+             inline void
+TypeScript::SetArgument(JSContext *cx, JSScript *script, unsigned arg, const js::Value &value)
+{
+    if (cx->typeInferenceEnabled()) {
+        Type type = GetValueType(cx, value);
+        SetArgument(cx, script, arg, type);
+    }
+}
+
+void
+TypeScript::trace(JSTracer *trc)
+{
+    if (hasScope() && global)
+        gc::MarkObject(trc, &global, "script_global");
+
+
+}
+
+
+
+
+
+inline JSCompartment *
+TypeCompartment::compartment()
+{
+    return (JSCompartment *)((char *)this - __builtin_offsetof (JSCompartment, types));
+}
+
+inline void
+TypeCompartment::addPending(JSContext *cx, TypeConstraint *constraint, TypeSet *source, Type type)
+{
+    do { } while(0);
+    do { } while(0);
+
+    InferSpew(ISpewOps, "pending: %sC%p%s %s",
+              InferSpewColor(constraint), constraint, InferSpewColorReset(),
+              TypeString(type));
+
+    if ((pendingCount == pendingCapacity) && !growPendingArray(cx))
+        return;
+
+    PendingWork &pending = pendingArray[pendingCount++];
+    pending.constraint = constraint;
+    pending.source = source;
+    pending.type = type;
+}
+
+inline void
+TypeCompartment::resolvePending(JSContext *cx)
+{
+    do { } while(0);
+
+    if (resolving) {
+
+        return;
+    }
+
+    resolving = true;
+
+
+    while (pendingCount) {
+        const PendingWork &pending = pendingArray[--pendingCount];
+        InferSpew(ISpewOps, "resolve: %sC%p%s %s",
+                  InferSpewColor(pending.constraint), pending.constraint,
+                  InferSpewColorReset(), TypeString(pending.type));
+        pending.constraint->newType(cx, pending.source, pending.type);
+    }
+
+    resolving = false;
+}
+# 828 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinferinlines.h"
+const unsigned SET_ARRAY_SIZE = 8;
+
+
+static inline unsigned
+HashSetCapacity(unsigned count)
+{
+    do { } while(0);
+
+    if (count <= SET_ARRAY_SIZE)
+        return SET_ARRAY_SIZE;
+
+    unsigned log2;
+    do { (log2) = 31 - __builtin_clz(((unsigned int)(count)) | 1); } while (0);
+    return 1 << (log2 + 2);
+}
+
+
+template <class T, class KEY>
+static inline uint32_t
+HashKey(T v)
+{
+    uint32_t nv = KEY::keyBits(v);
+
+    uint32_t hash = 84696351 ^ (nv & 0xff);
+    hash = (hash * 16777619) ^ ((nv >> 8) & 0xff);
+    hash = (hash * 16777619) ^ ((nv >> 16) & 0xff);
+    return (hash * 16777619) ^ ((nv >> 24) & 0xff);
+}
+
+
+
+
+
+template <class T, class U, class KEY>
+static U **
+HashSetInsertTry(JSCompartment *compartment, U **&values, unsigned &count, T key)
+{
+    unsigned capacity = HashSetCapacity(count);
+    unsigned insertpos = HashKey<T,KEY>(key) & (capacity - 1);
+
+
+    bool converting = (count == SET_ARRAY_SIZE);
+
+    if (!converting) {
+        while (values[insertpos] != __null) {
+            if (KEY::getKey(values[insertpos]) == key)
+                return &values[insertpos];
+            insertpos = (insertpos + 1) & (capacity - 1);
+        }
+    }
+
+    count++;
+    unsigned newCapacity = HashSetCapacity(count);
+
+    if (newCapacity == capacity) {
+        do { } while(0);
+        return &values[insertpos];
+    }
+
+    U **newValues = compartment->typeLifoAlloc.newArray<U*>(newCapacity);
+    if (!newValues)
+        return __null;
+    PodZero(newValues, newCapacity);
+
+    for (unsigned i = 0; i < capacity; i++) {
+        if (values[i]) {
+            unsigned pos = HashKey<T,KEY>(KEY::getKey(values[i])) & (newCapacity - 1);
+            while (newValues[pos] != __null)
+                pos = (pos + 1) & (newCapacity - 1);
+            newValues[pos] = values[i];
+        }
+    }
+
+    values = newValues;
+
+    insertpos = HashKey<T,KEY>(key) & (newCapacity - 1);
+    while (values[insertpos] != __null)
+        insertpos = (insertpos + 1) & (newCapacity - 1);
+    return &values[insertpos];
+}
+
+
+
+
+
+template <class T, class U, class KEY>
+static inline U **
+HashSetInsert(JSCompartment *compartment, U **&values, unsigned &count, T key)
+{
+    if (count == 0) {
+        do { } while(0);
+        count++;
+        return (U **) &values;
+    }
+
+    if (count == 1) {
+        U *oldData = (U*) values;
+        if (KEY::getKey(oldData) == key)
+            return (U **) &values;
+
+        values = compartment->typeLifoAlloc.newArray<U*>(SET_ARRAY_SIZE);
+        if (!values) {
+            values = (U **) oldData;
+            return __null;
+        }
+        PodZero(values, SET_ARRAY_SIZE);
+        count++;
+
+        values[0] = oldData;
+        return &values[1];
+    }
+
+    if (count <= SET_ARRAY_SIZE) {
+        for (unsigned i = 0; i < count; i++) {
+            if (KEY::getKey(values[i]) == key)
+                return &values[i];
+        }
+
+        if (count < SET_ARRAY_SIZE) {
+            count++;
+            return &values[count - 1];
+        }
+    }
+
+    return HashSetInsertTry<T,U,KEY>(compartment, values, count, key);
+}
+
+
+template <class T, class U, class KEY>
+static inline U *
+HashSetLookup(U **values, unsigned count, T key)
+{
+    if (count == 0)
+        return __null;
+
+    if (count == 1)
+        return (KEY::getKey((U *) values) == key) ? (U *) values : __null;
+
+    if (count <= SET_ARRAY_SIZE) {
+        for (unsigned i = 0; i < count; i++) {
+            if (KEY::getKey(values[i]) == key)
+                return values[i];
+        }
+        return __null;
+    }
+
+    unsigned capacity = HashSetCapacity(count);
+    unsigned pos = HashKey<T,KEY>(key) & (capacity - 1);
+
+    while (values[pos] != __null) {
+        if (KEY::getKey(values[pos]) == key)
+            return values[pos];
+        pos = (pos + 1) & (capacity - 1);
+    }
+
+    return __null;
+}
+
+inline TypeObjectKey *
+Type::objectKey() const
+{
+    do { } while(0);
+    if (isTypeObject())
+        TypeObject::readBarrier((TypeObject *) data);
+    else
+        JSObject::readBarrier((JSObject *) (data ^ 1));
+    return (TypeObjectKey *) data;
+}
+
+inline JSObject *
+Type::singleObject() const
+{
+    do { } while(0);
+    JSObject::readBarrier((JSObject *) (data ^ 1));
+    return (JSObject *) (data ^ 1);
+}
+
+inline TypeObject *
+Type::typeObject() const
+{
+    do { } while(0);
+    TypeObject::readBarrier((TypeObject *) data);
+    return (TypeObject *) data;
+}
+
+inline bool
+TypeSet::hasType(Type type)
+{
+    if (unknown())
+        return true;
+
+    if (type.isUnknown()) {
+        return false;
+    } else if (type.isPrimitive()) {
+        return !!(flags & PrimitiveTypeFlag(type.primitive()));
+    } else if (type.isAnyObject()) {
+        return !!(flags & TYPE_FLAG_ANYOBJECT);
+    } else {
+        return !!(flags & TYPE_FLAG_ANYOBJECT) ||
+            HashSetLookup<TypeObjectKey*,TypeObjectKey,TypeObjectKey>
+            (objectSet, baseObjectCount(), type.objectKey()) != __null;
+    }
+}
+
+inline void
+TypeSet::setBaseObjectCount(uint32_t count)
+{
+    do { } while(0);
+    flags = (flags & ~TYPE_FLAG_OBJECT_COUNT_MASK)
+          | (count << TYPE_FLAG_OBJECT_COUNT_SHIFT);
+}
+
+inline void
+TypeSet::clearObjects()
+{
+    setBaseObjectCount(0);
+    objectSet = __null;
+}
+
+inline void
+TypeSet::addType(JSContext *cx, Type type)
+{
+    do { } while(0);
+
+    if (unknown())
+        return;
+
+    if (type.isUnknown()) {
+        flags |= TYPE_FLAG_BASE_MASK;
+        clearObjects();
+        do { } while(0);
+    } else if (type.isPrimitive()) {
+        TypeFlags flag = PrimitiveTypeFlag(type.primitive());
+        if (flags & flag)
+            return;
+
+
+        if (flag == TYPE_FLAG_DOUBLE)
+            flag |= TYPE_FLAG_INT32;
+
+        flags |= flag;
+    } else {
+        if (flags & TYPE_FLAG_ANYOBJECT)
+            return;
+        if (type.isAnyObject())
+            goto unknownObject;
+        uint32_t objectCount = baseObjectCount();
+        TypeObjectKey *object = type.objectKey();
+        TypeObjectKey **pentry = HashSetInsert<TypeObjectKey *,TypeObjectKey,TypeObjectKey>
+                                     (cx->compartment, objectSet, objectCount, object);
+        if (!pentry) {
+            cx->compartment->types.setPendingNukeTypes(cx);
+            return;
+        }
+        if (*pentry)
+            return;
+        *pentry = object;
+
+        setBaseObjectCount(objectCount);
+
+        if (objectCount == TYPE_FLAG_OBJECT_COUNT_LIMIT)
+            goto unknownObject;
+
+        if (type.isTypeObject()) {
+            TypeObject *nobject = type.typeObject();
+            do { } while(0);
+            if (nobject->unknownProperties())
+                goto unknownObject;
+            if (objectCount > 1) {
+                nobject->contribution += (objectCount - 1) * (objectCount - 1);
+                if (nobject->contribution >= TypeObject::CONTRIBUTION_LIMIT) {
+                    InferSpew(ISpewOps, "limitUnknown: %sT%p%s",
+                              InferSpewColor(this), this, InferSpewColorReset());
+                    goto unknownObject;
+                }
+            }
+        }
+    }
+
+    if (false) {
+    unknownObject:
+        type = Type::AnyObjectType();
+        flags |= TYPE_FLAG_ANYOBJECT;
+        clearObjects();
+    }
+
+    InferSpew(ISpewOps, "addType: %sT%p%s %s",
+              InferSpewColor(this), this, InferSpewColorReset(),
+              TypeString(type));
+
+
+    TypeConstraint *constraint = constraintList;
+    while (constraint) {
+        cx->compartment->types.addPending(cx, constraint, this, type);
+        constraint = constraint->next;
+    }
+
+    cx->compartment->types.resolvePending(cx);
+}
+
+inline void
+TypeSet::setOwnProperty(JSContext *cx, bool configured)
+{
+    TypeFlags nflags = TYPE_FLAG_OWN_PROPERTY | (configured ? TYPE_FLAG_CONFIGURED_PROPERTY : 0);
+
+    if ((flags & nflags) == nflags)
+        return;
+
+    flags |= nflags;
+
+
+    TypeConstraint *constraint = constraintList;
+    while (constraint) {
+        constraint->newPropertyState(cx, this);
+        constraint = constraint->next;
+    }
+}
+
+inline unsigned
+TypeSet::getObjectCount()
+{
+    do { } while(0);
+    uint32_t count = baseObjectCount();
+    if (count > SET_ARRAY_SIZE)
+        return HashSetCapacity(count);
+    return count;
+}
+
+inline TypeObjectKey *
+TypeSet::getObject(unsigned i)
+{
+    do { } while(0);
+    if (baseObjectCount() == 1) {
+        do { } while(0);
+        return (TypeObjectKey *) objectSet;
+    }
+    return objectSet[i];
+}
+
+inline JSObject *
+TypeSet::getSingleObject(unsigned i)
+{
+    TypeObjectKey *key = getObject(i);
+    return (uintptr_t(key) & 1) ? (JSObject *)(uintptr_t(key) ^ 1) : __null;
+}
+
+inline TypeObject *
+TypeSet::getTypeObject(unsigned i)
+{
+    TypeObjectKey *key = getObject(i);
+    return (key && !(uintptr_t(key) & 1)) ? (TypeObject *) key : __null;
+}
+
+
+
+
+
+inline
+TypeCallsite::TypeCallsite(JSContext *cx, JSScript *script, jsbytecode *pc,
+                           bool isNew, unsigned argumentCount)
+    : script(script), pc(pc), isNew(isNew), argumentCount(argumentCount),
+      thisTypes(__null), returnTypes(__null)
+{
+
+    argumentTypes = cx->typeLifoAlloc().newArray<TypeSet*>(argumentCount);
+}
+
+
+
+
+
+inline TypeObject::TypeObject(JSObject *proto, bool function, bool unknown)
+{
+    PodZero(this);
+
+
+    do { } while (0);
+
+    this->proto = proto;
+
+    if (function)
+        flags |= OBJECT_FLAG_FUNCTION;
+    if (unknown)
+        flags |= OBJECT_FLAG_UNKNOWN_MASK;
+
+    InferSpew(ISpewOps, "newObject: %s", TypeObjectString(this));
+}
+
+inline uint32_t
+TypeObject::basePropertyCount() const
+{
+    return (flags & OBJECT_FLAG_PROPERTY_COUNT_MASK) >> OBJECT_FLAG_PROPERTY_COUNT_SHIFT;
+}
+
+inline void
+TypeObject::setBasePropertyCount(uint32_t count)
+{
+    do { } while(0);
+    flags = (flags & ~OBJECT_FLAG_PROPERTY_COUNT_MASK)
+          | (count << OBJECT_FLAG_PROPERTY_COUNT_SHIFT);
+}
+
+inline TypeSet *
+TypeObject::getProperty(JSContext *cx, jsid id, bool assign)
+{
+    do { } while(0);
+    do { } while(0);
+    do { } while (0);
+    do { } while(0);
+
+    uint32_t propertyCount = basePropertyCount();
+    Property **pprop = HashSetInsert<jsid,Property,Property>
+                           (cx->compartment, propertySet, propertyCount, id);
+    if (!pprop) {
+        cx->compartment->types.setPendingNukeTypes(cx);
+        return __null;
+    }
+
+    if (!*pprop) {
+        setBasePropertyCount(propertyCount);
+        if (!addProperty(cx, id, pprop)) {
+            setBasePropertyCount(0);
+            propertySet = __null;
+            return __null;
+        }
+        if (propertyCount == OBJECT_FLAG_PROPERTY_COUNT_LIMIT) {
+            markUnknown(cx);
+            TypeSet *types = TypeSet::make(cx, "propertyOverflow");
+            types->addType(cx, Type::UnknownType());
+            return types;
+        }
+    }
+
+    TypeSet *types = &(*pprop)->types;
+
+    if (assign)
+        types->setOwnProperty(cx, false);
+
+    return types;
+}
+
+inline TypeSet *
+TypeObject::maybeGetProperty(JSContext *cx, jsid id)
+{
+    do { } while(0);
+    do { } while (0);
+    do { } while(0);
+
+    Property *prop = HashSetLookup<jsid,Property,Property>
+        (propertySet, basePropertyCount(), id);
+
+    return prop ? &prop->types : __null;
+}
+
+inline unsigned
+TypeObject::getPropertyCount()
+{
+    uint32_t count = basePropertyCount();
+    if (count > SET_ARRAY_SIZE)
+        return HashSetCapacity(count);
+    return count;
+}
+
+inline Property *
+TypeObject::getProperty(unsigned i)
+{
+    do { } while(0);
+    if (basePropertyCount() == 1) {
+        do { } while(0);
+        return (Property *) propertySet;
+    }
+    return propertySet[i];
+}
+
+inline void
+TypeObject::setFlagsFromKey(JSContext *cx, JSProtoKey key)
+{
+    TypeObjectFlags flags = 0;
+
+    switch (key) {
+      case JSProto_Function:
+        do { } while(0);
+
+
+      case JSProto_Object:
+        flags = OBJECT_FLAG_NON_DENSE_ARRAY
+              | OBJECT_FLAG_NON_PACKED_ARRAY
+              | OBJECT_FLAG_NON_TYPED_ARRAY;
+        break;
+
+      case JSProto_Array:
+        flags = OBJECT_FLAG_NON_TYPED_ARRAY;
+        break;
+
+      default:
+
+        do { } while(0)
+# 1333 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsinferinlines.h"
+                                          ;
+        flags = OBJECT_FLAG_NON_DENSE_ARRAY
+              | OBJECT_FLAG_NON_PACKED_ARRAY;
+        break;
+    }
+
+    if (!hasAllFlags(flags))
+        setFlags(cx, flags);
+}
+
+inline JSObject *
+TypeObject::getGlobal()
+{
+    if (singleton)
+        return &singleton->global();
+    if (interpretedFunction && interpretedFunction->script()->compileAndGo)
+        return &interpretedFunction->global();
+    return __null;
+}
+
+inline void
+TypeObject::writeBarrierPre(TypeObject *type)
+{
+
+    if (!type)
+        return;
+
+    JSCompartment *comp = type->compartment();
+    if (comp->needsBarrier()) {
+        TypeObject *tmp = type;
+        MarkTypeObjectUnbarriered(comp->barrierTracer(), &tmp, "write barrier");
+        do { } while(0);
+    }
+
+}
+
+inline void
+TypeObject::writeBarrierPost(TypeObject *type, void *addr)
+{
+}
+
+inline void
+TypeObject::readBarrier(TypeObject *type)
+{
+
+    JSCompartment *comp = type->compartment();
+    if (comp->needsBarrier()) {
+        TypeObject *tmp = type;
+        MarkTypeObjectUnbarriered(comp->barrierTracer(), &tmp, "read barrier");
+        do { } while(0);
+    }
+
+}
+
+inline void
+TypeNewScript::writeBarrierPre(TypeNewScript *newScript)
+{
+
+    if (!newScript)
+        return;
+
+    JSCompartment *comp = newScript->fun->compartment();
+    if (comp->needsBarrier()) {
+        MarkObject(comp->barrierTracer(), &newScript->fun, "write barrier");
+        MarkShape(comp->barrierTracer(), &newScript->shape, "write barrier");
+    }
+
+}
+
+inline void
+TypeNewScript::writeBarrierPost(TypeNewScript *newScript, void *addr)
+{
+}
+
+inline
+Property::Property(jsid id)
+  : id(id)
+{
+}
+
+inline
+Property::Property(const Property &o)
+  : id(o.id.get()), types(o.types)
+{
+}
+
+} }
+
+inline bool
+JSScript::ensureHasTypes(JSContext *cx)
+{
+    return types || makeTypes(cx);
+}
+
+inline bool
+JSScript::ensureRanAnalysis(JSContext *cx, JSObject *scope)
+{
+    JSScript *self = this;
+    JS::SkipRoot root(cx, &self);
+
+    if (!self->ensureHasTypes(cx))
+        return false;
+    if (!self->types->hasScope()) {
+        js::RootedObject scopeRoot(cx, scope);
+        if (!js::types::TypeScript::SetScope(cx, self, scope))
+            return false;
+        scope = scopeRoot;
+    }
+    if (!self->hasAnalysis() && !self->makeAnalysis(cx))
+        return false;
+    do { } while(0);
+    return true;
+}
+
+inline bool
+JSScript::ensureRanInference(JSContext *cx)
+{
+    if (!ensureRanAnalysis(cx, __null))
+        return false;
+    if (!analysis()->ranInference()) {
+        js::types::AutoEnterTypeInference enter(cx);
+        analysis()->analyzeTypes(cx);
+    }
+    return !analysis()->OOM() &&
+        !cx->compartment->types.pendingNukeTypes;
+}
+
+inline bool
+JSScript::hasAnalysis()
+{
+    return types && types->analysis;
+}
+
+inline js::analyze::ScriptAnalysis *
+JSScript::analysis()
+{
+    do { } while(0);
+    return types->analysis;
+}
+
+inline void
+JSScript::clearAnalysis()
+{
+    if (types)
+        types->analysis = __null;
+}
+
+inline void
+js::analyze::ScriptAnalysis::addPushedType(JSContext *cx, uint32_t offset, uint32_t which,
+                                           js::types::Type type)
+{
+    js::types::TypeSet *pushed = pushedTypes(offset, which);
+    pushed->addType(cx, type);
+}
+
+inline js::types::TypeObject *
+JSCompartment::getEmptyType(JSContext *cx)
+{
+    if (!emptyTypeObject)
+        emptyTypeObject = types.newTypeObject(cx, __null, JSProto_Object, __null, true);
+    return emptyTypeObject;
+}
+# 44 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsscriptinlines.h" 1
+# 46 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Barrier-inl.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Barrier-inl.h"
+#define jsgc_barrier_inl_h___ 
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl-inl.h" 1
+# 15 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Barrier-inl.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String-inl.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String-inl.h"
+#define String_inl_h__ 
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsprobes.h" 1
+# 13 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String-inl.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String.h" 1
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String-inl.h" 2
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsgcinlines.h" 1
+# 18 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String-inl.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 1
+# 19 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String-inl.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Barrier-inl.h" 1
+# 20 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String-inl.h" 2
+
+inline void
+JSString::writeBarrierPre(JSString *str)
+{
+
+    if (!str)
+        return;
+
+    JSCompartment *comp = str->compartment();
+    if (comp->needsBarrier()) {
+        JSString *tmp = str;
+        MarkStringUnbarriered(comp->barrierTracer(), &tmp, "write barrier");
+        do { } while(0);
+    }
+
+}
+
+inline void
+JSString::writeBarrierPost(JSString *str, void *addr)
+{
+}
+
+inline bool
+JSString::needWriteBarrierPre(JSCompartment *comp)
+{
+
+    return comp->needsBarrier();
+
+
+
+}
+
+inline void
+JSString::readBarrier(JSString *str)
+{
+
+    JSCompartment *comp = str->compartment();
+    if (comp->needsBarrier()) {
+        JSString *tmp = str;
+        MarkStringUnbarriered(comp->barrierTracer(), &tmp, "read barrier");
+        do { } while(0);
+    }
+
+}
+
+__attribute__((always_inline)) inline bool
+JSString::validateLength(JSContext *cx, size_t length)
+{
+    if ((__builtin_expect((length > JSString::MAX_LENGTH), 0))) {
+        js_ReportAllocationOverflow(cx);
+        return false;
+    }
+
+    return true;
+}
+
+__attribute__((always_inline)) inline void
+JSRope::init(JSString *left, JSString *right, size_t length)
+{
+    d.lengthAndFlags = buildLengthAndFlags(length, ROPE_BIT);
+    d.u1.left = left;
+    d.s.u2.right = right;
+    JSString::writeBarrierPost(d.u1.left, &d.u1.left);
+    JSString::writeBarrierPost(d.s.u2.right, &d.s.u2.right);
+}
+
+__attribute__((always_inline)) inline JSRope *
+JSRope::new_(JSContext *cx, js::HandleString left, js::HandleString right, size_t length)
+{
+    if (!validateLength(cx, length))
+        return __null;
+    JSRope *str = (JSRope *)js_NewGCString(cx);
+    if (!str)
+        return __null;
+    str->init(left, right, length);
+    return str;
+}
+
+inline void
+JSRope::markChildren(JSTracer *trc)
+{
+    js::gc::MarkStringUnbarriered(trc, &d.u1.left, "left child");
+    js::gc::MarkStringUnbarriered(trc, &d.s.u2.right, "right child");
+}
+
+__attribute__((always_inline)) inline void
+JSDependentString::init(JSLinearString *base, const jschar *chars, size_t length)
+{
+    do { } while(0);
+    d.lengthAndFlags = buildLengthAndFlags(length, DEPENDENT_FLAGS);
+    d.u1.chars = chars;
+    d.s.u2.base = base;
+    JSString::writeBarrierPost(d.s.u2.base, &d.s.u2.base);
+}
+
+__attribute__((always_inline)) inline JSDependentString *
+JSDependentString::new_(JSContext *cx, JSLinearString *base_, const jschar *chars, size_t length)
+{
+    JS::Rooted<JSLinearString*> base(cx, base_);
+
+
+    while (base->isDependent())
+        base = base->asDependent().base();
+
+    do { } while(0);
+    do { } while(0);
+    do { } while(0);
+
+
+
+
+
+
+    JS::SkipRoot charsRoot(cx, &chars);
+
+    JSDependentString *str = (JSDependentString *)js_NewGCString(cx);
+    if (!str)
+        return __null;
+    str->init(base, chars, length);
+    return str;
+}
+
+inline void
+JSString::markBase(JSTracer *trc)
+{
+    do { } while(0);
+    js::gc::MarkStringUnbarriered(trc, &d.s.u2.base, "base");
+}
+
+inline js::PropertyName *
+JSFlatString::toPropertyName(JSContext *cx)
+{
+
+
+
+
+    if (isAtom())
+        return asAtom().asPropertyName();
+    JSAtom *atom = js_AtomizeString(cx, this);
+    if (!atom)
+        return __null;
+    return atom->asPropertyName();
+}
+
+__attribute__((always_inline)) inline void
+JSFixedString::init(const jschar *chars, size_t length)
+{
+    d.lengthAndFlags = buildLengthAndFlags(length, FIXED_FLAGS);
+    d.u1.chars = chars;
+}
+
+__attribute__((always_inline)) inline JSFixedString *
+JSFixedString::new_(JSContext *cx, const jschar *chars, size_t length)
+{
+    do { } while(0);
+
+    if (!validateLength(cx, length))
+        return __null;
+    JSFixedString *str = (JSFixedString *)js_NewGCString(cx);
+    if (!str)
+        return __null;
+    str->init(chars, length);
+    return str;
+}
+
+__attribute__((always_inline)) inline JSAtom *
+JSFixedString::morphAtomizedStringIntoAtom()
+{
+    d.lengthAndFlags = buildLengthAndFlags(length(), NON_STATIC_ATOM_FLAGS);
+    return &asAtom();
+}
+
+__attribute__((always_inline)) inline JSInlineString *
+JSInlineString::new_(JSContext *cx)
+{
+    return (JSInlineString *)js_NewGCString(cx);
+}
+
+__attribute__((always_inline)) inline jschar *
+JSInlineString::init(size_t length)
+{
+    d.lengthAndFlags = buildLengthAndFlags(length, FIXED_FLAGS);
+    d.u1.chars = d.inlineStorage;
+    do { } while(0);
+    return d.inlineStorage;
+}
+
+__attribute__((always_inline)) inline void
+JSInlineString::resetLength(size_t length)
+{
+    d.lengthAndFlags = buildLengthAndFlags(length, FIXED_FLAGS);
+    do { } while(0);
+}
+
+__attribute__((always_inline)) inline JSShortString *
+JSShortString::new_(JSContext *cx)
+{
+    return js_NewGCShortString(cx);
+}
+
+__attribute__((always_inline)) inline void
+JSShortString::initAtOffsetInBuffer(const jschar *chars, size_t length)
+{
+    do { } while(0);
+    do { } while(0);
+    d.lengthAndFlags = buildLengthAndFlags(length, FIXED_FLAGS);
+    d.u1.chars = chars;
+}
+
+__attribute__((always_inline)) inline void
+JSExternalString::init(const jschar *chars, size_t length, const JSStringFinalizer *fin)
+{
+    do { } while(0);
+    do { } while(0);
+    d.lengthAndFlags = buildLengthAndFlags(length, FIXED_FLAGS);
+    d.u1.chars = chars;
+    d.s.u2.externalFinalizer = fin;
+}
+
+__attribute__((always_inline)) inline JSExternalString *
+JSExternalString::new_(JSContext *cx, const jschar *chars, size_t length,
+                       const JSStringFinalizer *fin)
+{
+    do { } while(0);
+
+    if (!validateLength(cx, length))
+        return __null;
+    JSExternalString *str = js_NewGCExternalString(cx);
+    if (!str)
+        return __null;
+    str->init(chars, length, fin);
+    cx->runtime->updateMallocCounter(cx, (length + 1) * sizeof(jschar));
+    return str;
+}
+
+inline bool
+js::StaticStrings::fitsInSmallChar(jschar c)
+{
+    return c < SMALL_CHAR_LIMIT && toSmallChar[c] != INVALID_SMALL_CHAR;
+}
+
+inline bool
+js::StaticStrings::hasUnit(jschar c)
+{
+    return c < UNIT_STATIC_LIMIT;
+}
+
+inline JSAtom *
+js::StaticStrings::getUnit(jschar c)
+{
+    do { } while(0);
+    return unitStaticTable[c];
+}
+
+inline bool
+js::StaticStrings::hasUint(uint32_t u)
+{
+    return u < INT_STATIC_LIMIT;
+}
+
+inline JSAtom *
+js::StaticStrings::getUint(uint32_t u)
+{
+    do { } while(0);
+    return intStaticTable[u];
+}
+
+inline bool
+js::StaticStrings::hasInt(int32_t i)
+{
+    return uint32_t(i) < INT_STATIC_LIMIT;
+}
+
+inline JSAtom *
+js::StaticStrings::getInt(int32_t i)
+{
+    do { } while(0);
+    return getUint(uint32_t(i));
+}
+
+inline JSLinearString *
+js::StaticStrings::getUnitStringForElement(JSContext *cx, JSString *str, size_t index)
+{
+    do { } while(0);
+    const jschar *chars = str->getChars(cx);
+    if (!chars)
+        return __null;
+    jschar c = chars[index];
+    if (c < UNIT_STATIC_LIMIT)
+        return getUnit(c);
+    return js_NewDependentString(cx, str, index, 1);
+}
+
+inline JSAtom *
+js::StaticStrings::getLength2(jschar c1, jschar c2)
+{
+    do { } while(0);
+    do { } while(0);
+    size_t index = (((size_t)toSmallChar[c1]) << 6) + toSmallChar[c2];
+    return length2StaticTable[index];
+}
+
+inline JSAtom *
+js::StaticStrings::getLength2(uint32_t i)
+{
+    do { } while(0);
+    return getLength2('0' + i / 10, '0' + i % 10);
+}
+
+
+inline JSAtom *
+js::StaticStrings::lookup(const jschar *chars, size_t length)
+{
+    switch (length) {
+      case 1:
+        if (chars[0] < UNIT_STATIC_LIMIT)
+            return getUnit(chars[0]);
+        return __null;
+      case 2:
+        if (fitsInSmallChar(chars[0]) && fitsInSmallChar(chars[1]))
+            return getLength2(chars[0], chars[1]);
+        return __null;
+      case 3:
+
+
+
+
+
+
+        typedef int moz_static_assert111[(INT_STATIC_LIMIT <= 999) ? 1 : -1];
+        if ('1' <= chars[0] && chars[0] <= '9' &&
+            '0' <= chars[1] && chars[1] <= '9' &&
+            '0' <= chars[2] && chars[2] <= '9') {
+            int i = (chars[0] - '0') * 100 +
+                      (chars[1] - '0') * 10 +
+                      (chars[2] - '0');
+
+            if (unsigned(i) < INT_STATIC_LIMIT)
+                return getInt(i);
+        }
+        return __null;
+    }
+
+    return __null;
+}
+
+__attribute__((always_inline)) inline void
+JSString::finalize(js::FreeOp *fop)
+{
+
+    do { } while(0);
+
+    if (isFlat())
+        asFlat().finalize(fop);
+    else
+        do { } while(0);
+}
+
+inline void
+JSFlatString::finalize(js::FreeOp *fop)
+{
+    do { } while(0);
+
+
+
+
+
+    if (chars() != d.inlineStorage)
+        fop->free_(const_cast<jschar *>(chars()));
+}
+
+inline void
+JSShortString::finalize(js::FreeOp *fop)
+{
+    do { } while(0);
+}
+
+inline void
+JSAtom::finalize(js::FreeOp *fop)
+{
+    do { } while(0);
+    if (getAllocKind() == js::gc::FINALIZE_STRING)
+        JSFlatString::finalize(fop);
+    else
+        do { } while(0);
+}
+
+inline void
+JSExternalString::finalize(js::FreeOp *fop)
+{
+    const JSStringFinalizer *fin = externalFinalizer();
+    fin->finalize(fin, const_cast<jschar *>(chars()));
+}
+
+namespace js {
+
+static __attribute__((always_inline)) inline JSFixedString *
+NewShortString(JSContext *cx, const jschar *chars, size_t length)
+{
+    SkipRoot skip(cx, &chars);
+
+
+
+
+
+    do { } while(0);
+    JSInlineString *str = JSInlineString::lengthFits(length)
+                          ? JSInlineString::new_(cx)
+                          : JSShortString::new_(cx);
+    if (!str)
+        return __null;
+
+    jschar *storage = str->init(length);
+    PodCopy(storage, chars, length);
+    storage[length] = 0;
+    Probes::createString(cx, str, length);
+    return str;
+}
+
+}
+# 16 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Barrier-inl.h" 2
+
+namespace js {
+
+inline void
+EncapsulatedValue::writeBarrierPre(const Value &value)
+{
+
+    if (value.isMarkable()) {
+        js::gc::Cell *cell = (js::gc::Cell *)value.toGCThing();
+        writeBarrierPre(cell->compartment(), value);
+    }
+
+}
+
+inline void
+EncapsulatedValue::writeBarrierPre(JSCompartment *comp, const Value &value)
+{
+
+    if (comp->needsBarrier()) {
+        Value tmp(value);
+        js::gc::MarkValueUnbarriered(comp->barrierTracer(), &tmp, "write barrier");
+        do { } while(0);
+    }
+
+}
+
+inline void
+EncapsulatedValue::pre()
+{
+    writeBarrierPre(value);
+}
+
+inline void
+EncapsulatedValue::pre(JSCompartment *comp)
+{
+    writeBarrierPre(comp, value);
+}
+
+inline
+HeapValue::HeapValue()
+    : EncapsulatedValue(UndefinedValue())
+{
+    post();
+}
+
+inline
+HeapValue::HeapValue(const Value &v)
+    : EncapsulatedValue(v)
+{
+    do { } while(0);
+    post();
+}
+
+inline
+HeapValue::HeapValue(const HeapValue &v)
+    : EncapsulatedValue(v.value)
+{
+    do { } while(0);
+    post();
+}
+
+inline
+HeapValue::~HeapValue()
+{
+    pre();
+}
+
+inline void
+HeapValue::init(const Value &v)
+{
+    do { } while(0);
+    value = v;
+    post();
+}
+
+inline void
+HeapValue::init(JSCompartment *comp, const Value &v)
+{
+    do { } while(0);
+    value = v;
+    post(comp);
+}
+
+inline HeapValue &
+HeapValue::operator=(const Value &v)
+{
+    pre();
+    do { } while(0);
+    value = v;
+    post();
+    return *this;
+}
+
+inline HeapValue &
+HeapValue::operator=(const HeapValue &v)
+{
+    pre();
+    do { } while(0);
+    value = v.value;
+    post();
+    return *this;
+}
+
+inline void
+HeapValue::set(JSCompartment *comp, const Value &v)
+{
+# 130 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/gc/Barrier-inl.h"
+    pre(comp);
+    do { } while(0);
+    value = v;
+    post(comp);
+}
+
+inline void
+HeapValue::writeBarrierPost(const Value &value, Value *addr)
+{
+
+
+}
+
+inline void
+HeapValue::writeBarrierPost(JSCompartment *comp, const Value &value, Value *addr)
+{
+
+
+}
+
+inline void
+HeapValue::post()
+{
+    writeBarrierPost(value, &value);
+}
+
+inline void
+HeapValue::post(JSCompartment *comp)
+{
+    writeBarrierPost(comp, value, &value);
+}
+
+inline
+RelocatableValue::RelocatableValue()
+    : EncapsulatedValue(UndefinedValue())
+{
+}
+
+inline
+RelocatableValue::RelocatableValue(const Value &v)
+    : EncapsulatedValue(v)
+{
+    do { } while(0);
+    post();
+}
+
+inline
+RelocatableValue::RelocatableValue(const RelocatableValue &v)
+    : EncapsulatedValue(v.value)
+{
+    do { } while(0);
+    post();
+}
+
+inline
+RelocatableValue::~RelocatableValue()
+{
+    pre();
+    relocate();
+}
+
+inline RelocatableValue &
+RelocatableValue::operator=(const Value &v)
+{
+    pre();
+    do { } while(0);
+    value = v;
+    post();
+    return *this;
+}
+
+inline RelocatableValue &
+RelocatableValue::operator=(const RelocatableValue &v)
+{
+    pre();
+    do { } while(0);
+    value = v.value;
+    post();
+    return *this;
+}
+
+inline void
+RelocatableValue::post()
+{
+
+
+}
+
+inline void
+RelocatableValue::post(JSCompartment *comp)
+{
+
+
+}
+
+inline void
+RelocatableValue::relocate()
+{
+
+
+}
+
+inline
+HeapSlot::HeapSlot(JSObject *obj, uint32_t slot, const Value &v)
+    : EncapsulatedValue(v)
+{
+    do { } while(0);
+    post(obj, slot);
+}
+
+inline
+HeapSlot::HeapSlot(JSObject *obj, uint32_t slot, const HeapSlot &s)
+    : EncapsulatedValue(s.value)
+{
+    do { } while(0);
+    post(obj, slot);
+}
+
+inline
+HeapSlot::~HeapSlot()
+{
+    pre();
+}
+
+inline void
+HeapSlot::init(JSObject *obj, uint32_t slot, const Value &v)
+{
+    value = v;
+    post(obj, slot);
+}
+
+inline void
+HeapSlot::init(JSCompartment *comp, JSObject *obj, uint32_t slot, const Value &v)
+{
+    value = v;
+    post(comp, obj, slot);
+}
+
+inline void
+HeapSlot::set(JSObject *obj, uint32_t slot, const Value &v)
+{
+    do { } while (0);
+    do { } while (0);
+
+    pre();
+    do { } while(0);
+    value = v;
+    post(obj, slot);
+}
+
+inline void
+HeapSlot::set(JSCompartment *comp, JSObject *obj, uint32_t slot, const Value &v)
+{
+    do { } while (0);
+    do { } while (0);
+    do { } while(0);
+
+    pre(comp);
+    do { } while(0);
+    value = v;
+    post(comp, obj, slot);
+}
+
+inline void
+HeapSlot::writeBarrierPost(JSObject *obj, uint32_t slot)
+{
+}
+
+inline void
+HeapSlot::writeBarrierPost(JSCompartment *comp, JSObject *obj, uint32_t slotno)
+{
+}
+
+inline void
+HeapSlot::post(JSObject *owner, uint32_t slot)
+{
+    HeapSlot::writeBarrierPost(owner, slot);
+}
+
+inline void
+HeapSlot::post(JSCompartment *comp, JSObject *owner, uint32_t slot)
+{
+    HeapSlot::writeBarrierPost(comp, owner, slot);
+}
+
+inline void
+EncapsulatedId::pre()
+{
+
+    if (JSID_IS_OBJECT(value)) {
+        JSObject *obj = JSID_TO_OBJECT(value);
+        JSCompartment *comp = obj->compartment();
+        if (comp->needsBarrier()) {
+            js::gc::MarkObjectUnbarriered(comp->barrierTracer(), &obj, "write barrier");
+            do { } while(0);
+        }
+    } else if (JSID_IS_STRING(value)) {
+        JSString *str = JSID_TO_STRING(value);
+        JSCompartment *comp = str->compartment();
+        if (comp->needsBarrier()) {
+            js::gc::MarkStringUnbarriered(comp->barrierTracer(), &str, "write barrier");
+            do { } while(0);
+        }
+    }
+
+}
+
+inline
+RelocatableId::~RelocatableId()
+{
+    pre();
+}
+
+inline RelocatableId &
+RelocatableId::operator=(jsid id)
+{
+    if (id != value)
+        pre();
+    do { } while(0);
+    value = id;
+    return *this;
+}
+
+inline RelocatableId &
+RelocatableId::operator=(const RelocatableId &v)
+{
+    if (v.value != value)
+        pre();
+    do { } while(0);
+    value = v.value;
+    return *this;
+}
+
+inline
+HeapId::HeapId(jsid id)
+    : EncapsulatedId(id)
+{
+    do { } while(0);
+    post();
+}
+
+inline
+HeapId::~HeapId()
+{
+    pre();
+}
+
+inline void
+HeapId::init(jsid id)
+{
+    do { } while(0);
+    value = id;
+    post();
+}
+
+inline void
+HeapId::post()
+{
+}
+
+inline HeapId &
+HeapId::operator=(jsid id)
+{
+    if (id != value)
+        pre();
+    do { } while(0);
+    value = id;
+    post();
+    return *this;
+}
+
+inline HeapId &
+HeapId::operator=(const HeapId &v)
+{
+    if (v.value != value)
+        pre();
+    do { } while(0);
+    value = v.value;
+    post();
+    return *this;
+}
+
+inline const Value &
+ReadBarrieredValue::get() const
+{
+    if (value.isObject())
+        JSObject::readBarrier(&value.toObject());
+    else if (value.isString())
+        JSString::readBarrier(value.toString());
+    else
+        do { } while(0);
+
+    return value;
+}
+
+inline
+ReadBarrieredValue::operator const Value &() const
+{
+    return get();
+}
+
+inline JSObject &
+ReadBarrieredValue::toObject() const
+{
+    return get().toObject();
+}
+
+}
+# 48 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpStatics-inl.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpStatics-inl.h"
+#define RegExpStatics_inl_h__ 
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpStatics.h" 1
+# 12 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpStatics-inl.h" 2
+
+
+
+namespace js {
+
+inline js::RegExpStatics *
+js::GlobalObject::getRegExpStatics() const
+{
+    JSObject &resObj = getSlot(REGEXP_STATICS).toObject();
+    return static_cast<RegExpStatics *>(resObj.getPrivate());
+}
+
+inline size_t
+SizeOfRegExpStaticsData(const JSObject *obj, JSMallocSizeOfFun mallocSizeOf)
+{
+    return mallocSizeOf(obj->getPrivate());
+}
+
+inline
+RegExpStatics::RegExpStatics()
+  : bufferLink(__null),
+    copied(false)
+{
+    clear();
+}
+
+inline bool
+RegExpStatics::createDependent(JSContext *cx, size_t start, size_t end, Value *out) const
+{
+    do { } while(0);
+    do { } while(0);
+    JSString *str = js_NewDependentString(cx, matchPairsInput, start, end - start);
+    if (!str)
+        return false;
+    *out = StringValue(str);
+    return true;
+}
+
+inline bool
+RegExpStatics::createPendingInput(JSContext *cx, Value *out) const
+{
+    out->setString(pendingInput ? pendingInput.get() : cx->runtime->emptyString);
+    return true;
+}
+
+inline bool
+RegExpStatics::makeMatch(JSContext *cx, size_t checkValidIndex, size_t pairNum, Value *out) const
+{
+    if (checkValidIndex / 2 >= pairCount() || matchPairs[checkValidIndex] < 0) {
+        out->setString(cx->runtime->emptyString);
+        return true;
+    }
+    return createDependent(cx, get(pairNum, 0), get(pairNum, 1), out);
+}
+
+inline bool
+RegExpStatics::createLastParen(JSContext *cx, Value *out) const
+{
+    if (pairCount() <= 1) {
+        out->setString(cx->runtime->emptyString);
+        return true;
+    }
+    size_t num = pairCount() - 1;
+    int start = get(num, 0);
+    int end = get(num, 1);
+    if (start == -1) {
+        out->setString(cx->runtime->emptyString);
+        return true;
+    }
+    do { } while(0);
+    do { } while(0);
+    return createDependent(cx, start, end, out);
+}
+
+inline bool
+RegExpStatics::createLeftContext(JSContext *cx, Value *out) const
+{
+    if (!pairCount()) {
+        out->setString(cx->runtime->emptyString);
+        return true;
+    }
+    if (matchPairs[0] < 0) {
+        *out = UndefinedValue();
+        return true;
+    }
+    return createDependent(cx, 0, matchPairs[0], out);
+}
+
+inline bool
+RegExpStatics::createRightContext(JSContext *cx, Value *out) const
+{
+    if (!pairCount()) {
+        out->setString(cx->runtime->emptyString);
+        return true;
+    }
+    if (matchPairs[1] < 0) {
+        *out = UndefinedValue();
+        return true;
+    }
+    return createDependent(cx, matchPairs[1], matchPairsInput->length(), out);
+}
+
+inline void
+RegExpStatics::getParen(size_t pairNum, JSSubString *out) const
+{
+    checkParenNum(pairNum);
+    if (!pairIsPresent(pairNum)) {
+        *out = js_EmptySubString;
+        return;
+    }
+    out->chars = matchPairsInput->chars() + get(pairNum, 0);
+    out->length = getParenLength(pairNum);
+}
+
+inline void
+RegExpStatics::getLastMatch(JSSubString *out) const
+{
+    if (!pairCount()) {
+        *out = js_EmptySubString;
+        return;
+    }
+    do { } while(0);
+    out->chars = matchPairsInput->chars() + get(0, 0);
+    do { } while(0);
+    out->length = get(0, 1) - get(0, 0);
+}
+
+inline void
+RegExpStatics::getLastParen(JSSubString *out) const
+{
+    size_t pc = pairCount();
+
+    if (pc <= 1) {
+        *out = js_EmptySubString;
+        return;
+    }
+    getParen(pc - 1, out);
+}
+
+inline void
+RegExpStatics::getLeftContext(JSSubString *out) const
+{
+    if (!pairCount()) {
+        *out = js_EmptySubString;
+        return;
+    }
+    out->chars = matchPairsInput->chars();
+    out->length = get(0, 0);
+}
+
+inline void
+RegExpStatics::getRightContext(JSSubString *out) const
+{
+    if (!pairCount()) {
+        *out = js_EmptySubString;
+        return;
+    }
+    out->chars = matchPairsInput->chars() + get(0, 1);
+    do { } while(0);
+    out->length = matchPairsInput->length() - get(0, 1);
+}
+
+inline void
+RegExpStatics::copyTo(RegExpStatics &dst)
+{
+    dst.matchPairs.clear();
+
+    dst.matchPairs.infallibleAppend(matchPairs);
+    dst.matchPairsInput = matchPairsInput;
+    dst.pendingInput = pendingInput;
+    dst.flags = flags;
+}
+
+inline void
+RegExpStatics::aboutToWrite()
+{
+    if (bufferLink && !bufferLink->copied) {
+        copyTo(*bufferLink);
+        bufferLink->copied = true;
+    }
+}
+
+inline void
+RegExpStatics::restore()
+{
+    if (bufferLink->copied)
+        bufferLink->copyTo(*this);
+    bufferLink = bufferLink->bufferLink;
+}
+
+inline bool
+RegExpStatics::updateFromMatchPairs(JSContext *cx, JSLinearString *input, MatchPairs *newPairs)
+{
+    do { } while(0);
+    aboutToWrite();
+    BarrieredSetPair<JSString, JSLinearString>(cx->compartment,
+                                               pendingInput, input,
+                                               matchPairsInput, input);
+
+    if (!matchPairs.resizeUninitialized(2 * newPairs->pairCount())) {
+        js_ReportOutOfMemory(cx);
+        return false;
+    }
+
+    for (size_t i = 0; i < newPairs->pairCount(); ++i) {
+        matchPairs[2 * i] = newPairs->pair(i).start;
+        matchPairs[2 * i + 1] = newPairs->pair(i).limit;
+    }
+
+    return true;
+}
+
+inline void
+RegExpStatics::clear()
+{
+    aboutToWrite();
+    flags = RegExpFlag(0);
+    pendingInput = __null;
+    matchPairsInput = __null;
+    matchPairs.clear();
+}
+
+inline void
+RegExpStatics::setPendingInput(JSString *newInput)
+{
+    aboutToWrite();
+    pendingInput = newInput;
+}
+
+PreserveRegExpStatics::~PreserveRegExpStatics()
+{
+    original->restore();
+}
+
+inline void
+RegExpStatics::setMultiline(JSContext *cx, bool enabled)
+{
+    aboutToWrite();
+    if (enabled) {
+        flags = RegExpFlag(flags | MultilineFlag);
+        markFlagsSet(cx);
+    } else {
+        flags = RegExpFlag(flags & ~MultilineFlag);
+    }
+}
+
+inline void
+RegExpStatics::markFlagsSet(JSContext *cx)
+{
+# 269 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/RegExpStatics-inl.h"
+    GlobalObject *global = GetGlobalForScopeChain(cx);
+    do { } while(0);
+
+    types::MarkTypeObjectFlags(cx, global, types::OBJECT_FLAG_REGEXP_FLAGS_SET);
+}
+
+inline void
+RegExpStatics::reset(JSContext *cx, JSString *newInput, bool newMultiline)
+{
+    aboutToWrite();
+    clear();
+    pendingInput = newInput;
+    setMultiline(cx, newMultiline);
+    checkInvariants();
+}
+
+}
+
+inline js::RegExpStatics *
+JSContext::regExpStatics()
+{
+    return js::GetGlobalForScopeChain(this)->getRegExpStatics();
+}
+# 51 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/String-inl.h" 1
+# 52 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h" 2
+
+inline bool
+JSObject::enumerate(JSContext *cx, JSIterateOp iterop, js::Value *statep, jsid *idp)
+{
+    JSNewEnumerateOp op = getOps()->enumerate;
+    return (op ? op : JS_EnumerateState)(cx, js::RootedObject(cx, this), iterop, statep, idp);
+}
+
+inline bool
+JSObject::defaultValue(JSContext *cx, JSType hint, js::Value *vp)
+{
+    js::RootedObject self(cx, this);
+
+    JSConvertOp op = getClass()->convert;
+    bool ok;
+    if (op == JS_ConvertStub)
+        ok = js::DefaultValue(cx, self, hint, vp);
+    else
+        ok = op(cx, self, hint, vp);
+    do { } while (0);
+    return ok;
+}
+
+inline JSType
+JSObject::typeOf(JSContext *cx)
+{
+    js::TypeOfOp op = getOps()->typeOf;
+    return (op ? op : js::baseops::TypeOf)(cx, js::RootedObject(cx, this));
+}
+
+inline JSObject *
+JSObject::thisObject(JSContext *cx)
+{
+    JSObjectOp op = getOps()->thisObject;
+    return op ? op(cx, js::RootedObject(cx, this)) : this;
+}
+
+inline JSBool
+JSObject::setGeneric(JSContext *cx, js::HandleId id, js::Value *vp, JSBool strict)
+{
+    if (getOps()->setGeneric)
+        return nonNativeSetProperty(cx, id, vp, strict);
+    return js::baseops::SetPropertyHelper(cx,
+                                          js::RootedObject(cx, this),
+                                          id, 0, vp, strict);
+}
+
+inline JSBool
+JSObject::setProperty(JSContext *cx, js::PropertyName *name, js::Value *vp, JSBool strict)
+{
+    return setGeneric(cx, js::RootedId(cx, js::NameToId(name)), vp, strict);
+}
+
+inline JSBool
+JSObject::setElement(JSContext *cx, uint32_t index, js::Value *vp, JSBool strict)
+{
+    if (getOps()->setElement)
+        return nonNativeSetElement(cx, index, vp, strict);
+    return js::baseops::SetElementHelper(cx, js::RootedObject(cx, this), index, 0, vp, strict);
+}
+
+inline JSBool
+JSObject::setSpecial(JSContext *cx, js::SpecialId sid, js::Value *vp, JSBool strict)
+{
+    return setGeneric(cx, js::RootedId(cx, SPECIALID_TO_JSID(sid)), vp, strict);
+}
+
+inline JSBool
+JSObject::setGenericAttributes(JSContext *cx, js::HandleId id, unsigned *attrsp)
+{
+    js::types::MarkTypePropertyConfigured(cx, this, id);
+    js::GenericAttributesOp op = getOps()->setGenericAttributes;
+    return (op ? op : js::baseops::SetAttributes)(cx, js::RootedObject(cx, this), id, attrsp);
+}
+
+inline JSBool
+JSObject::setPropertyAttributes(JSContext *cx, js::PropertyName *name, unsigned *attrsp)
+{
+    return setGenericAttributes(cx, js::RootedId(cx, js::NameToId(name)), attrsp);
+}
+
+inline JSBool
+JSObject::setElementAttributes(JSContext *cx, uint32_t index, unsigned *attrsp)
+{
+    js::ElementAttributesOp op = getOps()->setElementAttributes;
+    return (op ? op : js::baseops::SetElementAttributes)(cx, js::RootedObject(cx, this), index, attrsp);
+}
+
+inline JSBool
+JSObject::setSpecialAttributes(JSContext *cx, js::SpecialId sid, unsigned *attrsp)
+{
+    return setGenericAttributes(cx, js::RootedId(cx, SPECIALID_TO_JSID(sid)), attrsp);
+}
+
+inline bool
+JSObject::changePropertyAttributes(JSContext *cx, js::Shape *shape, unsigned attrs)
+{
+    return !!changeProperty(cx, shape, attrs, 0, shape->getter(), shape->setter());
+}
+
+inline JSBool
+JSObject::getGeneric(JSContext *cx, js::HandleObject receiver, js::HandleId id, js::Value *vp)
+{
+    js::RootedObject self(cx, this);
+
+    js::GenericIdOp op = getOps()->getGeneric;
+    if (op) {
+        if (!op(cx, self, receiver, id, vp))
+            return false;
+    } else {
+        if (!js::baseops::GetProperty(cx, self, receiver, id, vp))
+            return false;
+    }
+    return true;
+}
+
+inline JSBool
+JSObject::getProperty(JSContext *cx, js::HandleObject receiver, js::PropertyName *name, js::Value *vp)
+{
+    return getGeneric(cx, receiver, js::RootedId(cx, js::NameToId(name)), vp);
+}
+
+inline JSBool
+JSObject::getGeneric(JSContext *cx, js::HandleId id, js::Value *vp)
+{
+    return getGeneric(cx, js::RootedObject(cx, this), id, vp);
+}
+
+inline JSBool
+JSObject::getProperty(JSContext *cx, js::PropertyName *name, js::Value *vp)
+{
+    return getGeneric(cx, js::RootedId(cx, js::NameToId(name)), vp);
+}
+
+inline bool
+JSObject::deleteProperty(JSContext *cx, js::HandlePropertyName name, js::Value *rval, bool strict)
+{
+    jsid id = js::NameToId(name);
+    js::types::AddTypePropertyId(cx, this, id, js::types::Type::UndefinedType());
+    js::types::MarkTypePropertyConfigured(cx, this, id);
+    js::DeletePropertyOp op = getOps()->deleteProperty;
+    return (op ? op : js::baseops::DeleteProperty)(cx, js::RootedObject(cx, this), name, rval, strict);
+}
+
+inline bool
+JSObject::deleteElement(JSContext *cx, uint32_t index, js::Value *rval, bool strict)
+{
+    js::RootedObject self(cx, this);
+
+    jsid id;
+    if (!js::IndexToId(cx, index, &id))
+        return false;
+    js::types::AddTypePropertyId(cx, self, id, js::types::Type::UndefinedType());
+    js::types::MarkTypePropertyConfigured(cx, self, id);
+    js::DeleteElementOp op = self->getOps()->deleteElement;
+    return (op ? op : js::baseops::DeleteElement)(cx, self, index, rval, strict);
+}
+
+inline bool
+JSObject::deleteSpecial(JSContext *cx, js::HandleSpecialId sid, js::Value *rval, bool strict)
+{
+    jsid id = SPECIALID_TO_JSID(sid);
+    js::types::AddTypePropertyId(cx, this, id, js::types::Type::UndefinedType());
+    js::types::MarkTypePropertyConfigured(cx, this, id);
+    js::DeleteSpecialOp op = getOps()->deleteSpecial;
+    return (op ? op : js::baseops::DeleteSpecial)(cx, js::RootedObject(cx, this), sid, rval, strict);
+}
+
+inline void
+JSObject::finalize(js::FreeOp *fop)
+{
+    js::Probes::finalizeObject(this);
+
+    if (!fop->onBackgroundThread()) {
+
+
+
+
+
+        js::Class *clasp = getClass();
+        if (clasp->finalize)
+            clasp->finalize(fop, this);
+    }
+
+    finish(fop);
+}
+
+inline JSObject *
+JSObject::getParent() const
+{
+    return lastProperty()->getObjectParent();
+}
+
+inline JSObject *
+JSObject::enclosingScope()
+{
+    return isScope()
+           ? &asScope().enclosingScope()
+           : isDebugScope()
+           ? &asDebugScope().enclosingScope()
+           : getParent();
+}
+
+inline bool
+JSObject::isFixedSlot(size_t slot)
+{
+    do { } while(0);
+    return slot < numFixedSlots();
+}
+
+inline size_t
+JSObject::dynamicSlotIndex(size_t slot)
+{
+    do { } while(0);
+    return slot - numFixedSlots();
+}
+
+inline void
+JSObject::setLastPropertyInfallible(const js::Shape *shape)
+{
+    do { } while(0);
+    do { } while(0);
+    do { } while(0);
+    do { } while(0);
+    do { } while(0);
+
+    shape_ = const_cast<js::Shape *>(shape);
+}
+
+inline void
+JSObject::removeLastProperty(JSContext *cx)
+{
+    do { } while(0);
+    ((void)(setLastProperty(cx, lastProperty()->previous())));
+}
+
+inline bool
+JSObject::canRemoveLastProperty()
+{
+
+
+
+
+
+
+
+    do { } while(0);
+    const js::Shape *previous = lastProperty()->previous();
+    return previous->getObjectParent() == lastProperty()->getObjectParent()
+        && previous->getObjectFlags() == lastProperty()->getObjectFlags();
+}
+
+inline const js::HeapSlot *
+JSObject::getRawSlots()
+{
+    do { } while(0);
+    return slots;
+}
+
+inline const js::Value &
+JSObject::getReservedSlot(unsigned index) const
+{
+    do { } while(0);
+    return getSlot(index);
+}
+
+inline js::HeapSlot &
+JSObject::getReservedSlotRef(unsigned index)
+{
+    do { } while(0);
+    return getSlotRef(index);
+}
+
+inline void
+JSObject::setReservedSlot(unsigned index, const js::Value &v)
+{
+    do { } while(0);
+    setSlot(index, v);
+}
+
+inline void
+JSObject::initReservedSlot(unsigned index, const js::Value &v)
+{
+    do { } while(0);
+    initSlot(index, v);
+}
+
+inline void
+JSObject::prepareSlotRangeForOverwrite(size_t start, size_t end)
+{
+    for (size_t i = start; i < end; i++)
+        getSlotAddressUnchecked(i)->js::HeapSlot::~HeapSlot();
+}
+
+inline void
+JSObject::prepareElementRangeForOverwrite(size_t start, size_t end)
+{
+    do { } while(0);
+    do { } while(0);
+    for (size_t i = start; i < end; i++)
+        elements[i].js::HeapSlot::~HeapSlot();
+}
+
+inline uint32_t
+JSObject::getArrayLength() const
+{
+    do { } while(0);
+    return getElementsHeader()->length;
+}
+
+inline void
+JSObject::setArrayLength(JSContext *cx, uint32_t length)
+{
+    do { } while(0);
+
+    if (length > (2147483647)) {
+
+
+
+
+        js::types::MarkTypeObjectFlags(cx, this,
+                                       js::types::OBJECT_FLAG_NON_PACKED_ARRAY |
+                                       js::types::OBJECT_FLAG_NON_DENSE_ARRAY);
+        jsid lengthId = js::NameToId(cx->runtime->atomState.lengthAtom);
+        js::types::AddTypePropertyId(cx, this, lengthId,
+                                     js::types::Type::DoubleType());
+    }
+
+    getElementsHeader()->length = length;
+}
+
+inline void
+JSObject::setDenseArrayLength(uint32_t length)
+{
+
+    do { } while(0);
+    do { } while(0);
+    getElementsHeader()->length = length;
+}
+
+inline void
+JSObject::setDenseArrayInitializedLength(uint32_t length)
+{
+    do { } while(0);
+    do { } while(0);
+    prepareElementRangeForOverwrite(length, getElementsHeader()->initializedLength);
+    getElementsHeader()->initializedLength = length;
+}
+
+inline uint32_t
+JSObject::getDenseArrayCapacity()
+{
+    do { } while(0);
+    return getElementsHeader()->capacity;
+}
+
+inline bool
+JSObject::ensureElements(JSContext *cx, uint32_t capacity)
+{
+    if (capacity > getDenseArrayCapacity())
+        return growElements(cx, capacity);
+    return true;
+}
+
+inline void
+JSObject::setDenseArrayElement(unsigned idx, const js::Value &val)
+{
+    do { } while(0);
+    elements[idx].set(this, idx, val);
+}
+
+inline void
+JSObject::initDenseArrayElement(unsigned idx, const js::Value &val)
+{
+    do { } while(0);
+    elements[idx].init(this, idx, val);
+}
+
+inline void
+JSObject::setDenseArrayElementWithType(JSContext *cx, unsigned idx, const js::Value &val)
+{
+    js::types::AddTypePropertyId(cx, this, ((jsid)0x2), val);
+    setDenseArrayElement(idx, val);
+}
+
+inline void
+JSObject::initDenseArrayElementWithType(JSContext *cx, unsigned idx, const js::Value &val)
+{
+    js::types::AddTypePropertyId(cx, this, ((jsid)0x2), val);
+    initDenseArrayElement(idx, val);
+}
+
+inline void
+JSObject::copyDenseArrayElements(unsigned dstStart, const js::Value *src, unsigned count)
+{
+    do { } while(0);
+    JSCompartment *comp = compartment();
+    for (unsigned i = 0; i < count; ++i)
+        elements[dstStart + i].set(comp, this, dstStart + i, src[i]);
+}
+
+inline void
+JSObject::initDenseArrayElements(unsigned dstStart, const js::Value *src, unsigned count)
+{
+    do { } while(0);
+    JSCompartment *comp = compartment();
+    for (unsigned i = 0; i < count; ++i)
+        elements[dstStart + i].init(comp, this, dstStart + i, src[i]);
+}
+
+inline void
+JSObject::moveDenseArrayElements(unsigned dstStart, unsigned srcStart, unsigned count)
+{
+    do { } while(0);
+    do { } while(0);
+# 480 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h"
+    JSCompartment *comp = compartment();
+    if (comp->needsBarrier()) {
+        if (dstStart < srcStart) {
+            js::HeapSlot *dst = elements + dstStart;
+            js::HeapSlot *src = elements + srcStart;
+            for (unsigned i = 0; i < count; i++, dst++, src++)
+                dst->set(comp, this, dst - elements, *src);
+        } else {
+            js::HeapSlot *dst = elements + dstStart + count - 1;
+            js::HeapSlot *src = elements + srcStart + count - 1;
+            for (unsigned i = 0; i < count; i++, dst--, src--)
+                dst->set(comp, this, dst - elements, *src);
+        }
+    } else {
+        memmove(elements + dstStart, elements + srcStart, count * sizeof(js::HeapSlot));
+        SlotRangeWriteBarrierPost(comp, this, dstStart, count);
+    }
+}
+
+inline void
+JSObject::moveDenseArrayElementsUnbarriered(unsigned dstStart, unsigned srcStart, unsigned count)
+{
+    do { } while(0);
+
+    do { } while(0);
+    do { } while(0);
+
+    memmove(elements + dstStart, elements + srcStart, count * sizeof(js::Value));
+}
+
+inline bool
+JSObject::denseArrayHasInlineSlots() const
+{
+    do { } while(0);
+    return elements == fixedElements();
+}
+
+namespace js {
+
+
+
+
+
+static inline JSAtom *
+CallObjectLambdaName(JSFunction *fun)
+{
+    return (fun->flags & 0x08) ? fun->atom.get() : __null;
+}
+
+}
+
+inline const js::Value &
+JSObject::getDateUTCTime() const
+{
+    do { } while(0);
+    return getFixedSlot(JSSLOT_DATE_UTC_TIME);
+}
+
+inline void
+JSObject::setDateUTCTime(const js::Value &time)
+{
+    do { } while(0);
+    setFixedSlot(JSSLOT_DATE_UTC_TIME, time);
+}
+
+inline js::NativeIterator *
+JSObject::getNativeIterator() const
+{
+    return (js::NativeIterator *) getPrivate();
+}
+
+inline void
+JSObject::setNativeIterator(js::NativeIterator *ni)
+{
+    setPrivate(ni);
+}
+
+
+
+inline JSLinearString *
+JSObject::getNamePrefix() const
+{
+    do { } while(0);
+    const js::Value &v = getSlot(JSSLOT_NAME_PREFIX);
+    return !v.isUndefined() ? &v.toString()->asLinear() : __null;
+}
+
+inline jsval
+JSObject::getNamePrefixVal() const
+{
+    do { } while(0);
+    return getSlot(JSSLOT_NAME_PREFIX);
+}
+
+inline void
+JSObject::setNamePrefix(JSLinearString *prefix)
+{
+    do { } while(0);
+    setSlot(JSSLOT_NAME_PREFIX, prefix ? js::StringValue(prefix) : js::UndefinedValue());
+}
+
+inline void
+JSObject::clearNamePrefix()
+{
+    do { } while(0);
+    setSlot(JSSLOT_NAME_PREFIX, js::UndefinedValue());
+}
+
+inline JSLinearString *
+JSObject::getNameURI() const
+{
+    do { } while(0);
+    const js::Value &v = getSlot(JSSLOT_NAME_URI);
+    return !v.isUndefined() ? &v.toString()->asLinear() : __null;
+}
+
+inline jsval
+JSObject::getNameURIVal() const
+{
+    do { } while(0);
+    return getSlot(JSSLOT_NAME_URI);
+}
+
+inline void
+JSObject::setNameURI(JSLinearString *uri)
+{
+    do { } while(0);
+    setSlot(JSSLOT_NAME_URI, uri ? js::StringValue(uri) : js::UndefinedValue());
+}
+
+inline jsval
+JSObject::getNamespaceDeclared() const
+{
+    do { } while(0);
+    return getSlot(JSSLOT_NAMESPACE_DECLARED);
+}
+
+inline void
+JSObject::setNamespaceDeclared(jsval decl)
+{
+    do { } while(0);
+    setSlot(JSSLOT_NAMESPACE_DECLARED, decl);
+}
+
+inline JSAtom *
+JSObject::getQNameLocalName() const
+{
+    do { } while(0);
+    const js::Value &v = getSlot(JSSLOT_QNAME_LOCAL_NAME);
+    return !v.isUndefined() ? &v.toString()->asAtom() : __null;
+}
+
+inline jsval
+JSObject::getQNameLocalNameVal() const
+{
+    do { } while(0);
+    return getSlot(JSSLOT_QNAME_LOCAL_NAME);
+}
+
+inline void
+JSObject::setQNameLocalName(JSAtom *name)
+{
+    do { } while(0);
+    setSlot(JSSLOT_QNAME_LOCAL_NAME, name ? js::StringValue(name) : js::UndefinedValue());
+}
+
+
+
+inline bool
+JSObject::setSingletonType(JSContext *cx)
+{
+    if (!cx->typeInferenceEnabled())
+        return true;
+
+    do { } while(0);
+    do { } while (0);
+
+    js::types::TypeObject *type = cx->compartment->getLazyType(cx, getProto());
+    if (!type)
+        return false;
+
+    type_ = type;
+    return true;
+}
+
+inline js::types::TypeObject *
+JSObject::getType(JSContext *cx)
+{
+    if (hasLazyType())
+        makeLazyType(cx);
+    return type_;
+}
+
+inline bool
+JSObject::clearType(JSContext *cx)
+{
+    do { } while(0);
+
+    js::types::TypeObject *type = cx->compartment->getEmptyType(cx);
+    if (!type)
+        return false;
+
+    type_ = type;
+    return true;
+}
+
+inline void
+JSObject::setType(js::types::TypeObject *newType)
+{
+
+
+
+
+
+    do { } while (0)
+                                                                               ;
+    do { } while(0);
+    type_ = newType;
+}
+
+inline bool JSObject::setIteratedSingleton(JSContext *cx)
+{
+    return setFlag(cx, js::BaseShape::ITERATED_SINGLETON);
+}
+
+inline bool JSObject::isSystem() const
+{
+    return lastProperty()->hasObjectFlag(js::BaseShape::SYSTEM);
+}
+
+inline bool JSObject::setSystem(JSContext *cx)
+{
+    return setFlag(cx, js::BaseShape::SYSTEM);
+}
+
+inline bool JSObject::setDelegate(JSContext *cx)
+{
+    return setFlag(cx, js::BaseShape::DELEGATE, GENERATE_SHAPE);
+}
+
+inline bool JSObject::isVarObj()
+{
+    if (isDebugScope())
+        return asDebugScope().scope().isVarObj();
+    return lastProperty()->hasObjectFlag(js::BaseShape::VAROBJ);
+}
+
+inline bool JSObject::setVarObj(JSContext *cx)
+{
+    return setFlag(cx, js::BaseShape::VAROBJ);
+}
+
+inline bool JSObject::setWatched(JSContext *cx)
+{
+    return setFlag(cx, js::BaseShape::WATCHED, GENERATE_SHAPE);
+}
+
+inline bool JSObject::hasUncacheableProto() const
+{
+    return lastProperty()->hasObjectFlag(js::BaseShape::UNCACHEABLE_PROTO);
+}
+
+inline bool JSObject::setUncacheableProto(JSContext *cx)
+{
+    return setFlag(cx, js::BaseShape::UNCACHEABLE_PROTO, GENERATE_SHAPE);
+}
+
+inline bool JSObject::isBoundFunction() const
+{
+    return lastProperty()->hasObjectFlag(js::BaseShape::BOUND_FUNCTION);
+}
+
+inline bool JSObject::isIndexed() const
+{
+    return lastProperty()->hasObjectFlag(js::BaseShape::INDEXED);
+}
+
+inline bool JSObject::watched() const
+{
+    return lastProperty()->hasObjectFlag(js::BaseShape::WATCHED);
+}
+
+inline bool JSObject::hasSpecialEquality() const
+{
+    return !!getClass()->ext.equality;
+}
+
+inline bool JSObject::isArguments() const { return isNormalArguments() || isStrictArguments(); }
+inline bool JSObject::isArrayBuffer() const { return hasClass(&js::ArrayBufferClass); }
+inline bool JSObject::isBlock() const { return hasClass(&js::BlockClass); }
+inline bool JSObject::isBoolean() const { return hasClass(&js::BooleanClass); }
+inline bool JSObject::isCall() const { return hasClass(&js::CallClass); }
+inline bool JSObject::isClonedBlock() const { return isBlock() && !!getProto(); }
+inline bool JSObject::isDataView() const { return hasClass(&js::DataViewClass); }
+inline bool JSObject::isDate() const { return hasClass(&js::DateClass); }
+inline bool JSObject::isDeclEnv() const { return hasClass(&js::DeclEnvClass); }
+inline bool JSObject::isElementIterator() const { return hasClass(&js::ElementIteratorClass); }
+inline bool JSObject::isError() const { return hasClass(&js::ErrorClass); }
+inline bool JSObject::isFunction() const { return hasClass(&js::FunctionClass); }
+inline bool JSObject::isFunctionProxy() const { return hasClass(&js::FunctionProxyClass); }
+inline bool JSObject::isGenerator() const { return hasClass(&js::GeneratorClass); }
+inline bool JSObject::isIterator() const { return hasClass(&js::IteratorClass); }
+inline bool JSObject::isNestedScope() const { return isBlock() || isWith(); }
+inline bool JSObject::isNormalArguments() const { return hasClass(&js::NormalArgumentsObjectClass); }
+inline bool JSObject::isNumber() const { return hasClass(&js::NumberClass); }
+inline bool JSObject::isObject() const { return hasClass(&js::ObjectClass); }
+inline bool JSObject::isPrimitive() const { return isNumber() || isString() || isBoolean(); }
+inline bool JSObject::isRegExp() const { return hasClass(&js::RegExpClass); }
+inline bool JSObject::isRegExpStatics() const { return hasClass(&js::RegExpStaticsClass); }
+inline bool JSObject::isScope() const { return isCall() || isDeclEnv() || isNestedScope(); }
+inline bool JSObject::isStaticBlock() const { return isBlock() && !getProto(); }
+inline bool JSObject::isStopIteration() const { return hasClass(&js::StopIterationClass); }
+inline bool JSObject::isStrictArguments() const { return hasClass(&js::StrictArgumentsObjectClass); }
+inline bool JSObject::isString() const { return hasClass(&js::StringClass); }
+inline bool JSObject::isTypedArray() const { return IsTypedArrayClass(getClass()); }
+inline bool JSObject::isWeakMap() const { return hasClass(&js::WeakMapClass); }
+inline bool JSObject::isWith() const { return hasClass(&js::WithClass); }
+
+inline bool
+JSObject::isDebugScope() const
+{
+    extern bool js_IsDebugScopeSlow(const JSObject *obj);
+    return getClass() == &js::ObjectProxyClass && js_IsDebugScopeSlow(this);
+}
+
+
+inline bool JSObject::isNamespace() const { return hasClass(&js::NamespaceClass); }
+inline bool JSObject::isXML() const { return hasClass(&js::XMLClass); }
+
+inline bool
+JSObject::isXMLId() const
+{
+    return hasClass(&js::QNameClass)
+        || hasClass(&js::AttributeNameClass)
+        || hasClass(&js::AnyNameClass);
+}
+
+inline bool
+JSObject::isQName() const
+{
+    return hasClass(&js::QNameClass)
+        || hasClass(&js::AttributeNameClass)
+        || hasClass(&js::AnyNameClass);
+}
+
+
+             inline JSObject *
+JSObject::create(JSContext *cx, js::gc::AllocKind kind,
+                 js::HandleShape shape, js::HandleTypeObject type, js::HeapSlot *slots)
+{
+
+
+
+
+
+    do { } while(0);
+    do { } while(0);
+    do { } while(0);
+
+    JSObject *obj = js_NewGCObject(cx, kind);
+    if (!obj)
+        return __null;
+
+    obj->shape_.init(shape);
+    obj->type_.init(type);
+    obj->slots = slots;
+    obj->elements = js::emptyObjectElements;
+
+    const js::Class *clasp = shape->getObjectClass();
+    if (clasp->hasPrivate())
+        obj->privateRef(shape->numFixedSlots()) = __null;
+
+    size_t span = shape->slotSpan();
+    if (span && clasp != &js::ArrayBufferClass)
+        obj->initializeSlotRange(0, span);
+
+    return obj;
+}
+
+             inline JSObject *
+JSObject::createDenseArray(JSContext *cx, js::gc::AllocKind kind,
+                           js::HandleShape shape, js::HandleTypeObject type,
+                           uint32_t length)
+{
+    do { } while(0);
+    do { } while(0);
+
+
+
+
+
+    do { } while(0);
+
+
+
+
+
+    do { } while(0);
+
+    uint32_t capacity = js::gc::GetGCKindSlots(kind) - js::ObjectElements::VALUES_PER_HEADER;
+
+    JSObject *obj = js_NewGCObject(cx, kind);
+    if (!obj) {
+        js_ReportOutOfMemory(cx);
+        return __null;
+    }
+
+    obj->shape_.init(shape);
+    obj->type_.init(type);
+    obj->slots = __null;
+    obj->setFixedElements();
+    new (obj->getElementsHeader()) js::ObjectElements(capacity, length);
+
+    return obj;
+}
+
+inline void
+JSObject::finish(js::FreeOp *fop)
+{
+    if (hasDynamicSlots())
+        fop->free_(slots);
+    if (hasDynamicElements())
+        fop->free_(getElementsHeader());
+}
+
+inline bool
+JSObject::hasProperty(JSContext *cx, js::HandleId id, bool *foundp, unsigned flags)
+{
+    JSObject *pobj;
+    JSProperty *prop;
+    JSAutoResolveFlags rf(cx, flags);
+    if (!lookupGeneric(cx, id, &pobj, &prop))
+        return false;
+    *foundp = !!prop;
+    return true;
+}
+
+inline bool
+JSObject::isCallable()
+{
+    return isFunction() || getClass()->call;
+}
+
+inline JSPrincipals *
+JSObject::principals(JSContext *cx)
+{
+    if (JSObjectPrincipalsFinder find = cx->runtime->securityCallbacks->findObjectPrincipals)
+        return find(this);
+    return cx->compartment ? cx->compartment->principals : __null;
+}
+
+inline void
+JSObject::nativeSetSlot(unsigned slot, const js::Value &value)
+{
+    do { } while(0);
+    do { } while(0);
+    return setSlot(slot, value);
+}
+
+inline void
+JSObject::nativeSetSlotWithType(JSContext *cx, const js::Shape *shape, const js::Value &value)
+{
+    nativeSetSlot(shape->slot(), value);
+    js::types::AddTypePropertyId(cx, this, shape->propid(), value);
+}
+
+inline bool
+JSObject::nativeContains(JSContext *cx, jsid id)
+{
+    return nativeLookup(cx, id) != __null;
+}
+
+inline bool
+JSObject::nativeContains(JSContext *cx, const js::Shape &shape)
+{
+    return nativeLookup(cx, shape.propid()) == &shape;
+}
+
+inline bool
+JSObject::nativeEmpty() const
+{
+    return lastProperty()->isEmptyShape();
+}
+
+inline uint32_t
+JSObject::propertyCount() const
+{
+    return lastProperty()->entryCount();
+}
+
+inline bool
+JSObject::hasShapeTable() const
+{
+    return lastProperty()->hasTable();
+}
+
+inline size_t
+JSObject::computedSizeOfThisSlotsElements() const
+{
+    size_t n = sizeOfThis();
+
+    if (hasDynamicSlots())
+        n += numDynamicSlots() * sizeof(js::Value);
+
+    if (hasDynamicElements())
+        n += (js::ObjectElements::VALUES_PER_HEADER + getElementsHeader()->capacity) *
+             sizeof(js::Value);
+
+    return n;
+}
+
+inline void
+JSObject::sizeOfExcludingThis(JSMallocSizeOfFun mallocSizeOf,
+                              size_t *slotsSize, size_t *elementsSize,
+                              size_t *miscSize) const
+{
+    *slotsSize = 0;
+    if (hasDynamicSlots()) {
+        *slotsSize += mallocSizeOf(slots);
+    }
+
+    *elementsSize = 0;
+    if (hasDynamicElements()) {
+        *elementsSize += mallocSizeOf(getElementsHeader());
+    }
+
+
+    *miscSize = 0;
+    if (isArguments()) {
+        *miscSize += asArguments().sizeOfMisc(mallocSizeOf);
+    } else if (isRegExpStatics()) {
+        *miscSize += js::SizeOfRegExpStaticsData(this, mallocSizeOf);
+    }
+}
+
+inline JSBool
+JSObject::lookupGeneric(JSContext *cx, js::HandleId id, JSObject **objp, JSProperty **propp)
+{
+    js::RootedObject self(cx, this);
+
+    js::LookupGenericOp op = getOps()->lookupGeneric;
+    if (op)
+        return op(cx, self, id, objp, propp);
+    return js::baseops::LookupProperty(cx, self, id, objp, propp);
+}
+
+inline JSBool
+JSObject::lookupProperty(JSContext *cx, js::PropertyName *name, JSObject **objp, JSProperty **propp)
+{
+    return lookupGeneric(cx, js::RootedId(cx, js::NameToId(name)), objp, propp);
+}
+
+inline JSBool
+JSObject::defineGeneric(JSContext *cx, js::HandleId id, const js::Value &value,
+                        JSPropertyOp getter ,
+                        JSStrictPropertyOp setter ,
+                        unsigned attrs )
+{
+    js::RootedObject self(cx, this);
+
+    do { } while(0);
+    js::DefineGenericOp op = getOps()->defineGeneric;
+    return (op ? op : js::baseops::DefineProperty)(cx, self, id, &value, getter, setter, attrs);
+}
+
+inline JSBool
+JSObject::defineProperty(JSContext *cx, js::PropertyName *name, const js::Value &value,
+                        JSPropertyOp getter ,
+                        JSStrictPropertyOp setter ,
+                        unsigned attrs )
+{
+    return defineGeneric(cx, js::RootedId(cx, js::NameToId(name)), value, getter, setter, attrs);
+}
+
+inline JSBool
+JSObject::defineElement(JSContext *cx, uint32_t index, const js::Value &value,
+                        JSPropertyOp getter ,
+                        JSStrictPropertyOp setter ,
+                        unsigned attrs )
+{
+    js::RootedObject self(cx, this);
+
+    js::DefineElementOp op = getOps()->defineElement;
+    return (op ? op : js::baseops::DefineElement)(cx, self, index, &value, getter, setter, attrs);
+}
+
+inline JSBool
+JSObject::defineSpecial(JSContext *cx, js::SpecialId sid, const js::Value &value,
+                        JSPropertyOp getter ,
+                        JSStrictPropertyOp setter ,
+                        unsigned attrs )
+{
+    return defineGeneric(cx, js::RootedId(cx, SPECIALID_TO_JSID(sid)), value, getter, setter, attrs);
+}
+
+inline JSBool
+JSObject::lookupElement(JSContext *cx, uint32_t index, JSObject **objp, JSProperty **propp)
+{
+    js::RootedObject self(cx, this);
+
+    js::LookupElementOp op = getOps()->lookupElement;
+    return (op ? op : js::baseops::LookupElement)(cx, self, index, objp, propp);
+}
+
+inline JSBool
+JSObject::lookupSpecial(JSContext *cx, js::SpecialId sid, JSObject **objp, JSProperty **propp)
+{
+    return lookupGeneric(cx, js::RootedId(cx, SPECIALID_TO_JSID(sid)), objp, propp);
+}
+
+inline JSBool
+JSObject::getElement(JSContext *cx, js::HandleObject receiver, uint32_t index, js::Value *vp)
+{
+    js::RootedObject self(cx, this);
+
+    js::ElementIdOp op = getOps()->getElement;
+    if (op)
+        return op(cx, self, receiver, index, vp);
+
+    js::RootedId id(cx);
+    if (!js::IndexToId(cx, index, id.address()))
+        return false;
+    return self->getGeneric(cx, receiver, id, vp);
+}
+
+inline JSBool
+JSObject::getElement(JSContext *cx, uint32_t index, js::Value *vp)
+{
+    return getElement(cx, js::RootedObject(cx, this), index, vp);
+}
+
+inline JSBool
+JSObject::getElementIfPresent(JSContext *cx, js::HandleObject receiver, uint32_t index, js::Value *vp,
+                              bool *present)
+{
+    js::RootedObject self(cx, this);
+
+    js::ElementIfPresentOp op = getOps()->getElementIfPresent;
+    if (op)
+        return op(cx, self, receiver, index, vp, present);
+
+
+
+
+
+
+    js::RootedId id(cx);
+    if (!js::IndexToId(cx, index, id.address()))
+        return false;
+
+    JSObject *obj2;
+    JSProperty *prop;
+    if (!self->lookupGeneric(cx, id, &obj2, &prop))
+        return false;
+
+    if (!prop) {
+        *present = false;
+        js::Debug_SetValueRangeToCrashOnTouch(vp, 1);
+        return true;
+    }
+
+    *present = true;
+    return self->getGeneric(cx, receiver, id, vp);
+}
+
+inline JSBool
+JSObject::getSpecial(JSContext *cx, js::HandleObject receiver, js::SpecialId sid, js::Value *vp)
+{
+    return getGeneric(cx, receiver, js::RootedId(cx, SPECIALID_TO_JSID(sid)), vp);
+}
+
+inline JSBool
+JSObject::getGenericAttributes(JSContext *cx, js::HandleId id, unsigned *attrsp)
+{
+    js::GenericAttributesOp op = getOps()->getGenericAttributes;
+    return (op ? op : js::baseops::GetAttributes)(cx, js::RootedObject(cx, this), id, attrsp);
+}
+
+inline JSBool
+JSObject::getPropertyAttributes(JSContext *cx, js::PropertyName *name, unsigned *attrsp)
+{
+    return getGenericAttributes(cx, js::RootedId(cx, js::NameToId(name)), attrsp);
+}
+
+inline JSBool
+JSObject::getElementAttributes(JSContext *cx, uint32_t index, unsigned *attrsp)
+{
+    js::RootedId id(cx);
+    if (!js::IndexToId(cx, index, id.address()))
+        return false;
+    return getGenericAttributes(cx, id, attrsp);
+}
+
+inline JSBool
+JSObject::getSpecialAttributes(JSContext *cx, js::SpecialId sid, unsigned *attrsp)
+{
+    return getGenericAttributes(cx, js::RootedId(cx, SPECIALID_TO_JSID(sid)), attrsp);
+}
+
+inline bool
+JSObject::isProxy() const
+{
+    return js::IsProxy(this);
+}
+
+inline bool
+JSObject::isCrossCompartmentWrapper() const
+{
+    return js::IsCrossCompartmentWrapper(this);
+}
+
+inline bool
+JSObject::isWrapper() const
+{
+    return js::IsWrapper(this);
+}
+
+inline js::GlobalObject &
+JSObject::global() const
+{
+    JSObject *obj = const_cast<JSObject *>(this);
+    while (JSObject *parent = obj->getParent())
+        obj = parent;
+    return obj->asGlobal();
+}
+
+static inline bool
+js_IsCallable(const js::Value &v)
+{
+    return v.isObject() && v.toObject().isCallable();
+}
+
+namespace js {
+
+inline JSObject *
+GetInnerObject(JSContext *cx, HandleObject obj)
+{
+    if (JSObjectOp op = obj->getClass()->ext.innerObject)
+        return op(cx, obj);
+    return obj;
+}
+
+inline JSObject *
+GetOuterObject(JSContext *cx, HandleObject obj)
+{
+    if (JSObjectOp op = obj->getClass()->ext.outerObject)
+        return op(cx, obj);
+    return obj;
+}
+
+
+
+
+
+
+#define VALUE_IS_XML(v) ((v).isObject() && (v).toObject().isXML())
+
+static inline bool
+IsXML(const js::Value &v)
+{
+    return v.isObject() && v.toObject().isXML();
+}
+
+
+
+
+
+
+
+static inline bool
+IsStopIteration(const js::Value &v)
+{
+    return v.isObject() && v.toObject().isStopIteration();
+}
+
+
+static __attribute__((always_inline)) inline bool
+ToPrimitive(JSContext *cx, Value *vp)
+{
+    if (vp->isPrimitive())
+        return true;
+    return vp->toObject().defaultValue(cx, JSTYPE_VOID, vp);
+}
+
+
+static __attribute__((always_inline)) inline bool
+ToPrimitive(JSContext *cx, JSType preferredType, Value *vp)
+{
+    do { } while(0);
+    if (vp->isPrimitive())
+        return true;
+    return vp->toObject().defaultValue(cx, preferredType, vp);
+}
+
+
+
+
+
+
+inline bool
+IsInternalFunctionObject(JSObject *funobj)
+{
+    JSFunction *fun = funobj->toFunction();
+    return (fun->flags & 0x08) && !funobj->getParent();
+}
+
+class AutoPropDescArrayRooter : private AutoGCRooter
+{
+  public:
+    AutoPropDescArrayRooter(JSContext *cx)
+      : AutoGCRooter(cx, DESCRIPTORS), descriptors(cx), skip(cx, &descriptors)
+    { }
+
+    PropDesc *append() {
+        if (!descriptors.append(PropDesc()))
+            return __null;
+        return &descriptors.back();
+    }
+
+    bool reserve(size_t n) {
+        return descriptors.reserve(n);
+    }
+
+    PropDesc& operator[](size_t i) {
+        do { } while(0);
+        return descriptors[i];
+    }
+
+    friend void AutoGCRooter::trace(JSTracer *trc);
+
+  private:
+    PropDescArray descriptors;
+    SkipRoot skip;
+};
+
+class AutoPropertyDescriptorRooter : private AutoGCRooter, public PropertyDescriptor
+{
+    SkipRoot skip;
+
+    AutoPropertyDescriptorRooter *thisDuringConstruction() { return this; }
+
+  public:
+    AutoPropertyDescriptorRooter(JSContext *cx)
+      : AutoGCRooter(cx, DESCRIPTOR), skip(cx, thisDuringConstruction())
+    {
+        obj = __null;
+        attrs = 0;
+        getter = (PropertyOp) __null;
+        setter = (StrictPropertyOp) __null;
+        value.setUndefined();
+    }
+
+    AutoPropertyDescriptorRooter(JSContext *cx, PropertyDescriptor *desc)
+      : AutoGCRooter(cx, DESCRIPTOR), skip(cx, thisDuringConstruction())
+    {
+        obj = desc->obj;
+        attrs = desc->attrs;
+        getter = desc->getter;
+        setter = desc->setter;
+        value = desc->value;
+    }
+
+    friend void AutoGCRooter::trace(JSTracer *trc);
+};
+
+inline void
+NewObjectCache::copyCachedToObject(JSObject *dst, JSObject *src)
+{
+    js_memcpy(dst, src, dst->sizeOfThis());
+
+
+
+
+}
+
+static inline bool
+CanBeFinalizedInBackground(gc::AllocKind kind, Class *clasp)
+{
+
+    do { } while(0);
+
+
+
+
+
+
+
+    if (!gc::IsBackgroundAllocKind(kind) && !clasp->finalize)
+        return true;
+
+    return false;
+}
+
+
+
+
+
+JSObject *
+NewObjectWithGivenProto(JSContext *cx, js::Class *clasp, JSObject *proto, JSObject *parent,
+                        gc::AllocKind kind);
+
+inline JSObject *
+NewObjectWithGivenProto(JSContext *cx, js::Class *clasp, JSObject *proto, JSObject *parent)
+{
+    gc::AllocKind kind = gc::GetGCObjectKind(clasp);
+    return NewObjectWithGivenProto(cx, clasp, proto, parent, kind);
+}
+
+inline JSProtoKey
+GetClassProtoKey(js::Class *clasp)
+{
+    JSProtoKey key = ((JSProtoKey) (((clasp)->flags >> ((8 + 8) + 10)) & (((uint32_t)1 << (6)) - 1)));
+    if (key != JSProto_Null)
+        return key;
+    if (clasp->flags & (1<<((8 + 8)+1)))
+        return JSProto_Object;
+    return JSProto_Null;
+}
+
+inline bool
+FindProto(JSContext *cx, js::Class *clasp, HandleObject parent, JSObject **proto)
+{
+    JSProtoKey protoKey = GetClassProtoKey(clasp);
+    if (!js_GetClassPrototype(cx, parent, protoKey, proto, clasp))
+        return false;
+    if (!(*proto) && !js_GetClassPrototype(cx, parent, JSProto_Object, proto))
+        return false;
+    return true;
+}
+# 1427 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsobjinlines.h"
+JSObject *
+NewObjectWithClassProto(JSContext *cx, js::Class *clasp, JSObject *proto, JSObject *parent,
+                        gc::AllocKind kind);
+
+inline JSObject *
+NewObjectWithClassProto(JSContext *cx, js::Class *clasp, JSObject *proto, JSObject *parent)
+{
+    gc::AllocKind kind = gc::GetGCObjectKind(clasp);
+    return NewObjectWithClassProto(cx, clasp, proto, parent, kind);
+}
+
+
+
+
+
+inline JSObject *
+NewBuiltinClassInstance(JSContext *cx, Class *clasp, gc::AllocKind kind)
+{
+    return NewObjectWithClassProto(cx, clasp, __null, __null, kind);
+}
+
+inline JSObject *
+NewBuiltinClassInstance(JSContext *cx, Class *clasp)
+{
+    gc::AllocKind kind = gc::GetGCObjectKind(clasp);
+    return NewBuiltinClassInstance(cx, clasp, kind);
+}
+
+inline GlobalObject *
+GetCurrentGlobal(JSContext *cx)
+{
+    JSObject *scopeChain = (cx->hasfp()) ? cx->fp()->scopeChain() : cx->globalObject;
+    return scopeChain ? &scopeChain->global() : __null;
+}
+
+bool
+FindClassPrototype(JSContext *cx, JSObject *scope, JSProtoKey protoKey, JSObject **protop,
+                   Class *clasp);
+
+
+
+
+
+JSObject *
+NewObjectWithType(JSContext *cx, HandleTypeObject type, JSObject *parent, gc::AllocKind kind);
+
+
+static inline JSObject *
+CopyInitializerObject(JSContext *cx, HandleObject baseobj)
+{
+    do { } while(0);
+    do { } while(0);
+
+    gc::AllocKind kind = gc::GetGCObjectFixedSlotsKind(baseobj->numFixedSlots());
+
+    kind = gc::GetBackgroundAllocKind(kind);
+
+    do { } while(0);
+    JSObject *obj = NewBuiltinClassInstance(cx, &ObjectClass, kind);
+
+    if (!obj)
+        return __null;
+
+    if (!obj->setLastProperty(cx, baseobj->lastProperty()))
+        return __null;
+
+    return obj;
+}
+
+JSObject *
+NewReshapedObject(JSContext *cx, HandleTypeObject type, JSObject *parent,
+                  gc::AllocKind kind, const Shape *shape);
+
+
+
+
+
+
+static inline gc::AllocKind
+GuessObjectGCKind(size_t numSlots)
+{
+    if (numSlots)
+        return gc::GetGCObjectKind(numSlots);
+    return gc::FINALIZE_OBJECT4;
+}
+
+static inline gc::AllocKind
+GuessArrayGCKind(size_t numSlots)
+{
+    if (numSlots)
+        return gc::GetGCArrayKind(numSlots);
+    return gc::FINALIZE_OBJECT8;
+}
+
+
+
+
+
+static inline gc::AllocKind
+NewObjectGCKind(JSContext *cx, js::Class *clasp)
+{
+    if (clasp == &ArrayClass || clasp == &SlowArrayClass)
+        return gc::FINALIZE_OBJECT8;
+    if (clasp == &FunctionClass)
+        return gc::FINALIZE_OBJECT2;
+    return gc::FINALIZE_OBJECT4;
+}
+
+
+
+
+
+inline bool
+PreallocateObjectDynamicSlots(JSContext *cx, Shape *shape, HeapSlot **slots)
+{
+    if (size_t count = JSObject::dynamicSlotsCount(shape->numFixedSlots(), shape->slotSpan())) {
+        *slots = (HeapSlot *) cx->malloc_(count * sizeof(HeapSlot));
+        if (!*slots)
+            return false;
+        Debug_SetSlotRangeToCrashOnTouch(*slots, count);
+        return true;
+    }
+    *slots = __null;
+    return true;
+}
+
+inline bool
+DefineConstructorAndPrototype(JSContext *cx, GlobalObject *global,
+                              JSProtoKey key, JSObject *ctor, JSObject *proto)
+{
+    do { } while(0);
+    do { } while(0);
+    do { } while(0);
+
+    jsid id = NameToId(cx->runtime->atomState.classAtoms[key]);
+    do { } while(0);
+
+
+    global->setSlot(key, ObjectValue(*ctor));
+    global->setSlot(key + JSProto_LIMIT, ObjectValue(*proto));
+    global->setSlot(key + JSProto_LIMIT * 2, ObjectValue(*ctor));
+
+    types::AddTypePropertyId(cx, global, id, ObjectValue(*ctor));
+    if (!global->addDataProperty(cx, id, key + JSProto_LIMIT * 2, 0)) {
+        global->setSlot(key, UndefinedValue());
+        global->setSlot(key + JSProto_LIMIT, UndefinedValue());
+        global->setSlot(key + JSProto_LIMIT * 2, UndefinedValue());
+        return false;
+    }
+
+    return true;
+}
+
+inline bool
+ObjectClassIs(JSObject &obj, ESClassValue classValue, JSContext *cx)
+{
+    if ((__builtin_expect((obj.isProxy()), 0)))
+        return Proxy::objectClassIs(&obj, classValue, cx);
+
+    switch (classValue) {
+      case ESClass_Array: return obj.isArray();
+      case ESClass_Number: return obj.isNumber();
+      case ESClass_String: return obj.isString();
+      case ESClass_Boolean: return obj.isBoolean();
+      case ESClass_RegExp: return obj.isRegExp();
+      case ESClass_ArrayBuffer: return obj.isArrayBuffer();
+    }
+    __builtin_unreachable();
+    return false;
+}
+
+inline bool
+IsObjectWithClass(const Value &v, ESClassValue classValue, JSContext *cx)
+{
+    if (!v.isObject())
+        return false;
+    return ObjectClassIs(v.toObject(), classValue, cx);
+}
+
+static __attribute__((always_inline)) inline bool
+ValueIsSpecial(JSObject *obj, Value *propval, SpecialId *sidp, JSContext *cx)
+{
+
+    if (!propval->isObject())
+        return false;
+
+    if (obj->isXML()) {
+        *sidp = SpecialId(propval->toObject());
+        return true;
+    }
+
+    JSObject &propobj = propval->toObject();
+    JSAtom *name;
+    if (propobj.isQName() && GetLocalNameFromFunctionQName(&propobj, &name, cx)) {
+        propval->setString(name);
+        return false;
+    }
+
+
+    return false;
+}
+
+JSObject *
+DefineConstructorAndPrototype(JSContext *cx, HandleObject obj, JSProtoKey key, HandleAtom atom,
+                              JSObject *protoProto, Class *clasp,
+                              Native constructor, unsigned nargs,
+                              JSPropertySpec *ps, JSFunctionSpec *fs,
+                              JSPropertySpec *static_ps, JSFunctionSpec *static_fs,
+                              JSObject **ctorp = __null,
+                              gc::AllocKind ctorKind = JSFunction::FinalizeKind);
+
+}
+
+extern JSObject *
+js_InitClass(JSContext *cx, js::HandleObject obj, JSObject *parent_proto,
+             js::Class *clasp, JSNative constructor, unsigned nargs,
+             JSPropertySpec *ps, JSFunctionSpec *fs,
+             JSPropertySpec *static_ps, JSFunctionSpec *static_fs,
+             JSObject **ctorp = __null,
+             js::gc::AllocKind ctorKind = JSFunction::FinalizeKind);
+
+
+
+
+
+
+
+extern bool
+js_PurgeScopeChainHelper(JSContext *cx, JSObject *obj, jsid id);
+
+inline bool
+js_PurgeScopeChain(JSContext *cx, JSObject *obj, jsid id)
+{
+    if (obj->isDelegate())
+        return js_PurgeScopeChainHelper(cx, obj, id);
+    return true;
+}
+
+inline void
+js::DestroyIdArray(FreeOp *fop, JSIdArray *ida)
+{
+    fop->free_(ida);
+}
+# 13 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.cpp" 2
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h" 1
+# 9 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h"
+#define Debugger_h__ 
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jsclist.h" 1
+# 15 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h" 2
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/jswrapper.h" 1
+# 20 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h" 2
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/GlobalObject.h" 1
+# 24 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h" 2
+
+namespace js {
+
+class Debugger {
+    friend class Breakpoint;
+    friend JSBool (::JS_DefineDebuggerObject)(JSContext *cx, JSObject *obj);
+
+  public:
+    enum Hook {
+        OnDebuggerStatement,
+        OnExceptionUnwind,
+        OnNewScript,
+        OnEnterFrame,
+        HookCount
+    };
+
+    enum {
+        JSSLOT_DEBUG_PROTO_START,
+        JSSLOT_DEBUG_FRAME_PROTO = JSSLOT_DEBUG_PROTO_START,
+        JSSLOT_DEBUG_ENV_PROTO,
+        JSSLOT_DEBUG_OBJECT_PROTO,
+        JSSLOT_DEBUG_SCRIPT_PROTO,
+        JSSLOT_DEBUG_PROTO_STOP,
+        JSSLOT_DEBUG_HOOK_START = JSSLOT_DEBUG_PROTO_STOP,
+        JSSLOT_DEBUG_HOOK_STOP = JSSLOT_DEBUG_HOOK_START + HookCount,
+        JSSLOT_DEBUG_COUNT = JSSLOT_DEBUG_HOOK_STOP
+    };
+
+  private:
+    JSCList link;
+    HeapPtrObject object;
+    GlobalObjectSet debuggees;
+    js::HeapPtrObject uncaughtExceptionHook;
+    bool enabled;
+    JSCList breakpoints;
+# 73 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h"
+    typedef HashMap<StackFrame *, HeapPtrObject, DefaultHasher<StackFrame *>, RuntimeAllocPolicy>
+        FrameMap;
+    FrameMap frames;
+
+
+    typedef WeakMap<HeapPtrScript, HeapPtrObject> ScriptWeakMap;
+    ScriptWeakMap scripts;
+
+
+    typedef WeakMap<HeapPtrObject, HeapPtrObject> ObjectWeakMap;
+    ObjectWeakMap objects;
+
+
+    ObjectWeakMap environments;
+
+    class FrameRange;
+    class ScriptQuery;
+
+    bool addDebuggeeGlobal(JSContext *cx, Handle<GlobalObject*> obj);
+    void removeDebuggeeGlobal(FreeOp *fop, GlobalObject *global,
+                              GlobalObjectSet::Enum *compartmentEnum,
+                              GlobalObjectSet::Enum *debugEnum);
+# 110 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h"
+    JSTrapStatus handleUncaughtException(AutoCompartment &ac, Value *vp, bool callHook);
+# 137 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h"
+    JSTrapStatus parseResumptionValue(AutoCompartment &ac, bool ok, const Value &rv, Value *vp,
+                                      bool callHook = true);
+
+    JSObject *unwrapDebuggeeArgument(JSContext *cx, const Value &v);
+
+    static void traceObject(JSTracer *trc, JSObject *obj);
+    void trace(JSTracer *trc);
+    static void finalize(FreeOp *fop, JSObject *obj);
+    void markKeysInCompartment(JSTracer *tracer);
+
+    static Class jsclass;
+
+    static Debugger *fromThisValue(JSContext *cx, const CallArgs &ca, const char *fnname);
+    static JSBool getEnabled(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool setEnabled(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool getHookImpl(JSContext *cx, unsigned argc, Value *vp, Hook which);
+    static JSBool setHookImpl(JSContext *cx, unsigned argc, Value *vp, Hook which);
+    static JSBool getOnDebuggerStatement(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool setOnDebuggerStatement(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool getOnExceptionUnwind(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool setOnExceptionUnwind(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool getOnNewScript(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool setOnNewScript(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool getOnEnterFrame(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool setOnEnterFrame(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool getUncaughtExceptionHook(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool setUncaughtExceptionHook(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool addDebuggee(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool removeDebuggee(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool hasDebuggee(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool getDebuggees(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool getNewestFrame(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool clearAllBreakpoints(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool findScripts(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool wrap(JSContext *cx, unsigned argc, Value *vp);
+    static JSBool construct(JSContext *cx, unsigned argc, Value *vp);
+    static JSPropertySpec properties[];
+    static JSFunctionSpec methods[];
+
+    JSObject *getHook(Hook hook) const;
+    bool hasAnyLiveHooks() const;
+
+    static JSTrapStatus slowPathOnEnterFrame(JSContext *cx, Value *vp);
+    static bool slowPathOnLeaveFrame(JSContext *cx, bool ok);
+    static void slowPathOnNewScript(JSContext *cx, JSScript *script,
+                                    GlobalObject *compileAndGoGlobal);
+    static JSTrapStatus dispatchHook(JSContext *cx, Value *vp, Hook which);
+
+    JSTrapStatus fireDebuggerStatement(JSContext *cx, Value *vp);
+    JSTrapStatus fireExceptionUnwind(JSContext *cx, Value *vp);
+    JSTrapStatus fireEnterFrame(JSContext *cx, Value *vp);
+
+
+
+
+
+    JSObject *newDebuggerScript(JSContext *cx, Handle<JSScript*> script);
+
+
+
+
+
+    void fireNewScript(JSContext *cx, Handle<JSScript*> script);
+
+    static inline Debugger *fromLinks(JSCList *links);
+    inline Breakpoint *firstBreakpoint() const;
+
+  public:
+    Debugger(JSContext *cx, JSObject *dbg);
+    ~Debugger();
+
+    bool init(JSContext *cx);
+    inline const js::HeapPtrObject &toJSObject() const;
+    inline js::HeapPtrObject &toJSObjectRef();
+    static inline Debugger *fromJSObject(JSObject *obj);
+    static Debugger *fromChildJSObject(JSObject *obj);
+# 231 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h"
+    static void markCrossCompartmentDebuggerObjectReferents(JSTracer *tracer);
+    static bool markAllIteratively(GCMarker *trc);
+    static void sweepAll(FreeOp *fop);
+    static void detachAllDebuggersFromGlobal(FreeOp *fop, GlobalObject *global,
+                                             GlobalObjectSet::Enum *compartmentEnum);
+
+    static inline JSTrapStatus onEnterFrame(JSContext *cx, Value *vp);
+    static inline bool onLeaveFrame(JSContext *cx, bool ok);
+    static inline JSTrapStatus onDebuggerStatement(JSContext *cx, Value *vp);
+    static inline JSTrapStatus onExceptionUnwind(JSContext *cx, Value *vp);
+    static inline void onNewScript(JSContext *cx, JSScript *script,
+                                   GlobalObject *compileAndGoGlobal);
+    static JSTrapStatus onTrap(JSContext *cx, Value *vp);
+    static JSTrapStatus onSingleStep(JSContext *cx, Value *vp);
+
+
+
+    inline bool observesEnterFrame() const;
+    inline bool observesNewScript() const;
+    inline bool observesGlobal(GlobalObject *global) const;
+    inline bool observesFrame(StackFrame *fp) const;
+    bool observesScript(JSScript *script) const;
+
+
+
+
+
+
+    bool wrapEnvironment(JSContext *cx, Handle<Env*> env, Value *vp);
+# 270 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h"
+    bool wrapDebuggeeValue(JSContext *cx, Value *vp);
+# 299 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h"
+    bool unwrapDebuggeeValue(JSContext *cx, Value *vp);
+
+
+    bool getScriptFrame(JSContext *cx, StackFrame *fp, Value *vp);
+# 311 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h"
+    static void resultToCompletion(JSContext *cx, bool ok, const Value &rv,
+                                   JSTrapStatus *status, Value *value);
+
+
+
+
+
+
+    bool newCompletionValue(JSContext *cx, JSTrapStatus status, Value value, Value *result);
+# 333 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h"
+    bool receiveCompletionValue(AutoCompartment &ac, bool ok, Value val, Value *vp);
+
+
+
+
+
+
+    JSObject *wrapScript(JSContext *cx, Handle<JSScript*> script);
+
+  private:
+    Debugger(const Debugger &) ;
+    Debugger & operator=(const Debugger &) ;
+};
+
+class BreakpointSite {
+    friend class Breakpoint;
+    friend struct ::JSCompartment;
+    friend struct ::JSScript;
+    friend class Debugger;
+
+  public:
+    JSScript *script;
+    jsbytecode * const pc;
+
+  private:
+
+
+
+
+
+    GlobalObject *scriptGlobal;
+
+    JSCList breakpoints;
+    size_t enabledCount;
+    JSTrapHandler trapHandler;
+    HeapValue trapClosure;
+
+    void recompile(FreeOp *fop);
+
+  public:
+    BreakpointSite(JSScript *script, jsbytecode *pc);
+    Breakpoint *firstBreakpoint() const;
+    bool hasBreakpoint(Breakpoint *bp);
+    bool hasTrap() const { return !!trapHandler; }
+    GlobalObject *getScriptGlobal() const { return scriptGlobal; }
+
+    void inc(FreeOp *fop);
+    void dec(FreeOp *fop);
+    void setTrap(FreeOp *fop, JSTrapHandler handler, const Value &closure);
+    void clearTrap(FreeOp *fop, JSTrapHandler *handlerp = __null, Value *closurep = __null);
+    void destroyIfEmpty(FreeOp *fop);
+};
+# 404 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/Debugger.h"
+class Breakpoint {
+    friend struct ::JSCompartment;
+    friend class Debugger;
+
+  public:
+    Debugger * const debugger;
+    BreakpointSite * const site;
+  private:
+    js::HeapPtrObject handler;
+    JSCList debuggerLinks;
+    JSCList siteLinks;
+
+  public:
+    static Breakpoint *fromDebuggerLinks(JSCList *links);
+    static Breakpoint *fromSiteLinks(JSCList *links);
+    Breakpoint(Debugger *debugger, BreakpointSite *site, JSObject *handler);
+    void destroy(FreeOp *fop);
+    Breakpoint *nextInDebugger();
+    Breakpoint *nextInSite();
+    const HeapPtrObject &getHandler() const { return handler; }
+    HeapPtrObject &getHandlerRef() { return handler; }
+};
+
+Debugger *
+Debugger::fromLinks(JSCList *links)
+{
+    unsigned char *p = reinterpret_cast<unsigned char *>(links);
+    return reinterpret_cast<Debugger *>(p - __builtin_offsetof (Debugger, link));
+}
+
+Breakpoint *
+Debugger::firstBreakpoint() const
+{
+    if (((&breakpoints)->next == (&breakpoints)))
+        return __null;
+    return Breakpoint::fromDebuggerLinks(((&breakpoints)->next));
+}
+
+const js::HeapPtrObject &
+Debugger::toJSObject() const
+{
+    do { } while(0);
+    return object;
+}
+
+js::HeapPtrObject &
+Debugger::toJSObjectRef()
+{
+    do { } while(0);
+    return object;
+}
+
+Debugger *
+Debugger::fromJSObject(JSObject *obj)
+{
+    do { } while(0);
+    return (Debugger *) obj->getPrivate();
+}
+
+bool
+Debugger::observesEnterFrame() const
+{
+    return enabled && getHook(OnEnterFrame);
+}
+
+bool
+Debugger::observesNewScript() const
+{
+    return enabled && getHook(OnNewScript);
+}
+
+bool
+Debugger::observesGlobal(GlobalObject *global) const
+{
+    return debuggees.has(global);
+}
+
+bool
+Debugger::observesFrame(StackFrame *fp) const
+{
+    return !fp->isDummyFrame() && observesGlobal(&fp->global());
+}
+
+JSTrapStatus
+Debugger::onEnterFrame(JSContext *cx, Value *vp)
+{
+    if (cx->compartment->getDebuggees().empty())
+        return JSTRAP_CONTINUE;
+    return slowPathOnEnterFrame(cx, vp);
+}
+
+bool
+Debugger::onLeaveFrame(JSContext *cx, bool ok)
+{
+
+    bool evalTraps = cx->fp()->isEvalFrame() &&
+                     cx->fp()->script()->hasAnyBreakpointsOrStepMode();
+    if (!cx->compartment->getDebuggees().empty() || evalTraps)
+        ok = slowPathOnLeaveFrame(cx, ok);
+    return ok;
+}
+
+JSTrapStatus
+Debugger::onDebuggerStatement(JSContext *cx, Value *vp)
+{
+    return cx->compartment->getDebuggees().empty()
+           ? JSTRAP_CONTINUE
+           : dispatchHook(cx, vp, OnDebuggerStatement);
+}
+
+JSTrapStatus
+Debugger::onExceptionUnwind(JSContext *cx, Value *vp)
+{
+    return cx->compartment->getDebuggees().empty()
+           ? JSTRAP_CONTINUE
+           : dispatchHook(cx, vp, OnExceptionUnwind);
+}
+
+void
+Debugger::onNewScript(JSContext *cx, JSScript *script, GlobalObject *compileAndGoGlobal)
+{
+    do { } while (0);
+    do { } while (0);
+    if (!script->compartment()->getDebuggees().empty())
+        slowPathOnNewScript(cx, script, compileAndGoGlobal);
+}
+
+extern JSBool
+EvaluateInEnv(JSContext *cx, Handle<Env*> env, StackFrame *fp, const jschar *chars,
+              unsigned length, const char *filename, unsigned lineno, Value *rval);
+
+}
+# 17 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.cpp" 2
+
+
+
+
+# 1 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl-inl.h" 1
+# 22 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.cpp" 2
+
+using namespace js;
+
+PropDesc::PropDesc()
+  : pd_(UndefinedValue()),
+    value_(UndefinedValue()),
+    get_(UndefinedValue()),
+    set_(UndefinedValue()),
+    attrs(0),
+    hasGet_(false),
+    hasSet_(false),
+    hasValue_(false),
+    hasWritable_(false),
+    hasEnumerable_(false),
+    hasConfigurable_(false),
+    isUndefined_(true)
+{
+}
+
+bool
+PropDesc::checkGetter(JSContext *cx)
+{
+    if (hasGet_) {
+        if (!js_IsCallable(get_) && !get_.isUndefined()) {
+            JS_ReportErrorNumber(cx, js_GetErrorMessage, __null, JSMSG_BAD_GET_SET_FIELD,
+                                 js_getter_str);
+            return false;
+        }
+    }
+    return true;
+}
+
+bool
+PropDesc::checkSetter(JSContext *cx)
+{
+    if (hasSet_) {
+        if (!js_IsCallable(set_) && !set_.isUndefined()) {
+            JS_ReportErrorNumber(cx, js_GetErrorMessage, __null, JSMSG_BAD_GET_SET_FIELD,
+                                 js_setter_str);
+            return false;
+        }
+    }
+    return true;
+}
+
+static bool
+CheckArgCompartment(JSContext *cx, JSObject *obj, const Value &v,
+                    const char *methodname, const char *propname)
+{
+    if (v.isObject() && v.toObject().compartment() != obj->compartment()) {
+        JS_ReportErrorNumber(cx, js_GetErrorMessage, __null, JSMSG_DEBUG_COMPARTMENT_MISMATCH,
+                             methodname, propname);
+        return false;
+    }
+    return true;
+}
+
+
+
+
+
+bool
+PropDesc::unwrapDebuggerObjectsInto(JSContext *cx, Debugger *dbg, JSObject *obj,
+                                    PropDesc *unwrapped) const
+{
+    do { } while(0);
+
+    *unwrapped = *this;
+
+    if (unwrapped->hasValue()) {
+        if (!dbg->unwrapDebuggeeValue(cx, &unwrapped->value_) ||
+            !CheckArgCompartment(cx, obj, unwrapped->value_, "defineProperty", "value"))
+        {
+            return false;
+        }
+    }
+
+    if (unwrapped->hasGet()) {
+        if (!dbg->unwrapDebuggeeValue(cx, &unwrapped->get_) ||
+            !CheckArgCompartment(cx, obj, unwrapped->get_, "defineProperty", "get"))
+        {
+            return false;
+        }
+    }
+
+    if (unwrapped->hasSet()) {
+        if (!dbg->unwrapDebuggeeValue(cx, &unwrapped->set_) ||
+            !CheckArgCompartment(cx, obj, unwrapped->set_, "defineProperty", "set"))
+        {
+            return false;
+        }
+    }
+
+    return true;
+}
+
+
+
+
+
+
+bool
+PropDesc::wrapInto(JSContext *cx, JSObject *obj, const jsid &id, jsid *wrappedId,
+                   PropDesc *desc) const
+{
+    do { } while(0);
+
+    JSCompartment *comp = cx->compartment;
+
+    *wrappedId = id;
+    if (!comp->wrapId(cx, wrappedId))
+        return false;
+
+    *desc = *this;
+    if (!comp->wrap(cx, &desc->value_))
+        return false;
+    if (!comp->wrap(cx, &desc->get_))
+        return false;
+    if (!comp->wrap(cx, &desc->set_))
+        return false;
+    return !obj->isProxy() || desc->makeObject(cx);
+}
+
+static ObjectElements emptyElementsHeader(0, 0);
+
+
+HeapSlot *js::emptyObjectElements =
+    reinterpret_cast<HeapSlot *>(uintptr_t(&emptyElementsHeader) + sizeof(ObjectElements));
+# 217 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.cpp"
+void
+js::ObjectImpl::initSlotRange(uint32_t start, const Value *vector, uint32_t length)
+{
+    JSCompartment *comp = compartment();
+    HeapSlot *fixedStart, *fixedEnd, *slotsStart, *slotsEnd;
+    getSlotRange(start, length, &fixedStart, &fixedEnd, &slotsStart, &slotsEnd);
+    for (HeapSlot *sp = fixedStart; sp < fixedEnd; sp++)
+        sp->init(comp, this->asObjectPtr(), start++, *vector++);
+    for (HeapSlot *sp = slotsStart; sp < slotsEnd; sp++)
+        sp->init(comp, this->asObjectPtr(), start++, *vector++);
+}
+
+void
+js::ObjectImpl::copySlotRange(uint32_t start, const Value *vector, uint32_t length)
+{
+    JSCompartment *comp = compartment();
+    HeapSlot *fixedStart, *fixedEnd, *slotsStart, *slotsEnd;
+    getSlotRange(start, length, &fixedStart, &fixedEnd, &slotsStart, &slotsEnd);
+    for (HeapSlot *sp = fixedStart; sp < fixedEnd; sp++)
+        sp->set(comp, this->asObjectPtr(), start++, *vector++);
+    for (HeapSlot *sp = slotsStart; sp < slotsEnd; sp++)
+        sp->set(comp, this->asObjectPtr(), start++, *vector++);
+}
+# 260 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.cpp"
+const Shape *
+js::ObjectImpl::nativeLookup(JSContext *cx, jsid id)
+{
+    do { } while(0);
+    Shape **spp;
+    return Shape::search(cx, lastProperty(), id, &spp);
+}
+# 277 "/var/tmp/portage/www-client/firefox-15.0.1/work/mozilla-release/js/src/vm/ObjectImpl.cpp"
+void
+js::ObjectImpl::markChildren(JSTracer *trc)
+{
+    MarkTypeObject(trc, &type_, "type");
+
+    MarkShape(trc, &shape_, "shape");
+
+    Class *clasp = shape_->getObjectClass();
+    JSObject *obj = asObjectPtr();
+    if (clasp->trace)
+        clasp->trace(trc, obj);
+
+    if (shape_->isNative())
+        MarkObjectSlots(trc, obj, 0, obj->slotSpan());
+}
+
+bool
+DenseElementsHeader::getOwnElement(JSContext *cx, ObjectImpl *obj, uint32_t index, PropDesc *desc)
+{
+    do { } while(0);
+
+    uint32_t len = initializedLength();
+    if (index >= len) {
+        *desc = PropDesc::undefined();
+        return true;
+    }
+
+    HeapSlot &slot = obj->elements[index];
+    if (slot.isMagic(JS_ARRAY_HOLE)) {
+        *desc = PropDesc::undefined();
+        return true;
+    }
+
+    *desc = PropDesc(slot, PropDesc::Writable, PropDesc::Enumerable, PropDesc::Configurable);
+    return true;
+}
+
+bool
+SparseElementsHeader::getOwnElement(JSContext *cx, ObjectImpl *obj, uint32_t index, PropDesc *desc)
+{
+    do { } while(0);
+
+    __builtin_unreachable();
+    return false;
+}
+
+template<typename T>
+static Value
+ElementToValue(const T &t)
+{
+    return NumberValue(t);
+}
+
+template<>
+             Value
+ElementToValue(const uint8_clamped &u)
+{
+    return NumberValue(uint8_t(u));
+}
+
+template<typename T>
+bool
+TypedElementsHeader<T>::getOwnElement(JSContext *cx, ObjectImpl *obj, uint32_t index,
+                                      PropDesc *desc)
+{
+    do { } while(0);
+
+    if (index >= length()) {
+        *desc = PropDesc::undefined();
+        return true;
+    }
+
+    *desc = PropDesc(ElementToValue(getElement(index)), PropDesc::Writable,
+                     PropDesc::Enumerable, PropDesc::Configurable);
+    return false;
+}
+
+bool
+ArrayBufferElementsHeader::getOwnElement(JSContext *cx, ObjectImpl *obj, uint32_t index,
+                                         PropDesc *desc)
+{
+    do { } while(0);
+
+    __builtin_unreachable();
+    return false;
+}
+
+bool
+SparseElementsHeader::defineElement(JSContext *cx, ObjectImpl *obj, uint32_t index,
+                                    const PropDesc &desc, bool shouldThrow, bool *succeeded)
+{
+    do { } while(0);
+
+    __builtin_unreachable();
+    return false;
+}
+
+bool
+DenseElementsHeader::defineElement(JSContext *cx, ObjectImpl *obj, uint32_t index,
+                                   const PropDesc &desc, bool shouldThrow, bool *succeeded)
+{
+    do { } while(0);
+
+    do { } while (0);
+    do { } while (0);
+
+
+
+
+
+    if (desc.hasGet() || desc.hasSet() ||
+        (desc.hasEnumerable() && !desc.enumerable()) ||
+        (desc.hasConfigurable() && !desc.configurable()) ||
+        (desc.hasWritable() && !desc.writable()))
+    {
+        if (!obj->makeElementsSparse(cx))
+            return false;
+        SparseElementsHeader &elts = obj->elementsHeader().asSparseElements();
+        return elts.defineElement(cx, obj, index, desc, shouldThrow, succeeded);
+    }
+
+
+    uint32_t initLen = initializedLength();
+    if (index < initLen) {
+        HeapSlot &slot = obj->elements[index];
+        if (!slot.isMagic(JS_ARRAY_HOLE)) {
+
+
+
+
+
+        }
+    }
+
+
+
+
+
+    if (!obj->isExtensible()) {
+        *succeeded = false;
+        if (!shouldThrow)
+            return true;
+        ((void)(js_ReportValueErrorFlags(cx, 0x0, JSMSG_OBJECT_NOT_EXTENSIBLE, 0, ObjectValue(*obj), __null, __null, __null)))
+
+
+                                                                    ;
+        return false;
+    }
+
+
+    ObjectImpl::DenseElementsResult res = obj->ensureDenseElementsInitialized(cx, index, 0);
+
+
+    if (res == ObjectImpl::Failure)
+        return false;
+
+
+    if (res == ObjectImpl::ConvertToSparse) {
+        if (!obj->makeElementsSparse(cx))
+            return false;
+        SparseElementsHeader &elts = obj->elementsHeader().asSparseElements();
+        return elts.defineElement(cx, obj, index, desc, shouldThrow, succeeded);
+    }
+
+
+    do { } while(0);
+    obj->elements[index].set(obj->asObjectPtr(), index, desc.value());
+    *succeeded = true;
+    return true;
+}
+
+static JSObject *
+ArrayBufferDelegate(JSContext *cx, ObjectImpl *obj)
+{
+    do { } while(0);
+    if (obj->getPrivate())
+        return static_cast<JSObject *>(obj->getPrivate());
+    JSObject *delegate = NewObjectWithGivenProto(cx, &ObjectClass, obj->getProto(), __null);
+    obj->setPrivate(delegate);
+    return delegate;
+}
+
+template <typename T>
+bool
+TypedElementsHeader<T>::defineElement(JSContext *cx, ObjectImpl *obj,
+                                      uint32_t index, const PropDesc &desc, bool shouldThrow,
+                                      bool *succeeded)
+{
+
+    *succeeded = false;
+    js_ReportValueErrorFlags(cx, 0x0, JSMSG_OBJECT_NOT_EXTENSIBLE,
+                             0,
+                             ObjectValue(*obj),
+                             __null, __null, __null);
+    return false;
+}
+
+bool
+ArrayBufferElementsHeader::defineElement(JSContext *cx, ObjectImpl *obj,
+                                         uint32_t index, const PropDesc &desc, bool shouldThrow,
+                                         bool *succeeded)
+{
+    do { } while(0);
+
+    JSObject *delegate = ArrayBufferDelegate(cx, obj);
+    if (!delegate)
+        return false;
+    return DefineElement(cx, delegate, index, desc, shouldThrow, succeeded);
+}
+
+bool
+js::GetOwnElement(JSContext *cx, ObjectImpl *obj, uint32_t index, PropDesc *desc)
+{
+    ElementsHeader &header = obj->elementsHeader();
+    switch (header.kind()) {
+      case DenseElements:
+        return header.asDenseElements().getOwnElement(cx, obj, index, desc);
+      case SparseElements:
+        return header.asSparseElements().getOwnElement(cx, obj, index, desc);
+      case Uint8Elements:
+        return header.asUint8Elements().getOwnElement(cx, obj, index, desc);
+      case Int8Elements:
+        return header.asInt8Elements().getOwnElement(cx, obj, index, desc);
+      case Uint16Elements:
+        return header.asUint16Elements().getOwnElement(cx, obj, index, desc);
+      case Int16Elements:
+        return header.asInt16Elements().getOwnElement(cx, obj, index, desc);
+      case Uint32Elements:
+        return header.asUint32Elements().getOwnElement(cx, obj, index, desc);
+      case Int32Elements:
+        return header.asInt32Elements().getOwnElement(cx, obj, index, desc);
+      case Uint8ClampedElements:
+        return header.asUint8ClampedElements().getOwnElement(cx, obj, index, desc);
+      case Float32Elements:
+        return header.asFloat32Elements().getOwnElement(cx, obj, index, desc);
+      case Float64Elements:
+        return header.asFloat64Elements().getOwnElement(cx, obj, index, desc);
+      case ArrayBufferElements:
+        return header.asArrayBufferElements().getOwnElement(cx, obj, index, desc);
+    }
+
+    __builtin_unreachable();
+    return false;
+}
+
+bool
+js::GetElement(JSContext *cx, ObjectImpl *obj, ObjectImpl *receiver, uint32_t index,
+               Value *vp)
+{
+    __builtin_unreachable();
+
+    do {
+        do { } while(0);
+
+        if (static_cast<JSObject *>(obj)->isProxy()) {
+            __builtin_unreachable();
+            return false;
+        }
+
+        PropDesc desc;
+        if (!GetOwnElement(cx, obj, index, &desc))
+            return false;
+
+
+        if (desc.isUndefined()) {
+            obj = obj->getProto();
+            if (obj)
+                continue;
+
+            vp->setUndefined();
+            return true;
+        }
+
+
+        if (desc.isDataDescriptor()) {
+            *vp = desc.value();
+            return true;
+        }
+
+
+        if (desc.isAccessorDescriptor()) {
+            Value get = desc.getterValue();
+            if (get.isUndefined()) {
+                vp->setUndefined();
+                return true;
+            }
+
+            InvokeArgsGuard args;
+            if (!cx->stack.pushInvokeArgs(cx, 0, &args))
+                return false;
+
+
+            args.calleev() = get;
+            args.thisv() = ObjectValue(*receiver);
+
+            bool ok = Invoke(cx, args);
+            *vp = args.rval();
+            return ok;
+        }
+
+
+        __builtin_unreachable();
+        return false;
+    } while (false);
+}
+
+bool
+js::HasElement(JSContext *cx, ObjectImpl *obj, uint32_t index, bool *found)
+{
+    __builtin_unreachable();
+
+    do {
+        do { } while(0);
+
+        if (static_cast<JSObject *>(obj)->isProxy()) {
+            __builtin_unreachable();
+            return false;
+        }
+
+        PropDesc prop;
+        if (!GetOwnElement(cx, obj, index, &prop))
+            return false;
+
+        if (!prop.isUndefined()) {
+            *found = true;
+            return true;
+        }
+
+        obj = obj->getProto();
+        if (obj)
+            continue;
+
+        *found = false;
+        return true;
+    } while (false);
+}
+
+bool
+js::DefineElement(JSContext *cx, ObjectImpl *obj, uint32_t index, const PropDesc &desc,
+                  bool shouldThrow, bool *succeeded)
+{
+    __builtin_unreachable();
+
+    ElementsHeader &header = obj->elementsHeader();
+
+    switch (header.kind()) {
+      case DenseElements:
+        return header.asDenseElements().defineElement(cx, obj, index, desc, shouldThrow,
+                                                      succeeded);
+      case SparseElements:
+        return header.asSparseElements().defineElement(cx, obj, index, desc, shouldThrow,
+                                                       succeeded);
+      case Uint8Elements:
+        return header.asUint8Elements().defineElement(cx, obj, index, desc, shouldThrow,
+                                                      succeeded);
+      case Int8Elements:
+        return header.asInt8Elements().defineElement(cx, obj, index, desc, shouldThrow,
+                                                     succeeded);
+      case Uint16Elements:
+        return header.asUint16Elements().defineElement(cx, obj, index, desc, shouldThrow,
+                                                       succeeded);
+      case Int16Elements:
+        return header.asInt16Elements().defineElement(cx, obj, index, desc, shouldThrow,
+                                                      succeeded);
+      case Uint32Elements:
+        return header.asUint32Elements().defineElement(cx, obj, index, desc, shouldThrow,
+                                                       succeeded);
+      case Int32Elements:
+        return header.asInt32Elements().defineElement(cx, obj, index, desc, shouldThrow,
+                                                      succeeded);
+      case Uint8ClampedElements:
+        return header.asUint8ClampedElements().defineElement(cx, obj, index, desc, shouldThrow,
+                                                             succeeded);
+      case Float32Elements:
+        return header.asFloat32Elements().defineElement(cx, obj, index, desc, shouldThrow,
+                                                        succeeded);
+      case Float64Elements:
+        return header.asFloat64Elements().defineElement(cx, obj, index, desc, shouldThrow,
+                                                        succeeded);
+      case ArrayBufferElements:
+        return header.asArrayBufferElements().defineElement(cx, obj, index, desc, shouldThrow,
+                                                            succeeded);
+    }
+
+    __builtin_unreachable();
+    return false;
+}
+
+bool
+SparseElementsHeader::setElement(JSContext *cx, ObjectImpl *obj, ObjectImpl *receiver,
+                                 uint32_t index, const Value &v, bool *succeeded)
+{
+    do { } while(0);
+
+    __builtin_unreachable();
+    return false;
+}
+
+bool
+DenseElementsHeader::setElement(JSContext *cx, ObjectImpl *obj, ObjectImpl *receiver,
+                                uint32_t index, const Value &v, bool *succeeded)
+{
+    do { } while(0);
+
+    __builtin_unreachable();
+    return false;
+}
+
+template <typename T>
+bool
+TypedElementsHeader<T>::setElement(JSContext *cx, ObjectImpl *obj, ObjectImpl *receiver,
+                                   uint32_t index, const Value &v, bool *succeeded)
+{
+    do { } while(0);
+
+    uint32_t len = length();
+    if (index >= len) {
+
+
+
+
+        *succeeded = true;
+        return true;
+    }
+
+
+    double d;
+    if (v.isNumber()) {
+        d = v.toNumber();
+    } else if (v.isNull()) {
+        d = 0.0;
+    } else if (v.isPrimitive()) {
+        if (v.isString()) {
+            if (!ToNumber(cx, v, &d))
+                return false;
+        } else if (v.isUndefined()) {
+            d = js_NaN;
+        } else {
+            d = double(v.toBoolean());
+        }
+    } else {
+
+        d = js_NaN;
+    }
+
+    assign(index, d);
+    *succeeded = true;
+    return true;
+}
+
+bool
+ArrayBufferElementsHeader::setElement(JSContext *cx, ObjectImpl *obj, ObjectImpl *receiver,
+                                      uint32_t index, const Value &v, bool *succeeded)
+{
+    do { } while(0);
+
+    JSObject *delegate = ArrayBufferDelegate(cx, obj);
+    if (!delegate)
+        return false;
+    return SetElement(cx, obj, receiver, index, v, succeeded);
+}
+
+bool
+js::SetElement(JSContext *cx, ObjectImpl *obj, ObjectImpl *receiver, uint32_t index,
+               const Value &v, bool *succeeded)
+{
+    __builtin_unreachable();
+
+    do {
+        do { } while(0);
+
+        if (static_cast<JSObject *>(obj)->isProxy()) {
+            __builtin_unreachable();
+            return false;
+        }
+
+        PropDesc ownDesc;
+        if (!GetOwnElement(cx, obj, index, &ownDesc))
+            return false;
+
+        if (!ownDesc.isUndefined()) {
+            if (ownDesc.isDataDescriptor()) {
+                if (!ownDesc.writable()) {
+                    *succeeded = false;
+                    return true;
+                }
+
+                if (receiver == obj) {
+                    PropDesc updateDesc = PropDesc::valueOnly(v);
+                    return DefineElement(cx, receiver, index, updateDesc, false, succeeded);
+                }
+
+                PropDesc newDesc;
+                return DefineElement(cx, receiver, index, newDesc, false, succeeded);
+            }
+
+            if (ownDesc.isAccessorDescriptor()) {
+                Value setter = ownDesc.setterValue();
+                if (setter.isUndefined()) {
+                    *succeeded = false;
+                    return true;
+                }
+
+                InvokeArgsGuard args;
+                if (!cx->stack.pushInvokeArgs(cx, 1, &args))
+                    return false;
+
+
+                args.calleev() = setter;
+                args.thisv() = ObjectValue(*receiver);
+                args[0] = v;
+
+                *succeeded = true;
+                return Invoke(cx, args);
+            }
+
+            __builtin_unreachable();
+            return false;
+        }
+
+        obj = obj->getProto();
+        if (obj)
+            continue;
+
+        PropDesc newDesc(v, PropDesc::Writable, PropDesc::Enumerable, PropDesc::Configurable);
+        return DefineElement(cx, receiver, index, newDesc, false, succeeded);
+    } while (false);
+}