├── .buckconfig ├── .buckversion ├── .gitignore ├── AndroidManifest.xml ├── BUCK ├── BUILD_DEFS ├── LICENSE ├── PATENTS ├── README.md ├── android-jsc.pom ├── fetch_sources.sh ├── icu └── BUCK ├── install.sh └── jsc ├── BUCK └── extra_headers ├── LLIntAssembly.h ├── collation_hack.h └── langinfo.h /.buckconfig: -------------------------------------------------------------------------------- 1 | [buildfile] 2 | includes = //BUILD_DEFS 3 | [ndk] 4 | ndk_version = r10c 5 | cppflags = \ 6 | -std=gnu11 \ 7 | -Wall \ 8 | -Werror \ 9 | -g3 \ 10 | -DNEBUG \ 11 | -fstack-protector 12 | cflags = \ 13 | -std=gnu11 \ 14 | -Wall \ 15 | -Werror \ 16 | -g3 \ 17 | -Wa,--noexecstack \ 18 | -fstack-protector \ 19 | -ffunction-sections \ 20 | -funwind-tables \ 21 | -fomit-frame-pointer \ 22 | -fno-strict-aliasing 23 | cxxppflags = \ 24 | -std=gnu++11 \ 25 | -Wall \ 26 | -Werror \ 27 | -Wno-literal-suffix \ 28 | -g3 \ 29 | -DNEBUG \ 30 | -fstack-protector \ 31 | -fno-exceptions \ 32 | -fno-rtti 33 | cxxflags = \ 34 | -std=gnu++11 \ 35 | -Wall \ 36 | -Werror \ 37 | -g3 \ 38 | -Wa,--noexecstack \ 39 | -fstack-protector \ 40 | -ffunction-sections \ 41 | -funwind-tables \ 42 | -fomit-frame-pointer \ 43 | -fno-strict-aliasing \ 44 | -fno-exceptions \ 45 | -fno-rtti 46 | ldflags = \ 47 | -Wl,--build-id \ 48 | -Wl,-z,noexecstack \ 49 | -Wl,--gc-sections \ 50 | -Wl,-z,defs \ 51 | -Wl,-z,nocopyreloc \ 52 | -Wl,--as-needed 53 | arm_cppflags = \ 54 | -mthumb \ 55 | -Os 56 | arm_cflags = \ 57 | -mtune=xscale \ 58 | -msoft-float \ 59 | -mthumb \ 60 | -Os 61 | arm_cxxppflags = \ 62 | -mthumb \ 63 | -Os 64 | arm_cxxflags = \ 65 | -mtune=xscale \ 66 | -msoft-float \ 67 | -mthumb \ 68 | -Os 69 | arm_ldflags = \ 70 | -Wl,--fix-cortex-a8 71 | armv7_cppflags = \ 72 | -mfloat-abi=softfp \ 73 | -mthumb \ 74 | -Os 75 | armv7_cflags = \ 76 | -finline-limit=64 \ 77 | -mfpu=vfpv3-d16 \ 78 | -mfloat-abi=softfp \ 79 | -mthumb \ 80 | -Os 81 | armv7_cxxppflags = \ 82 | -mfloat-abi=softfp \ 83 | -mthumb \ 84 | -Os 85 | armv7_cxxflags = \ 86 | -finline-limit=64 \ 87 | -mfpu=vfpv3-d16 \ 88 | -mfloat-abi=softfp \ 89 | -mthumb \ 90 | -Os 91 | x86_cppflags = \ 92 | -O2 93 | x86_cflags = \ 94 | -funswitch-loops \ 95 | -finline-limit=300 \ 96 | -O2 97 | x86_cxxppflags = \ 98 | -O2 99 | x86_cxxflags = \ 100 | -funswitch-loops \ 101 | -finline-limit=300 \ 102 | -O2 103 | [cxx] 104 | preprocess_mode = piped 105 | cppflags = \ 106 | -std=gnu11 \ 107 | -pthread \ 108 | -O0 \ 109 | -g3 110 | cflags = \ 111 | -std=gnu11 \ 112 | -pthread \ 113 | -O0 \ 114 | -g3 115 | cxxppflags = \ 116 | -std=gnu++11 \ 117 | -pthread \ 118 | -O0 \ 119 | -g3 120 | cxxflags = \ 121 | -std=gnu++11 \ 122 | -pthread \ 123 | -O0 \ 124 | -g3 125 | -------------------------------------------------------------------------------- /.buckversion: -------------------------------------------------------------------------------- 1 | 993d54556f28ea8890a1b2864b8e3c532646145c 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | buck-out/ 2 | .buckd/ 3 | icu 4 | !icu/BUCK 5 | jsc 6 | !jsc/BUCK 7 | !jsc/extra_headers 8 | *.gz 9 | *.bz2 10 | -------------------------------------------------------------------------------- /AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /BUCK: -------------------------------------------------------------------------------- 1 | # Copyright 2004-present Facebook. All Rights Reserved. 2 | 3 | android_aar( 4 | name = 'android-jsc', 5 | manifest_skeleton = 'AndroidManifest.xml', 6 | deps = [ 7 | '//jsc:jsc', 8 | ], 9 | ) 10 | -------------------------------------------------------------------------------- /BUILD_DEFS: -------------------------------------------------------------------------------- 1 | # -*- mode: python -*- 2 | 3 | import os 4 | 5 | original_glob = glob 6 | def glob(*args, **kwargs): 7 | result = original_glob(*args, **kwargs) 8 | result.sort() 9 | return result 10 | 11 | def subdir_glob(glob_specs): 12 | """ 13 | Given a list of tuples, the form of (relative-sub-directory, glob-pattern), 14 | return a dict of sub-directory relative paths to full paths. Useful for 15 | defining header maps for C/C++ libraries which should be relative the given 16 | sub-directory. 17 | """ 18 | 19 | results = {} 20 | 21 | for dirpath, glob_pattern in glob_specs: 22 | files = glob([os.path.join(dirpath, glob_pattern)]) 23 | for f in files: 24 | if dirpath: 25 | results[f[len(dirpath) + 1:]] = f 26 | else: 27 | results[f] = f 28 | 29 | return results 30 | 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD License 2 | 3 | For JavaScriptCore build scripts for Android software 4 | 5 | Copyright (c) 2015-present, Facebook, Inc. All rights reserved. 6 | 7 | Redistribution and use in source and binary forms, with or without modification, 8 | are permitted provided that the following conditions are met: 9 | 10 | * Redistributions of source code must retain the above copyright notice, this 11 | list of conditions and the following disclaimer. 12 | 13 | * Redistributions in binary form must reproduce the above copyright notice, 14 | this list of conditions and the following disclaimer in the documentation 15 | and/or other materials provided with the distribution. 16 | 17 | * Neither the name Facebook nor the names of its contributors may be used to 18 | endorse or promote products derived from this software without specific 19 | prior written permission. 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 22 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 23 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 25 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 26 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 28 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | -------------------------------------------------------------------------------- /PATENTS: -------------------------------------------------------------------------------- 1 | Additional Grant of Patent Rights Version 2 2 | 3 | "Software" means the JavaScriptCore build scripts for Android software distributed by Facebook, Inc. 4 | 5 | Facebook, Inc. ("Facebook") hereby grants to each recipient of the Software 6 | ("you") a perpetual, worldwide, royalty-free, non-exclusive, irrevocable 7 | (subject to the termination provision below) license under any Necessary 8 | Claims, to make, have made, use, sell, offer to sell, import, and otherwise 9 | transfer the Software. For avoidance of doubt, no license is granted under 10 | Facebook’s rights in any patent claims that are infringed by (i) modifications 11 | to the Software made by you or any third party or (ii) the Software in 12 | combination with any software or other technology. 13 | 14 | The license granted hereunder will terminate, automatically and without notice, 15 | if you (or any of your subsidiaries, corporate affiliates or agents) initiate 16 | directly or indirectly, or take a direct financial interest in, any Patent 17 | Assertion: (i) against Facebook or any of its subsidiaries or corporate 18 | affiliates, (ii) against any party if such Patent Assertion arises in whole or 19 | in part from any software, technology, product or service of Facebook or any of 20 | its subsidiaries or corporate affiliates, or (iii) against any party relating 21 | to the Software. Notwithstanding the foregoing, if Facebook or any of its 22 | subsidiaries or corporate affiliates files a lawsuit alleging patent 23 | infringement against you in the first instance, and you respond by filing a 24 | patent infringement counterclaim in that lawsuit against that party that is 25 | unrelated to the Software, the license granted hereunder will not terminate 26 | under section (i) of this paragraph due to such counterclaim. 27 | 28 | A "Necessary Claim" is a claim of a patent owned by Facebook that is 29 | necessarily infringed by the Software standing alone. 30 | 31 | A "Patent Assertion" is any lawsuit or other action alleging direct, indirect, 32 | or contributory infringement or inducement to infringe any patent, including a 33 | cross-claim or counterclaim. 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JSC build scripts for Android 2 | 3 | This repository contains scripts for building the JSC library for Android. The build scripts bundle JSC as a shared library into an [Android AAR](http://tools.android.com/tech-docs/new-build-system/aar-format) file, which makes it easy to use it in Android projects built with [Buck](https://buckbuild.com) or [Gradle](https://gradle.org). 4 | 5 | ## Requirements 6 | * OS X or Linux - the build process have not been tested on other platforms. 7 | * Android dev environment setup ([SDK](https://developer.android.com/sdk/installing/index.html?pkg=tools) + [NDK](https://developer.android.com/ndk/guides/setup.html)) 8 | * [Buck](https://buckbuild.com) - configured to work with Android (see [Quick Start](https://buckbuild.com/setup/quick_start.html) for instructions) 9 | * [Maven](https://maven.apache.org/download.cgi) (3.2+) 10 | * Used command line utilities: [ruby](https://www.ruby-lang.org/) (2.0+), zip, curl 11 | 12 | ## Build instructions 13 | 14 | **1. Use the following script to pull in sources for [JSC](https://www.webkit.org) and [ICU](http://site.icu-project.org)** 15 | ```bash 16 | ./fetch_sources.sh 17 | ``` 18 | 19 | **2. Build the AAR with Buck (this may take a while)** 20 | ```bash 21 | buck build :android-jsc 22 | ``` 23 | As build step may take a while, consider using `--num-threads` or `--load-limit` options of `buck` command. This may slow the build process down, but should let you use your computer with less hiccups while the build is running. 24 | 25 | **3. Install the AAR in you local maven repository:** 26 | ```bash 27 | ./install.sh 28 | ``` 29 | 30 | ## Use the android-jsc AAR 31 | 32 | After installation, the android-jsc AAR file should be accessible through maven: 33 | 34 | **1. Using BUCK** 35 | ```python 36 | android_prebuilt_aar( 37 | name = 'android-jsc', 38 | aar = ':android-jsc-aar', 39 | ) 40 | 41 | remote_file( 42 | name = 'android-jsc-aar', 43 | url = 'mvn:org.webkit:android-jsc:aar:r174650', 44 | sha1 = '880cedd93f43e0fc841f01f2fa185a63d9230f85', 45 | ) 46 | ``` 47 | 48 | **2. Using gradle** 49 | ```groovy 50 | compile 'org.webkit:android-jsc:r174650' 51 | ``` 52 | 53 | The resulting AAR can be also located in your local maven repository (usually under `~/.m2/repository/org/webkit/android-jsc/`) 54 | -------------------------------------------------------------------------------- /android-jsc.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | org.webkit 6 | android-jsc 7 | r174650 8 | aar 9 | 10 | android-jsc 11 | JavaScriptCore library for android 12 | https://www.webkit.org 13 | 14 | 15 | 16 | BSD License 17 | https://raw.githubusercontent.com/facebook/android-jsc/master/LICENSE 18 | 19 | 20 | 21 | 22 | 23 | kmagiera 24 | Krzysztof Magiera 25 | https://github.com/kmagiera 26 | 27 | 28 | 29 | 30 | https://github.com/facebook/android-jsc.git 31 | https://github.com/facebook/android-jsc.git 32 | https://github.com/facebook/android-jsc 33 | 34 | 35 | -------------------------------------------------------------------------------- /fetch_sources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright 2004-present Facebook. All Rights Reserved. 4 | 5 | set -e 6 | 7 | cd "$(dirname "$0")" 8 | 9 | echo "Downloading ICU" 10 | curl -o icu4c.tar.gz https://android.googlesource.com/platform/external/icu/+archive/e25a54101b72d27b345934e1574aa314c1899969/icu4c/source.tar.gz 11 | 12 | echo "Extracting ICU" 13 | tar -zxf icu4c.tar.gz -C icu 14 | 15 | echo "Downloading JSC" 16 | curl -O https://builds-nightly.webkit.org/files/trunk/src/WebKit-r174650.tar.bz2 17 | 18 | echo "Extracting JSC" 19 | tar -jxf WebKit-r174650.tar.bz2 -C jsc --strip 2 WebKit-r174650/Source/JavaScriptCore WebKit-r174650/Source/WTF 20 | 21 | -------------------------------------------------------------------------------- /icu/BUCK: -------------------------------------------------------------------------------- 1 | # Copyright 2004-present Facebook. All Rights Reserved. 2 | 3 | SOURCE_FILES = [ 4 | 'common/cmemory.c', 5 | 'common/cstring.c', 6 | 'common/cwchar.c', 7 | 'common/locmap.c', 8 | 'common/loadednormalizer2impl.cpp', 9 | 'common/punycode.cpp', 10 | 'common/putil.cpp', 11 | 'common/sharedobject.cpp', 12 | 'common/simplepatternformatter.cpp', 13 | 'common/uarrsort.c', 14 | 'common/ubidi.c', 15 | 'common/ubidiln.c', 16 | 'common/ubidi_props.c', 17 | 'common/ubidiwrt.c', 18 | 'common/ucase.cpp', 19 | 'common/ucasemap.cpp', 20 | 'common/ucat.c', 21 | 'common/uchar.c', 22 | 'common/ucln_cmn.cpp', 23 | 'common/ucmndata.c', 24 | 'common/ucnv2022.cpp', 25 | 'common/ucnv_bld.cpp', 26 | 'common/ucnvbocu.cpp', 27 | 'common/ucnv.c', 28 | 'common/ucnv_cb.c', 29 | 'common/ucnv_cnv.c', 30 | 'common/ucnvdisp.c', 31 | 'common/ucnv_err.c', 32 | 'common/ucnv_ext.cpp', 33 | 'common/ucnvhz.c', 34 | 'common/ucnv_io.cpp', 35 | 'common/ucnvisci.c', 36 | 'common/ucnvlat1.c', 37 | 'common/ucnv_lmb.c', 38 | 'common/ucnvmbcs.cpp', 39 | 'common/ucnvscsu.c', 40 | 'common/ucnv_set.c', 41 | 'common/ucnv_u16.c', 42 | 'common/ucnv_u32.c', 43 | 'common/ucnv_u7.c', 44 | 'common/ucnv_u8.c', 45 | 'common/udatamem.c', 46 | 'common/udataswp.c', 47 | 'common/uenum.c', 48 | 'common/uhash.c', 49 | 'common/uinit.cpp', 50 | 'common/uinvchar.c', 51 | 'common/uloc.cpp', 52 | 'common/umapfile.c', 53 | 'common/umath.c', 54 | 'common/umutex.cpp', 55 | 'common/unames.cpp', 56 | 'common/uresbund.cpp', 57 | 'common/ures_cnv.c', 58 | 'common/uresdata.c', 59 | 'common/usc_impl.c', 60 | 'common/uscript.c', 61 | 'common/uscript_props.cpp', 62 | 'common/ushape.cpp', 63 | 'common/ustrcase.cpp', 64 | 'common/ustr_cnv.cpp', 65 | 'common/ustrfmt.c', 66 | 'common/ustring.cpp', 67 | 'common/ustrtrns.cpp', 68 | 'common/ustr_wcs.cpp', 69 | 'common/utf_impl.c', 70 | 'common/utrace.c', 71 | 'common/utrie.cpp', 72 | 'common/utypes.c', 73 | 'common/wintz.c', 74 | 'common/utrie2_builder.cpp', 75 | 'common/icuplug.cpp', 76 | 'common/propsvec.c', 77 | 'common/ulist.c', 78 | 'common/ulistformatter.cpp', 79 | 'common/uloc_keytype.cpp', 80 | 'common/uloc_tag.c', 81 | 'common/ucnv_ct.c', 82 | 'common/bmpset.cpp', 83 | 'common/unisetspan.cpp', 84 | 'common/brkeng.cpp', 85 | 'common/brkiter.cpp', 86 | 'common/caniter.cpp', 87 | 'common/chariter.cpp', 88 | 'common/dictbe.cpp', 89 | 'common/locbased.cpp', 90 | 'common/locid.cpp', 91 | 'common/locutil.cpp', 92 | 'common/normlzr.cpp', 93 | 'common/parsepos.cpp', 94 | 'common/propname.cpp', 95 | 'common/rbbi.cpp', 96 | 'common/rbbidata.cpp', 97 | 'common/rbbinode.cpp', 98 | 'common/rbbirb.cpp', 99 | 'common/rbbiscan.cpp', 100 | 'common/rbbisetb.cpp', 101 | 'common/rbbistbl.cpp', 102 | 'common/rbbitblb.cpp', 103 | 'common/resbund_cnv.cpp', 104 | 'common/resbund.cpp', 105 | 'common/ruleiter.cpp', 106 | 'common/schriter.cpp', 107 | 'common/serv.cpp', 108 | 'common/servlk.cpp', 109 | 'common/servlkf.cpp', 110 | 'common/servls.cpp', 111 | 'common/servnotf.cpp', 112 | 'common/servrbf.cpp', 113 | 'common/servslkf.cpp', 114 | 'common/ubrk.cpp', 115 | 'common/uchriter.cpp', 116 | 'common/uhash_us.cpp', 117 | 'common/uidna.cpp', 118 | 'common/uiter.cpp', 119 | 'common/unifiedcache.cpp', 120 | 'common/unifilt.cpp', 121 | 'common/unifunct.cpp', 122 | 'common/uniset.cpp', 123 | 'common/uniset_props.cpp', 124 | 'common/unistr_case.cpp', 125 | 'common/unistr_cnv.cpp', 126 | 'common/unistr.cpp', 127 | 'common/unistr_props.cpp', 128 | 'common/unormcmp.cpp', 129 | 'common/unorm.cpp', 130 | 'common/uobject.cpp', 131 | 'common/uset.cpp', 132 | 'common/usetiter.cpp', 133 | 'common/uset_props.cpp', 134 | 'common/usprep.cpp', 135 | 'common/ustack.cpp', 136 | 'common/ustrenum.cpp', 137 | 'common/utext.cpp', 138 | 'common/util.cpp', 139 | 'common/util_props.cpp', 140 | 'common/uvector.cpp', 141 | 'common/uvectr32.cpp', 142 | 'common/errorcode.cpp', 143 | 'common/bytestream.cpp', 144 | 'common/stringpiece.cpp', 145 | 'common/dtintrv.cpp', 146 | 'common/ucnvsel.cpp', 147 | 'common/uvectr64.cpp', 148 | 'common/locavailable.cpp', 149 | 'common/locdispnames.cpp', 150 | 'common/loclikely.cpp', 151 | 'common/locresdata.cpp', 152 | 'common/normalizer2impl.cpp', 153 | 'common/normalizer2.cpp', 154 | 'common/filterednormalizer2.cpp', 155 | 'common/filteredbrk.cpp', 156 | 'common/ucol_swp.cpp', 157 | 'common/uprops.cpp', 158 | 'common/utrie2.cpp', 159 | 'common/charstr.cpp', 160 | 'common/uts46.cpp', 161 | 'common/udata.cpp', 162 | 'common/appendable.cpp', 163 | 'common/bytestrie.cpp', 164 | 'common/bytestriebuilder.cpp', 165 | 'common/bytestrieiterator.cpp', 166 | 'common/messagepattern.cpp', 167 | 'common/patternprops.cpp', 168 | 'common/stringtriebuilder.cpp', 169 | 'common/ucharstrie.cpp', 170 | 'common/ucharstriebuilder.cpp', 171 | 'common/ucharstrieiterator.cpp', 172 | 'common/dictionarydata.cpp', 173 | 'common/ustrcase_locale.cpp', 174 | 'common/unistr_titlecase_brkiter.cpp', 175 | 'common/uniset_closure.cpp', 176 | 'common/ucasemap_titlecase_brkiter.cpp', 177 | 'common/ustr_titlecase_brkiter.cpp', 178 | 'common/unistr_case_locale.cpp', 179 | 'common/listformatter.cpp', 180 | 'stubdata/stubdata.c', 181 | ] 182 | 183 | cxx_library( 184 | name = 'common', 185 | preprocessor_flags = [ 186 | '-D_REENTRANT', 187 | '-DU_COMMON_IMPLEMENTATION', 188 | '-DPIC', 189 | ], 190 | compiler_flags = [ 191 | '-O3', 192 | '-fvisibility=hidden', 193 | '-Wno-unused-parameter', 194 | '-Wno-missing-field-initializers', 195 | '-Wno-sign-compare', 196 | '-Wno-deprecated-declarations', 197 | '-Wno-unused-function', 198 | '-fPIC', 199 | '-Os', 200 | ], 201 | header_namespace='', 202 | linker_flags = [ 203 | ], 204 | headers = subdir_glob([ 205 | ('common', '*.h'), 206 | ('common', 'unicode/*.h'), 207 | ]), 208 | exported_headers = subdir_glob([ 209 | ('common', 'unicode/*.h'), 210 | ]), 211 | srcs = map(lambda x: (x, ['-frtti']) if x.endswith('.cpp') else x, SOURCE_FILES), 212 | visibility = [ 213 | 'PUBLIC', 214 | ], 215 | ) 216 | 217 | cxx_library( 218 | name = 'i18n', 219 | preprocessor_flags = [ 220 | '-D_REENTRANT', 221 | '-DPIC', 222 | '-DU_I18N_IMPLEMENTATION', 223 | ], 224 | compiler_flags = [ 225 | '-fvisibility=hidden', 226 | '-fPIC', 227 | '-Os', 228 | '-Wno-deprecated-declarations', 229 | ], 230 | header_namespace='', 231 | linker_flags = [ 232 | ], 233 | headers = subdir_glob([ 234 | ('common', '*.h'), 235 | ('common', 'unicode/*.h'), 236 | ('i18n', '*.h'), 237 | ('i18n', 'unicode/*.h'), 238 | ]), 239 | exported_headers = subdir_glob([ 240 | ('i18n', 'unicode/*.h'), 241 | ]), 242 | visibility = [ 243 | 'PUBLIC', 244 | ], 245 | ) 246 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Copyright 2004-present Facebook. All Rights Reserved. 4 | 5 | set -e 6 | 7 | cd "$(dirname "$0")" 8 | 9 | AAR_PATH=buck-out/gen/android-jsc.aar 10 | 11 | # Make sure that AAR is build, call buck 12 | echo "Building JSC & ICU for Android" 13 | buck build :android-jsc 14 | 15 | # Remove gnustl_shared binaries from AAR. This is due to gradle inability to 16 | # handle native libraries with conflicting names coming from multiple 17 | # dependecies. See https://code.google.com/p/android/issues/detail?id=158630 18 | zip -d $AAR_PATH '**/libgnustl_shared.so' 19 | 20 | echo "Installing JSC & ICU in local maven repo" 21 | mvn install:install-file -Dfile=$AAR_PATH -DpomFile=android-jsc.pom 22 | -------------------------------------------------------------------------------- /jsc/BUCK: -------------------------------------------------------------------------------- 1 | # Copyright 2004-present Facebook. All Rights Reserved. 2 | 3 | import os 4 | 5 | SUPPORTED_PLATFORMS = '^android-(armv7|x86)$' 6 | 7 | def unpack_rule(source, from_rule): 8 | genrule( 9 | name = source, 10 | out = source, 11 | cmd = 'unzip -c -q $(location {0}) {1} > $OUT'.format(from_rule, source), 12 | ) 13 | 14 | def add_gen_source(source): 15 | _, ext = os.path.splitext(source) 16 | if ext == '.h': 17 | JSC_HEADERS[source] = ':' + source 18 | else: 19 | JSC_SOURCES.append(':' + source) 20 | 21 | ###### END INSPECTOR SOURCES ###### 22 | 23 | WTF_EXPORTED_PREPROCESSOR_FLAGS = [ 24 | '-D_GLIBCXX_USE_C99_MATH=1', 25 | '-D__GXX_EXPERIMENTAL_CXX0X__', 26 | '-DENABLE_GLOBAL_FASTMALLOC_NEW=0', 27 | ] 28 | 29 | # Dirty hack, StdLibExtras.h assumes incorrectly that is_trivially_destructible 30 | # have been added in 4.8.1 version while it was added in 4.8.0. We emulate PATCH 31 | # version to be 1 so that StdLibExtra.h doesn't try to declare 32 | # is_trivially_destructible 33 | # Except from this single place JSC code doesn't check for 4.8.1 anywhere else 34 | WTF_EXPORTED_PREPROCESSOR_FLAGS.extend([ 35 | '-U__GNUC_PATCHLEVEL__', 36 | '-D__GNUC_PATCHLEVEL__=1', 37 | '-DPTHREAD_KEYS_MAX=1024', 38 | '-DINTPTR_MAX=LONG_MAX', 39 | '-Dlog2(x)=(log(x)/log(2.0))', 40 | ]) 41 | 42 | cxx_library( 43 | name = 'wtfassertions', 44 | force_static = True, 45 | supported_platforms_regex = SUPPORTED_PLATFORMS, 46 | exported_preprocessor_flags = WTF_EXPORTED_PREPROCESSOR_FLAGS, 47 | preprocessor_flags = [ 48 | '-DLOG_TAG="WTF"', 49 | '-U__linux__', 50 | ], 51 | header_namespace = '', 52 | headers = subdir_glob([ 53 | ('WTF', '*.h'), 54 | ('WTF/wtf', '*.h'), 55 | ]), 56 | exported_headers = subdir_glob([ 57 | ('WTF', 'wtf/**/*.h'), 58 | ('WTF', 'wtf/text/*.h'), 59 | ('extra_headers', 'langinfo.h'), 60 | ]), 61 | srcs = ['WTF/wtf/Assertions.cpp'], 62 | deps = [ 63 | '//icu:common', 64 | ], 65 | ) 66 | 67 | cxx_library( 68 | name = 'wtf', 69 | soname = 'libwtf.so', 70 | force_static = True, 71 | supported_platforms_regex = SUPPORTED_PLATFORMS, 72 | exported_preprocessor_flags = WTF_EXPORTED_PREPROCESSOR_FLAGS, 73 | preprocessor_flags = [ 74 | '-DLOG_TAG="WTF"', 75 | 76 | # Disable icu collation and date formatting 77 | '-DUCONFIG_NO_COLLATION=1', 78 | '-DUCONFIG_NO_FORMATTING=1', 79 | ], 80 | header_namespace = '', 81 | headers = subdir_glob([ 82 | ('WTF', '*.h'), 83 | ('WTF/wtf', '*.h'), 84 | ]), 85 | exported_headers = subdir_glob([ 86 | ('WTF', 'wtf/**/*.h'), 87 | ('WTF', 'wtf/text/*.h'), 88 | ]), 89 | srcs = ['WTF/wtf/{0}'.format(f) for f in [ 90 | 'Atomics.cpp', 91 | 'BitVector.cpp', 92 | 'CompilationThread.cpp', 93 | 'CryptographicallyRandomNumber.cpp', 94 | 'CryptographicUtilities.cpp', 95 | 'CurrentTime.cpp', 96 | 'DataLog.cpp', 97 | 'DateMath.cpp', 98 | 'DecimalNumber.cpp', 99 | 'dtoa.cpp', 100 | 'dtoa/bignum-dtoa.cc', 101 | 'dtoa/bignum.cc', 102 | 'dtoa/cached-powers.cc', 103 | 'dtoa/diy-fp.cc', 104 | 'dtoa/double-conversion.cc', 105 | 'dtoa/fast-dtoa.cc', 106 | 'dtoa/fixed-dtoa.cc', 107 | 'dtoa/strtod.cc', 108 | 'FastBitVector.cpp', 109 | 'FastMalloc.cpp', 110 | 'FilePrintStream.cpp', 111 | 'FunctionDispatcher.cpp', 112 | 'gobject/GlibUtilities.cpp', 113 | 'gobject/GMainLoopSource.cpp', 114 | 'gobject/GRefPtr.cpp', 115 | 'gobject/GThreadSafeMainLoopSource.cpp', 116 | 'GregorianDateTime.cpp', 117 | 'HashTable.cpp', 118 | 'mbmalloc.cpp', 119 | 'MD5.cpp', 120 | 'MediaTime.cpp', 121 | 'MetaAllocator.cpp', 122 | 'NumberOfCores.cpp', 123 | 'OSAllocatorPosix.cpp', 124 | 'OSRandomSource.cpp', 125 | 'PageAllocationAligned.cpp', 126 | 'PageBlock.cpp', 127 | 'ParallelJobsGeneric.cpp', 128 | 'PrintStream.cpp', 129 | 'RAMSize.cpp', 130 | 'RandomNumber.cpp', 131 | 'RefCountedLeakCounter.cpp', 132 | 'SHA1.cpp', 133 | 'SixCharacterHash.cpp', 134 | 'SizeLimits.cpp', 135 | 'StackBounds.cpp', 136 | 'StackStats.cpp', 137 | 'StringPrintStream.cpp', 138 | 'TCSystemAlloc.cpp', 139 | 'text/AtomicString.cpp', 140 | 'text/AtomicStringTable.cpp', 141 | 'text/Base64.cpp', 142 | 'text/CString.cpp', 143 | 'text/StringBuilder.cpp', 144 | 'text/StringImpl.cpp', 145 | 'text/StringStatics.cpp', 146 | 'text/StringView.cpp', 147 | 'text/WTFString.cpp', 148 | 'ThreadIdentifierDataPthreads.cpp', 149 | 'Threading.cpp', 150 | 'ThreadingPthreads.cpp', 151 | 'ThreadingWin.cpp', 152 | 'ThreadSpecificWin.cpp', 153 | 'unicode/UTF8.cpp', 154 | 'WTFThreadData.cpp', 155 | ]], 156 | deps = [ 157 | ':wtfassertions', 158 | '//icu:common', 159 | ], 160 | ) 161 | 162 | cxx_library( 163 | name = 'wtfcollation', 164 | force_static = True, 165 | supported_platforms_regex = SUPPORTED_PLATFORMS, 166 | header_namespace = '', 167 | headers = subdir_glob([ 168 | ('WTF/wtf', '*.h'), 169 | ('', 'extra_headers/*.h'), 170 | ]), 171 | exported_headers = subdir_glob([ 172 | ('WTF', 'wtf/**/*.h'), 173 | ('WTF', 'wtf/text/*.h'), 174 | ('', 'WTF/*.h'), 175 | ]), 176 | exported_preprocessor_flags = ( 177 | WTF_EXPORTED_PREPROCESSOR_FLAGS + [ 178 | # Disable icu collation and date formatting 179 | '-DUCONFIG_NO_COLLATION=1', 180 | '-DUCONFIG_NO_FORMATTING=1', 181 | ]), 182 | preprocessor_flags = [ 183 | '-include', 'extra_headers/collation_hack.h', 184 | '-DLOG_TAG="WTF"', 185 | ], 186 | srcs = [ 187 | 'WTF/wtf/unicode/CollatorDefault.cpp', 188 | ], 189 | deps = [ 190 | ':wtf', 191 | ], 192 | ) 193 | 194 | genrule( 195 | name = 'llint_desired_offsets', 196 | out = 'LLIntDesiredOffsets.h', 197 | srcs = 198 | glob(['JavaScriptCore/offlineasm/*.rb']) + 199 | glob(['JavaScriptCore/llint/*.asm']) + 200 | [':InitBytecodes.asm'], 201 | cmd = ' '.join([ 202 | 'ruby', 203 | 'JavaScriptCore/offlineasm/generate_offset_extractor.rb', 204 | '-IJavaScriptCore', 205 | '-I.', 206 | 'JavaScriptCore/llint/LowLevelInterpreter.asm', 207 | '$OUT', 208 | ]), 209 | ) 210 | 211 | # JSC 212 | 213 | JSC_HEADERS = subdir_glob([ 214 | ('JavaScriptCore', 'config.h'), 215 | ('WTF', 'wtf/**/*.h'), 216 | ('JavaScriptCore', 'JavaScriptCorePrefix.h'), 217 | ('', 'JavaScriptCore/API/*.h'), 218 | ('JavaScriptCore/API', '*.h'), 219 | ('JavaScriptCore/assembler', '*.h'), 220 | ('JavaScriptCore/bindings', '*.h'), 221 | ('JavaScriptCore', 'bindings/*.h'), 222 | ('JavaScriptCore/builtins', '*.h'), 223 | ('JavaScriptCore/bytecode', '*.h'), 224 | ('JavaScriptCore/bytecompiler', '*.h'), 225 | ('JavaScriptCore/debugger', '*.h'), 226 | ('JavaScriptCore', 'debugger/*.h'), 227 | ('JavaScriptCore/disassembler', '*.h'), 228 | ('JavaScriptCore/dfg', '*.h'), 229 | ('JavaScriptCore/ForwardingHeaders', '**/*.h'), 230 | ('JavaScriptCore/ftl', '*.h'), 231 | ('JavaScriptCore/heap', '*.h'), 232 | ('JavaScriptCore', 'heap/*.h'), 233 | ('JavaScriptCore/interpreter', '*.h'), 234 | ('JavaScriptCore', 'interpreter/*.h'), 235 | ('JavaScriptCore/inspector', '*.h'), 236 | ('JavaScriptCore', 'inspector/*.h'), 237 | ('JavaScriptCore/inspector/agents', '*.h'), 238 | ('JavaScriptCore/llint', '*.h'), 239 | ('JavaScriptCore/jit', '*.h'), 240 | ('JavaScriptCore/parser', '*.h'), 241 | ('JavaScriptCore/profiler', '*.h'), 242 | ('JavaScriptCore/runtime', '*.h'), 243 | ('JavaScriptCore', 'runtime/*.h'), 244 | ('JavaScriptCore/tools', '*.h'), 245 | ('JavaScriptCore/yarr', '*.h'), 246 | ('JavaScriptCore', 'yarr/*.h'), 247 | ] 248 | ) 249 | 250 | JSC_SOURCES = [ 251 | 'JavaScriptCore/API/JSBase.cpp', 252 | 'JavaScriptCore/API/JSCallbackConstructor.cpp', 253 | 'JavaScriptCore/API/JSCallbackFunction.cpp', 254 | 'JavaScriptCore/API/JSCallbackObject.cpp', 255 | 'JavaScriptCore/API/JSClassRef.cpp', 256 | 'JavaScriptCore/API/JSContextRef.cpp', 257 | 'JavaScriptCore/API/JSObjectRef.cpp', 258 | 'JavaScriptCore/API/JSProfilerPrivate.cpp', 259 | 'JavaScriptCore/API/JSScriptRef.cpp', 260 | 'JavaScriptCore/API/JSStringRef.cpp', 261 | 'JavaScriptCore/API/JSValueRef.cpp', 262 | 'JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp', 263 | 'JavaScriptCore/API/OpaqueJSString.cpp', 264 | 'JavaScriptCore/assembler/ARMAssembler.cpp', 265 | 'JavaScriptCore/assembler/ARMv7Assembler.cpp', 266 | 'JavaScriptCore/assembler/LinkBuffer.cpp', 267 | 'JavaScriptCore/assembler/MacroAssembler.cpp', 268 | 'JavaScriptCore/assembler/MacroAssemblerARMv7.cpp', 269 | 'JavaScriptCore/assembler/MacroAssemblerX86Common.cpp', 270 | 'JavaScriptCore/bindings/ScriptFunctionCall.cpp', 271 | 'JavaScriptCore/bindings/ScriptObject.cpp', 272 | 'JavaScriptCore/bindings/ScriptValue.cpp', 273 | 'JavaScriptCore/builtins/BuiltinExecutables.cpp', 274 | 'JavaScriptCore/bytecode/ArrayAllocationProfile.cpp', 275 | 'JavaScriptCore/bytecode/ArrayProfile.cpp', 276 | 'JavaScriptCore/bytecode/BytecodeBasicBlock.cpp', 277 | 'JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp', 278 | 'JavaScriptCore/bytecode/CallEdge.cpp', 279 | 'JavaScriptCore/bytecode/CallEdgeProfile.cpp', 280 | 'JavaScriptCore/bytecode/CallLinkInfo.cpp', 281 | 'JavaScriptCore/bytecode/CallLinkStatus.cpp', 282 | 'JavaScriptCore/bytecode/CallVariant.cpp', 283 | 'JavaScriptCore/bytecode/CodeBlock.cpp', 284 | 'JavaScriptCore/bytecode/CodeBlockHash.cpp', 285 | 'JavaScriptCore/bytecode/CodeBlockJettisoningWatchpoint.cpp', 286 | 'JavaScriptCore/bytecode/CodeOrigin.cpp', 287 | 'JavaScriptCore/bytecode/CodeType.cpp', 288 | 'JavaScriptCore/bytecode/ComplexGetStatus.cpp', 289 | 'JavaScriptCore/bytecode/ConstantStructureCheck.cpp', 290 | 'JavaScriptCore/bytecode/DeferredCompilationCallback.cpp', 291 | 'JavaScriptCore/bytecode/DFGExitProfile.cpp', 292 | 'JavaScriptCore/bytecode/ExecutionCounter.cpp', 293 | 'JavaScriptCore/bytecode/ExitingJITType.cpp', 294 | 'JavaScriptCore/bytecode/ExitKind.cpp', 295 | 'JavaScriptCore/bytecode/GetByIdStatus.cpp', 296 | 'JavaScriptCore/bytecode/GetByIdVariant.cpp', 297 | 'JavaScriptCore/bytecode/InlineCallFrameSet.cpp', 298 | 'JavaScriptCore/bytecode/JumpTable.cpp', 299 | 'JavaScriptCore/bytecode/LazyOperandValueProfile.cpp', 300 | 'JavaScriptCore/bytecode/MethodOfGettingAValueProfile.cpp', 301 | 'JavaScriptCore/bytecode/Opcode.cpp', 302 | 'JavaScriptCore/bytecode/PolymorphicGetByIdList.cpp', 303 | 'JavaScriptCore/bytecode/PolymorphicPutByIdList.cpp', 304 | 'JavaScriptCore/bytecode/PreciseJumpTargets.cpp', 305 | 'JavaScriptCore/bytecode/PutByIdStatus.cpp', 306 | 'JavaScriptCore/bytecode/PutByIdVariant.cpp', 307 | 'JavaScriptCore/bytecode/ReduceWhitespace.cpp', 308 | 'JavaScriptCore/bytecode/SamplingTool.cpp', 309 | 'JavaScriptCore/bytecode/SpecialPointer.cpp', 310 | 'JavaScriptCore/bytecode/SpeculatedType.cpp', 311 | 'JavaScriptCore/bytecode/StructureSet.cpp', 312 | 'JavaScriptCore/bytecode/StructureStubClearingWatchpoint.cpp', 313 | 'JavaScriptCore/bytecode/StructureStubInfo.cpp', 314 | 'JavaScriptCore/bytecode/ToThisStatus.cpp', 315 | 'JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp', 316 | 'JavaScriptCore/bytecode/UnlinkedInstructionStream.cpp', 317 | 'JavaScriptCore/bytecode/ValueRecovery.cpp', 318 | 'JavaScriptCore/bytecode/VariableWatchpointSet.cpp', 319 | 'JavaScriptCore/bytecode/Watchpoint.cpp', 320 | 'JavaScriptCore/bytecompiler/BytecodeGenerator.cpp', 321 | 'JavaScriptCore/bytecompiler/NodesCodegen.cpp', 322 | 'JavaScriptCore/debugger/Debugger.cpp', 323 | 'JavaScriptCore/debugger/DebuggerCallFrame.cpp', 324 | 'JavaScriptCore/debugger/DebuggerScope.cpp', 325 | 'JavaScriptCore/dfg/DFGAbstractHeap.cpp', 326 | 'JavaScriptCore/dfg/DFGAbstractValue.cpp', 327 | 'JavaScriptCore/dfg/DFGArgumentsSimplificationPhase.cpp', 328 | 'JavaScriptCore/dfg/DFGArithMode.cpp', 329 | 'JavaScriptCore/dfg/DFGArrayMode.cpp', 330 | 'JavaScriptCore/dfg/DFGAtTailAbstractState.cpp', 331 | 'JavaScriptCore/dfg/DFGAvailability.cpp', 332 | 'JavaScriptCore/dfg/DFGAvailabilityMap.cpp', 333 | 'JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp', 334 | 'JavaScriptCore/dfg/DFGBasicBlock.cpp', 335 | 'JavaScriptCore/dfg/DFGBinarySwitch.cpp', 336 | 'JavaScriptCore/dfg/DFGBlockInsertionSet.cpp', 337 | 'JavaScriptCore/dfg/DFGBlockSet.cpp', 338 | 'JavaScriptCore/dfg/DFGBlockWorklist.cpp', 339 | 'JavaScriptCore/dfg/DFGByteCodeParser.cpp', 340 | 'JavaScriptCore/dfg/DFGCapabilities.cpp', 341 | 'JavaScriptCore/dfg/DFGCFAPhase.cpp', 342 | 'JavaScriptCore/dfg/DFGCFGSimplificationPhase.cpp', 343 | 'JavaScriptCore/dfg/DFGClobberize.cpp', 344 | 'JavaScriptCore/dfg/DFGClobberSet.cpp', 345 | 'JavaScriptCore/dfg/DFGCommon.cpp', 346 | 'JavaScriptCore/dfg/DFGCommonData.cpp', 347 | 'JavaScriptCore/dfg/DFGCompilationKey.cpp', 348 | 'JavaScriptCore/dfg/DFGCompilationMode.cpp', 349 | 'JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp', 350 | 'JavaScriptCore/dfg/DFGCPSRethreadingPhase.cpp', 351 | 'JavaScriptCore/dfg/DFGCriticalEdgeBreakingPhase.cpp', 352 | 'JavaScriptCore/dfg/DFGCSEPhase.cpp', 353 | 'JavaScriptCore/dfg/DFGDCEPhase.cpp', 354 | 'JavaScriptCore/dfg/DFGDesiredIdentifiers.cpp', 355 | 'JavaScriptCore/dfg/DFGDesiredTransitions.cpp', 356 | 'JavaScriptCore/dfg/DFGDesiredWatchpoints.cpp', 357 | 'JavaScriptCore/dfg/DFGDesiredWeakReferences.cpp', 358 | 'JavaScriptCore/dfg/DFGDesiredWriteBarriers.cpp', 359 | 'JavaScriptCore/dfg/DFGDisassembler.cpp', 360 | 'JavaScriptCore/dfg/DFGDoesGC.cpp', 361 | 'JavaScriptCore/dfg/DFGDominators.cpp', 362 | 'JavaScriptCore/dfg/DFGDriver.cpp', 363 | 'JavaScriptCore/dfg/DFGEdge.cpp', 364 | 'JavaScriptCore/dfg/DFGFailedFinalizer.cpp', 365 | 'JavaScriptCore/dfg/DFGFinalizer.cpp', 366 | 'JavaScriptCore/dfg/DFGFixupPhase.cpp', 367 | 'JavaScriptCore/dfg/DFGFlushedAt.cpp', 368 | 'JavaScriptCore/dfg/DFGFlushFormat.cpp', 369 | 'JavaScriptCore/dfg/DFGFrozenValue.cpp', 370 | 'JavaScriptCore/dfg/DFGFunctionWhitelist.cpp', 371 | 'JavaScriptCore/dfg/DFGGraph.cpp', 372 | 'JavaScriptCore/dfg/DFGGraphSafepoint.cpp', 373 | 'JavaScriptCore/dfg/DFGHeapLocation.cpp', 374 | 'JavaScriptCore/dfg/DFGInPlaceAbstractState.cpp', 375 | 'JavaScriptCore/dfg/DFGInsertOSRHintsForUpdate.cpp', 376 | 'JavaScriptCore/dfg/DFGIntegerCheckCombiningPhase.cpp', 377 | 'JavaScriptCore/dfg/DFGInvalidationPointInjectionPhase.cpp', 378 | 'JavaScriptCore/dfg/DFGJITCode.cpp', 379 | 'JavaScriptCore/dfg/DFGJITCompiler.cpp', 380 | 'JavaScriptCore/dfg/DFGJITFinalizer.cpp', 381 | 'JavaScriptCore/dfg/DFGJumpReplacement.cpp', 382 | 'JavaScriptCore/dfg/DFGLazyJSValue.cpp', 383 | 'JavaScriptCore/dfg/DFGLICMPhase.cpp', 384 | 'JavaScriptCore/dfg/DFGLivenessAnalysisPhase.cpp', 385 | 'JavaScriptCore/dfg/DFGLongLivedState.cpp', 386 | 'JavaScriptCore/dfg/DFGLoopPreHeaderCreationPhase.cpp', 387 | 'JavaScriptCore/dfg/DFGMayExit.cpp', 388 | 'JavaScriptCore/dfg/DFGMinifiedNode.cpp', 389 | 'JavaScriptCore/dfg/DFGNaiveDominators.cpp', 390 | 'JavaScriptCore/dfg/DFGNaturalLoops.cpp', 391 | 'JavaScriptCore/dfg/DFGNode.cpp', 392 | 'JavaScriptCore/dfg/DFGNodeFlags.cpp', 393 | 'JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp', 394 | 'JavaScriptCore/dfg/DFGObjectMaterializationData.cpp', 395 | 'JavaScriptCore/dfg/DFGOperations.cpp', 396 | 'JavaScriptCore/dfg/DFGOSRAvailabilityAnalysisPhase.cpp', 397 | 'JavaScriptCore/dfg/DFGOSREntry.cpp', 398 | 'JavaScriptCore/dfg/DFGOSREntrypointCreationPhase.cpp', 399 | 'JavaScriptCore/dfg/DFGOSRExit.cpp', 400 | 'JavaScriptCore/dfg/DFGOSRExitBase.cpp', 401 | 'JavaScriptCore/dfg/DFGOSRExitCompiler.cpp', 402 | 'JavaScriptCore/dfg/DFGOSRExitCompiler32_64.cpp', 403 | 'JavaScriptCore/dfg/DFGOSRExitCompiler64.cpp', 404 | 'JavaScriptCore/dfg/DFGOSRExitCompilerCommon.cpp', 405 | 'JavaScriptCore/dfg/DFGOSRExitJumpPlaceholder.cpp', 406 | 'JavaScriptCore/dfg/DFGOSRExitPreparation.cpp', 407 | 'JavaScriptCore/dfg/DFGPhantomCanonicalizationPhase.cpp', 408 | 'JavaScriptCore/dfg/DFGPhantomRemovalPhase.cpp', 409 | 'JavaScriptCore/dfg/DFGPhase.cpp', 410 | 'JavaScriptCore/dfg/DFGPhiChildren.cpp', 411 | 'JavaScriptCore/dfg/DFGPlan.cpp', 412 | 'JavaScriptCore/dfg/DFGPredictionInjectionPhase.cpp', 413 | 'JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp', 414 | 'JavaScriptCore/dfg/DFGPrePostNumbering.cpp', 415 | 'JavaScriptCore/dfg/DFGPromotedHeapLocation.cpp', 416 | 'JavaScriptCore/dfg/DFGPureValue.cpp', 417 | 'JavaScriptCore/dfg/DFGPutLocalSinkingPhase.cpp', 418 | 'JavaScriptCore/dfg/DFGResurrectionForValidationPhase.cpp', 419 | 'JavaScriptCore/dfg/DFGSafepoint.cpp', 420 | 'JavaScriptCore/dfg/DFGSpeculativeJIT.cpp', 421 | 'JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp', 422 | 'JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp', 423 | 'JavaScriptCore/dfg/DFGSSACalculator.cpp', 424 | 'JavaScriptCore/dfg/DFGSSAConversionPhase.cpp', 425 | 'JavaScriptCore/dfg/DFGSSALoweringPhase.cpp', 426 | 'JavaScriptCore/dfg/DFGStackLayoutPhase.cpp', 427 | 'JavaScriptCore/dfg/DFGStaticExecutionCountEstimationPhase.cpp', 428 | 'JavaScriptCore/dfg/DFGStoreBarrierElisionPhase.cpp', 429 | 'JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp', 430 | 'JavaScriptCore/dfg/DFGStructureAbstractValue.cpp', 431 | 'JavaScriptCore/dfg/DFGStructureRegistrationPhase.cpp', 432 | 'JavaScriptCore/dfg/DFGThreadData.cpp', 433 | 'JavaScriptCore/dfg/DFGThunks.cpp', 434 | 'JavaScriptCore/dfg/DFGTierUpCheckInjectionPhase.cpp', 435 | 'JavaScriptCore/dfg/DFGToFTLDeferredCompilationCallback.cpp', 436 | 'JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp', 437 | 'JavaScriptCore/dfg/DFGTransition.cpp', 438 | 'JavaScriptCore/dfg/DFGTypeCheckHoistingPhase.cpp', 439 | 'JavaScriptCore/dfg/DFGUnificationPhase.cpp', 440 | 'JavaScriptCore/dfg/DFGUseKind.cpp', 441 | 'JavaScriptCore/dfg/DFGValidate.cpp', 442 | 'JavaScriptCore/dfg/DFGValueSource.cpp', 443 | 'JavaScriptCore/dfg/DFGValueStrength.cpp', 444 | 'JavaScriptCore/dfg/DFGVariableAccessData.cpp', 445 | 'JavaScriptCore/dfg/DFGVariableAccessDataDump.cpp', 446 | 'JavaScriptCore/dfg/DFGVariableEvent.cpp', 447 | 'JavaScriptCore/dfg/DFGVariableEventStream.cpp', 448 | 'JavaScriptCore/dfg/DFGVirtualRegisterAllocationPhase.cpp', 449 | 'JavaScriptCore/dfg/DFGWatchpointCollectionPhase.cpp', 450 | 'JavaScriptCore/dfg/DFGWorklist.cpp', 451 | 'JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp', 452 | 'JavaScriptCore/disassembler/ARM64Disassembler.cpp', 453 | 'JavaScriptCore/disassembler/ARMv7/ARMv7DOpcode.cpp', 454 | 'JavaScriptCore/disassembler/ARMv7Disassembler.cpp', 455 | 'JavaScriptCore/disassembler/Disassembler.cpp', 456 | 'JavaScriptCore/disassembler/LLVMDisassembler.cpp', 457 | 'JavaScriptCore/disassembler/UDis86Disassembler.cpp', 458 | 'JavaScriptCore/disassembler/X86Disassembler.cpp', 459 | 'JavaScriptCore/ftl/FTLAbstractHeap.cpp', 460 | 'JavaScriptCore/ftl/FTLAbstractHeapRepository.cpp', 461 | 'JavaScriptCore/ftl/FTLAvailableRecovery.cpp', 462 | 'JavaScriptCore/ftl/FTLCapabilities.cpp', 463 | 'JavaScriptCore/ftl/FTLCommonValues.cpp', 464 | 'JavaScriptCore/ftl/FTLCompile.cpp', 465 | 'JavaScriptCore/ftl/FTLDataSection.cpp', 466 | 'JavaScriptCore/ftl/FTLDWARFDebugLineInfo.cpp', 467 | 'JavaScriptCore/ftl/FTLDWARFRegister.cpp', 468 | 'JavaScriptCore/ftl/FTLExitArgument.cpp', 469 | 'JavaScriptCore/ftl/FTLExitArgumentForOperand.cpp', 470 | 'JavaScriptCore/ftl/FTLExitPropertyValue.cpp', 471 | 'JavaScriptCore/ftl/FTLExitThunkGenerator.cpp', 472 | 'JavaScriptCore/ftl/FTLExitTimeObjectMaterialization.cpp', 473 | 'JavaScriptCore/ftl/FTLExitValue.cpp', 474 | 'JavaScriptCore/ftl/FTLFail.cpp', 475 | 'JavaScriptCore/ftl/FTLForOSREntryJITCode.cpp', 476 | 'JavaScriptCore/ftl/FTLInlineCacheSize.cpp', 477 | 'JavaScriptCore/ftl/FTLIntrinsicRepository.cpp', 478 | 'JavaScriptCore/ftl/FTLJITCode.cpp', 479 | 'JavaScriptCore/ftl/FTLJITFinalizer.cpp', 480 | 'JavaScriptCore/ftl/FTLJSCall.cpp', 481 | 'JavaScriptCore/ftl/FTLLink.cpp', 482 | 'JavaScriptCore/ftl/FTLLocation.cpp', 483 | 'JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp', 484 | 'JavaScriptCore/ftl/FTLOperations.cpp', 485 | 'JavaScriptCore/ftl/FTLOSREntry.cpp', 486 | 'JavaScriptCore/ftl/FTLOSRExit.cpp', 487 | 'JavaScriptCore/ftl/FTLOSRExitCompiler.cpp', 488 | 'JavaScriptCore/ftl/FTLOutput.cpp', 489 | 'JavaScriptCore/ftl/FTLRecoveryOpcode.cpp', 490 | 'JavaScriptCore/ftl/FTLRegisterAtOffset.cpp', 491 | 'JavaScriptCore/ftl/FTLSaveRestore.cpp', 492 | 'JavaScriptCore/ftl/FTLSlowPathCall.cpp', 493 | 'JavaScriptCore/ftl/FTLSlowPathCallKey.cpp', 494 | 'JavaScriptCore/ftl/FTLStackMaps.cpp', 495 | 'JavaScriptCore/ftl/FTLState.cpp', 496 | 'JavaScriptCore/ftl/FTLThunks.cpp', 497 | 'JavaScriptCore/ftl/FTLUnwindInfo.cpp', 498 | 'JavaScriptCore/ftl/FTLValueFormat.cpp', 499 | 'JavaScriptCore/ftl/FTLValueRange.cpp', 500 | 'JavaScriptCore/heap/BlockAllocator.cpp', 501 | 'JavaScriptCore/heap/CodeBlockSet.cpp', 502 | 'JavaScriptCore/heap/ConservativeRoots.cpp', 503 | 'JavaScriptCore/heap/CopiedSpace.cpp', 504 | 'JavaScriptCore/heap/CopyVisitor.cpp', 505 | 'JavaScriptCore/heap/DeferGC.cpp', 506 | 'JavaScriptCore/heap/EdenGCActivityCallback.cpp', 507 | 'JavaScriptCore/heap/FullGCActivityCallback.cpp', 508 | 'JavaScriptCore/heap/GCActivityCallback.cpp', 509 | 'JavaScriptCore/heap/GCLogging.cpp', 510 | 'JavaScriptCore/heap/GCThread.cpp', 511 | 'JavaScriptCore/heap/GCThreadSharedData.cpp', 512 | 'JavaScriptCore/heap/HandleSet.cpp', 513 | 'JavaScriptCore/heap/HandleStack.cpp', 514 | 'JavaScriptCore/heap/Heap.cpp', 515 | 'JavaScriptCore/heap/HeapStatistics.cpp', 516 | 'JavaScriptCore/heap/HeapTimer.cpp', 517 | 'JavaScriptCore/heap/IncrementalSweeper.cpp', 518 | 'JavaScriptCore/heap/JITStubRoutineSet.cpp', 519 | 'JavaScriptCore/heap/MachineStackMarker.cpp', 520 | 'JavaScriptCore/heap/MarkedAllocator.cpp', 521 | 'JavaScriptCore/heap/MarkedBlock.cpp', 522 | 'JavaScriptCore/heap/MarkedSpace.cpp', 523 | 'JavaScriptCore/heap/MarkStack.cpp', 524 | 'JavaScriptCore/heap/SlotVisitor.cpp', 525 | 'JavaScriptCore/heap/SuperRegion.cpp', 526 | 'JavaScriptCore/heap/Weak.cpp', 527 | 'JavaScriptCore/heap/WeakBlock.cpp', 528 | 'JavaScriptCore/heap/WeakHandleOwner.cpp', 529 | 'JavaScriptCore/heap/WeakSet.cpp', 530 | 'JavaScriptCore/heap/WriteBarrierBuffer.cpp', 531 | 'JavaScriptCore/heap/WriteBarrierSupport.cpp', 532 | 'JavaScriptCore/inspector/agents/InspectorAgent.cpp', 533 | 'JavaScriptCore/inspector/agents/InspectorConsoleAgent.cpp', 534 | 'JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp', 535 | 'JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp', 536 | 'JavaScriptCore/inspector/agents/JSGlobalObjectConsoleAgent.cpp', 537 | 'JavaScriptCore/inspector/agents/JSGlobalObjectDebuggerAgent.cpp', 538 | 'JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.cpp', 539 | 'JavaScriptCore/inspector/ConsoleMessage.cpp', 540 | 'JavaScriptCore/inspector/ContentSearchUtilities.cpp', 541 | 'JavaScriptCore/inspector/EventLoop.cpp', 542 | 'JavaScriptCore/inspector/IdentifiersFactory.cpp', 543 | 'JavaScriptCore/inspector/InjectedScript.cpp', 544 | 'JavaScriptCore/inspector/InjectedScriptBase.cpp', 545 | 'JavaScriptCore/inspector/InjectedScriptHost.cpp', 546 | 'JavaScriptCore/inspector/InjectedScriptManager.cpp', 547 | 'JavaScriptCore/inspector/InjectedScriptModule.cpp', 548 | 'JavaScriptCore/inspector/InspectorAgentRegistry.cpp', 549 | 'JavaScriptCore/inspector/InspectorBackendDispatcher.cpp', 550 | 'JavaScriptCore/inspector/InspectorValues.cpp', 551 | 'JavaScriptCore/inspector/JavaScriptCallFrame.cpp', 552 | 'JavaScriptCore/inspector/JSGlobalObjectConsoleClient.cpp', 553 | 'JavaScriptCore/inspector/JSGlobalObjectScriptDebugServer.cpp', 554 | 'JavaScriptCore/inspector/JSInjectedScriptHost.cpp', 555 | 'JavaScriptCore/inspector/JSInjectedScriptHostPrototype.cpp', 556 | 'JavaScriptCore/inspector/JSJavaScriptCallFrame.cpp', 557 | 'JavaScriptCore/inspector/JSJavaScriptCallFramePrototype.cpp', 558 | 'JavaScriptCore/inspector/remote/RemoteInspectorDebuggable.cpp', 559 | 'JavaScriptCore/inspector/ScriptArguments.cpp', 560 | 'JavaScriptCore/inspector/ScriptCallFrame.cpp', 561 | 'JavaScriptCore/inspector/ScriptCallStack.cpp', 562 | 'JavaScriptCore/inspector/ScriptCallStackFactory.cpp', 563 | 'JavaScriptCore/inspector/ScriptDebugServer.cpp', 564 | 'JavaScriptCore/interpreter/AbstractPC.cpp', 565 | 'JavaScriptCore/interpreter/CallFrame.cpp', 566 | 'JavaScriptCore/interpreter/Interpreter.cpp', 567 | 'JavaScriptCore/interpreter/JSStack.cpp', 568 | 'JavaScriptCore/interpreter/ProtoCallFrame.cpp', 569 | 'JavaScriptCore/interpreter/StackVisitor.cpp', 570 | 'JavaScriptCore/interpreter/VMInspector.cpp', 571 | 'JavaScriptCore/jit/AccessorCallJITStubRoutine.cpp', 572 | 'JavaScriptCore/jit/ArityCheckFailReturnThunks.cpp', 573 | 'JavaScriptCore/jit/AssemblyHelpers.cpp', 574 | 'JavaScriptCore/jit/ClosureCallStubRoutine.cpp', 575 | 'JavaScriptCore/jit/ExecutableAllocator.cpp', 576 | 'JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp', 577 | 'JavaScriptCore/jit/GCAwareJITStubRoutine.cpp', 578 | 'JavaScriptCore/jit/HostCallReturnValue.cpp', 579 | 'JavaScriptCore/jit/JIT.cpp', 580 | 'JavaScriptCore/jit/JITArithmetic.cpp', 581 | 'JavaScriptCore/jit/JITArithmetic32_64.cpp', 582 | 'JavaScriptCore/jit/JITCall.cpp', 583 | 'JavaScriptCore/jit/JITCall32_64.cpp', 584 | 'JavaScriptCore/jit/JITCode.cpp', 585 | 'JavaScriptCore/jit/JITDisassembler.cpp', 586 | 'JavaScriptCore/jit/JITExceptions.cpp', 587 | 'JavaScriptCore/jit/JITInlineCacheGenerator.cpp', 588 | 'JavaScriptCore/jit/JITOpcodes.cpp', 589 | 'JavaScriptCore/jit/JITOpcodes32_64.cpp', 590 | 'JavaScriptCore/jit/JITOperations.cpp', 591 | 'JavaScriptCore/jit/JITOperationsMSVC64.cpp', 592 | 'JavaScriptCore/jit/JITPropertyAccess.cpp', 593 | 'JavaScriptCore/jit/JITPropertyAccess32_64.cpp', 594 | 'JavaScriptCore/jit/JITStubRoutine.cpp', 595 | 'JavaScriptCore/jit/JITStubs.cpp', 596 | 'JavaScriptCore/jit/JITThunks.cpp', 597 | 'JavaScriptCore/jit/JITToDFGDeferredCompilationCallback.cpp', 598 | 'JavaScriptCore/jit/Reg.cpp', 599 | 'JavaScriptCore/jit/RegisterPreservationWrapperGenerator.cpp', 600 | 'JavaScriptCore/jit/RegisterSet.cpp', 601 | 'JavaScriptCore/jit/Repatch.cpp', 602 | 'JavaScriptCore/jit/ScratchRegisterAllocator.cpp', 603 | 'JavaScriptCore/jit/TempRegisterSet.cpp', 604 | 'JavaScriptCore/jit/ThunkGenerators.cpp', 605 | 'JavaScriptCore/llint/LLIntCLoop.cpp', 606 | 'JavaScriptCore/llint/LLIntData.cpp', 607 | 'JavaScriptCore/llint/LLIntEntrypoint.cpp', 608 | 'JavaScriptCore/llint/LLIntExceptions.cpp', 609 | 'JavaScriptCore/llint/LLIntSlowPaths.cpp', 610 | 'JavaScriptCore/llint/LLIntThunks.cpp', 611 | 'JavaScriptCore/llint/LowLevelInterpreter.cpp', 612 | 'JavaScriptCore/llvm/InitializeLLVM.cpp', 613 | 'JavaScriptCore/llvm/InitializeLLVMLinux.cpp', 614 | 'JavaScriptCore/llvm/InitializeLLVMMac.cpp', 615 | 'JavaScriptCore/llvm/InitializeLLVMPOSIX.cpp', 616 | 'JavaScriptCore/llvm/library/LLVMAnchor.cpp', 617 | 'JavaScriptCore/llvm/library/LLVMExports.cpp', 618 | 'JavaScriptCore/llvm/library/LLVMOverrides.cpp', 619 | 'JavaScriptCore/llvm/LLVMAPI.cpp', 620 | 'JavaScriptCore/parser/Lexer.cpp', 621 | 'JavaScriptCore/parser/Nodes.cpp', 622 | 'JavaScriptCore/parser/Parser.cpp', 623 | 'JavaScriptCore/parser/ParserArena.cpp', 624 | 'JavaScriptCore/parser/SourceCode.cpp', 625 | 'JavaScriptCore/parser/SourceProvider.cpp', 626 | 'JavaScriptCore/parser/SourceProviderCache.cpp', 627 | 'JavaScriptCore/profiler/LegacyProfiler.cpp', 628 | 'JavaScriptCore/profiler/Profile.cpp', 629 | 'JavaScriptCore/profiler/ProfileGenerator.cpp', 630 | 'JavaScriptCore/profiler/ProfileNode.cpp', 631 | 'JavaScriptCore/profiler/ProfilerBytecode.cpp', 632 | 'JavaScriptCore/profiler/ProfilerBytecodes.cpp', 633 | 'JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp', 634 | 'JavaScriptCore/profiler/ProfilerCompilation.cpp', 635 | 'JavaScriptCore/profiler/ProfilerCompilationKind.cpp', 636 | 'JavaScriptCore/profiler/ProfilerCompiledBytecode.cpp', 637 | 'JavaScriptCore/profiler/ProfilerDatabase.cpp', 638 | 'JavaScriptCore/profiler/ProfilerJettisonReason.cpp', 639 | 'JavaScriptCore/profiler/ProfilerOrigin.cpp', 640 | 'JavaScriptCore/profiler/ProfilerOriginStack.cpp', 641 | 'JavaScriptCore/profiler/ProfilerOSRExit.cpp', 642 | 'JavaScriptCore/profiler/ProfilerOSRExitSite.cpp', 643 | 'JavaScriptCore/profiler/ProfilerProfiledBytecodes.cpp', 644 | 'JavaScriptCore/replay/EncodedValue.cpp', 645 | 'JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.cpp', 646 | 'JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.cpp', 647 | 'JavaScriptCore/replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.cpp', 648 | 'JavaScriptCore/replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.cpp', 649 | 'JavaScriptCore/replay/scripts/tests/expected/generate-input-with-guard.json-TestReplayInputs.cpp', 650 | 'JavaScriptCore/replay/scripts/tests/expected/generate-input-with-vector-members.json-TestReplayInputs.cpp', 651 | 'JavaScriptCore/replay/scripts/tests/expected/generate-inputs-with-flags.json-TestReplayInputs.cpp', 652 | 'JavaScriptCore/replay/scripts/tests/expected/generate-memoized-type-modes.json-TestReplayInputs.cpp', 653 | 'JavaScriptCore/runtime/ArgList.cpp', 654 | 'JavaScriptCore/runtime/Arguments.cpp', 655 | 'JavaScriptCore/runtime/ArgumentsIteratorConstructor.cpp', 656 | 'JavaScriptCore/runtime/ArgumentsIteratorPrototype.cpp', 657 | 'JavaScriptCore/runtime/ArrayBuffer.cpp', 658 | 'JavaScriptCore/runtime/ArrayBufferNeuteringWatchpoint.cpp', 659 | 'JavaScriptCore/runtime/ArrayBufferView.cpp', 660 | 'JavaScriptCore/runtime/ArrayConstructor.cpp', 661 | 'JavaScriptCore/runtime/ArrayIteratorConstructor.cpp', 662 | 'JavaScriptCore/runtime/ArrayIteratorPrototype.cpp', 663 | 'JavaScriptCore/runtime/ArrayPrototype.cpp', 664 | 'JavaScriptCore/runtime/BooleanConstructor.cpp', 665 | 'JavaScriptCore/runtime/BooleanObject.cpp', 666 | 'JavaScriptCore/runtime/BooleanPrototype.cpp', 667 | 'JavaScriptCore/runtime/CallData.cpp', 668 | 'JavaScriptCore/runtime/CodeCache.cpp', 669 | 'JavaScriptCore/runtime/CodeSpecializationKind.cpp', 670 | 'JavaScriptCore/runtime/CommonIdentifiers.cpp', 671 | 'JavaScriptCore/runtime/CommonSlowPaths.cpp', 672 | 'JavaScriptCore/runtime/CommonSlowPathsExceptions.cpp', 673 | 'JavaScriptCore/runtime/CompilationResult.cpp', 674 | 'JavaScriptCore/runtime/Completion.cpp', 675 | 'JavaScriptCore/runtime/ConsoleClient.cpp', 676 | 'JavaScriptCore/runtime/ConsolePrototype.cpp', 677 | 'JavaScriptCore/runtime/ConstructData.cpp', 678 | 'JavaScriptCore/runtime/CustomGetterSetter.cpp', 679 | 'JavaScriptCore/runtime/DataView.cpp', 680 | 'JavaScriptCore/runtime/DateConstructor.cpp', 681 | 'JavaScriptCore/runtime/DateConversion.cpp', 682 | 'JavaScriptCore/runtime/DateInstance.cpp', 683 | 'JavaScriptCore/runtime/DatePrototype.cpp', 684 | 'JavaScriptCore/runtime/DumpContext.cpp', 685 | 'JavaScriptCore/runtime/Error.cpp', 686 | 'JavaScriptCore/runtime/ErrorConstructor.cpp', 687 | 'JavaScriptCore/runtime/ErrorHandlingScope.cpp', 688 | 'JavaScriptCore/runtime/ErrorInstance.cpp', 689 | 'JavaScriptCore/runtime/ErrorPrototype.cpp', 690 | 'JavaScriptCore/runtime/ExceptionFuzz.cpp', 691 | 'JavaScriptCore/runtime/ExceptionHelpers.cpp', 692 | 'JavaScriptCore/runtime/Executable.cpp', 693 | 'JavaScriptCore/runtime/FunctionConstructor.cpp', 694 | 'JavaScriptCore/runtime/FunctionExecutableDump.cpp', 695 | 'JavaScriptCore/runtime/FunctionHasExecutedCache.cpp', 696 | 'JavaScriptCore/runtime/FunctionPrototype.cpp', 697 | 'JavaScriptCore/runtime/GetterSetter.cpp', 698 | 'JavaScriptCore/runtime/Identifier.cpp', 699 | 'JavaScriptCore/runtime/IndexingType.cpp', 700 | 'JavaScriptCore/runtime/InitializeThreading.cpp', 701 | 'JavaScriptCore/runtime/IntendedStructureChain.cpp', 702 | 'JavaScriptCore/runtime/InternalFunction.cpp', 703 | 'JavaScriptCore/runtime/JSAPIValueWrapper.cpp', 704 | 'JavaScriptCore/runtime/JSArgumentsIterator.cpp', 705 | 'JavaScriptCore/runtime/JSArray.cpp', 706 | 'JavaScriptCore/runtime/JSArrayBuffer.cpp', 707 | 'JavaScriptCore/runtime/JSArrayBufferConstructor.cpp', 708 | 'JavaScriptCore/runtime/JSArrayBufferPrototype.cpp', 709 | 'JavaScriptCore/runtime/JSArrayBufferView.cpp', 710 | 'JavaScriptCore/runtime/JSArrayIterator.cpp', 711 | 'JavaScriptCore/runtime/JSBoundFunction.cpp', 712 | 'JavaScriptCore/runtime/JSCallee.cpp', 713 | 'JavaScriptCore/runtime/JSCell.cpp', 714 | 'JavaScriptCore/runtime/JSCJSValue.cpp', 715 | 'JavaScriptCore/runtime/JSConsole.cpp', 716 | 'JavaScriptCore/runtime/JSDataView.cpp', 717 | 'JavaScriptCore/runtime/JSDataViewPrototype.cpp', 718 | 'JavaScriptCore/runtime/JSDateMath.cpp', 719 | 'JavaScriptCore/runtime/JSEnvironmentRecord.cpp', 720 | 'JavaScriptCore/runtime/JSFunction.cpp', 721 | 'JavaScriptCore/runtime/JSGlobalObject.cpp', 722 | 'JavaScriptCore/runtime/JSGlobalObjectDebuggable.cpp', 723 | 'JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp', 724 | 'JavaScriptCore/runtime/JSLexicalEnvironment.cpp', 725 | 'JavaScriptCore/runtime/JSLock.cpp', 726 | 'JavaScriptCore/runtime/JSMap.cpp', 727 | 'JavaScriptCore/runtime/JSMapIterator.cpp', 728 | 'JavaScriptCore/runtime/JSNameScope.cpp', 729 | 'JavaScriptCore/runtime/JSNotAnObject.cpp', 730 | 'JavaScriptCore/runtime/JSObject.cpp', 731 | 'JavaScriptCore/runtime/JSONObject.cpp', 732 | 'JavaScriptCore/runtime/JSPromise.cpp', 733 | 'JavaScriptCore/runtime/JSPromiseConstructor.cpp', 734 | 'JavaScriptCore/runtime/JSPromiseDeferred.cpp', 735 | 'JavaScriptCore/runtime/JSPromiseFunctions.cpp', 736 | 'JavaScriptCore/runtime/JSPromisePrototype.cpp', 737 | 'JavaScriptCore/runtime/JSPromiseReaction.cpp', 738 | 'JavaScriptCore/runtime/JSPropertyNameEnumerator.cpp', 739 | 'JavaScriptCore/runtime/JSProxy.cpp', 740 | 'JavaScriptCore/runtime/JSScope.cpp', 741 | 'JavaScriptCore/runtime/JSSegmentedVariableObject.cpp', 742 | 'JavaScriptCore/runtime/JSSet.cpp', 743 | 'JavaScriptCore/runtime/JSSetIterator.cpp', 744 | 'JavaScriptCore/runtime/JSString.cpp', 745 | 'JavaScriptCore/runtime/JSStringJoiner.cpp', 746 | 'JavaScriptCore/runtime/JSSymbolTableObject.cpp', 747 | 'JavaScriptCore/runtime/JSTypedArrayConstructors.cpp', 748 | 'JavaScriptCore/runtime/JSTypedArrayPrototypes.cpp', 749 | 'JavaScriptCore/runtime/JSTypedArrays.cpp', 750 | 'JavaScriptCore/runtime/JSWeakMap.cpp', 751 | 'JavaScriptCore/runtime/JSWithScope.cpp', 752 | 'JavaScriptCore/runtime/JSWrapperObject.cpp', 753 | 'JavaScriptCore/runtime/LiteralParser.cpp', 754 | 'JavaScriptCore/runtime/Lookup.cpp', 755 | 'JavaScriptCore/runtime/MapConstructor.cpp', 756 | 'JavaScriptCore/runtime/MapData.cpp', 757 | 'JavaScriptCore/runtime/MapIteratorConstructor.cpp', 758 | 'JavaScriptCore/runtime/MapIteratorPrototype.cpp', 759 | 'JavaScriptCore/runtime/MapPrototype.cpp', 760 | 'JavaScriptCore/runtime/MathObject.cpp', 761 | 'JavaScriptCore/runtime/MemoryStatistics.cpp', 762 | 'JavaScriptCore/runtime/NameConstructor.cpp', 763 | 'JavaScriptCore/runtime/NameInstance.cpp', 764 | 'JavaScriptCore/runtime/NamePrototype.cpp', 765 | 'JavaScriptCore/runtime/NativeErrorConstructor.cpp', 766 | 'JavaScriptCore/runtime/NativeErrorPrototype.cpp', 767 | 'JavaScriptCore/runtime/NumberConstructor.cpp', 768 | 'JavaScriptCore/runtime/NumberObject.cpp', 769 | 'JavaScriptCore/runtime/NumberPrototype.cpp', 770 | 'JavaScriptCore/runtime/ObjectConstructor.cpp', 771 | 'JavaScriptCore/runtime/ObjectPrototype.cpp', 772 | 'JavaScriptCore/runtime/Operations.cpp', 773 | 'JavaScriptCore/runtime/Options.cpp', 774 | 'JavaScriptCore/runtime/PropertyDescriptor.cpp', 775 | 'JavaScriptCore/runtime/PropertyNameArray.cpp', 776 | 'JavaScriptCore/runtime/PropertySlot.cpp', 777 | 'JavaScriptCore/runtime/PropertyTable.cpp', 778 | 'JavaScriptCore/runtime/PrototypeMap.cpp', 779 | 'JavaScriptCore/runtime/RegExp.cpp', 780 | 'JavaScriptCore/runtime/RegExpCache.cpp', 781 | 'JavaScriptCore/runtime/RegExpCachedResult.cpp', 782 | 'JavaScriptCore/runtime/RegExpConstructor.cpp', 783 | 'JavaScriptCore/runtime/RegExpMatchesArray.cpp', 784 | 'JavaScriptCore/runtime/RegExpObject.cpp', 785 | 'JavaScriptCore/runtime/RegExpPrototype.cpp', 786 | 'JavaScriptCore/runtime/SamplingCounter.cpp', 787 | 'JavaScriptCore/runtime/SetConstructor.cpp', 788 | 'JavaScriptCore/runtime/SetIteratorConstructor.cpp', 789 | 'JavaScriptCore/runtime/SetIteratorPrototype.cpp', 790 | 'JavaScriptCore/runtime/SetPrototype.cpp', 791 | 'JavaScriptCore/runtime/SimpleTypedArrayController.cpp', 792 | 'JavaScriptCore/runtime/SmallStrings.cpp', 793 | 'JavaScriptCore/runtime/SparseArrayValueMap.cpp', 794 | 'JavaScriptCore/runtime/StrictEvalActivation.cpp', 795 | 'JavaScriptCore/runtime/StringConstructor.cpp', 796 | 'JavaScriptCore/runtime/StringObject.cpp', 797 | 'JavaScriptCore/runtime/StringPrototype.cpp', 798 | 'JavaScriptCore/runtime/StringRecursionChecker.cpp', 799 | 'JavaScriptCore/runtime/Structure.cpp', 800 | 'JavaScriptCore/runtime/StructureChain.cpp', 801 | 'JavaScriptCore/runtime/StructureIDTable.cpp', 802 | 'JavaScriptCore/runtime/StructureRareData.cpp', 803 | 'JavaScriptCore/runtime/SymbolTable.cpp', 804 | 'JavaScriptCore/runtime/TypedArrayController.cpp', 805 | 'JavaScriptCore/runtime/TypedArrayType.cpp', 806 | 'JavaScriptCore/runtime/TypeLocationCache.cpp', 807 | 'JavaScriptCore/runtime/TypeProfiler.cpp', 808 | 'JavaScriptCore/runtime/TypeProfilerLog.cpp', 809 | 'JavaScriptCore/runtime/TypeSet.cpp', 810 | 'JavaScriptCore/runtime/VM.cpp', 811 | 'JavaScriptCore/runtime/VMEntryScope.cpp', 812 | 'JavaScriptCore/runtime/Watchdog.cpp', 813 | 'JavaScriptCore/runtime/WatchdogNone.cpp', 814 | 'JavaScriptCore/runtime/WeakMapConstructor.cpp', 815 | 'JavaScriptCore/runtime/WeakMapData.cpp', 816 | 'JavaScriptCore/runtime/WeakMapPrototype.cpp', 817 | 'JavaScriptCore/testRegExp.cpp', 818 | 'JavaScriptCore/tools/CodeProfile.cpp', 819 | 'JavaScriptCore/tools/CodeProfiling.cpp', 820 | 'JavaScriptCore/yarr/RegularExpression.cpp', 821 | 'JavaScriptCore/yarr/YarrCanonicalizeUCS2.cpp', 822 | 'JavaScriptCore/yarr/YarrInterpreter.cpp', 823 | 'JavaScriptCore/yarr/YarrJIT.cpp', 824 | 'JavaScriptCore/yarr/YarrPattern.cpp', 825 | 'JavaScriptCore/yarr/YarrSyntaxChecker.cpp', 826 | ] 827 | 828 | genrule( 829 | name = 'regex_tables', 830 | out = 'RegExpJitTables.h', 831 | srcs = [ 832 | 'JavaScriptCore/create_regex_tables', 833 | ], 834 | cmd = 'python JavaScriptCore/create_regex_tables > $OUT', 835 | ) 836 | JSC_HEADERS['RegExpJitTables.h'] = ':regex_tables' 837 | 838 | genrule( 839 | name = 'keyword_lookup', 840 | out = 'KeywordLookup.h', 841 | srcs = [ 842 | 'JavaScriptCore/KeywordLookupGenerator.py', 843 | 'JavaScriptCore/parser/Keywords.table', 844 | ], 845 | cmd = 'python JavaScriptCore/KeywordLookupGenerator.py JavaScriptCore/parser/Keywords.table > $OUT', 846 | ) 847 | JSC_HEADERS['KeywordLookup.h'] = ':keyword_lookup' 848 | 849 | genrule( 850 | name = 'create_hash_table', 851 | out = 'Lexer.lut.h', 852 | srcs = [ 853 | 'JavaScriptCore/create_hash_table', 854 | 'JavaScriptCore/parser/Keywords.table', 855 | ], 856 | cmd = 'perl JavaScriptCore/create_hash_table JavaScriptCore/parser/Keywords.table -i > $OUT', 857 | ) 858 | JSC_HEADERS['Lexer.lut.h'] = ':create_hash_table' 859 | 860 | 861 | def to_lut_header(src): 862 | root, _ = os.path.splitext(src) 863 | return root + '.lut.h' 864 | 865 | 866 | LUT_SOURCES = [ 867 | 'ArrayConstructor.cpp', 868 | 'ArrayPrototype.cpp', 869 | 'BooleanPrototype.cpp', 870 | 'DateConstructor.cpp', 871 | 'DatePrototype.cpp', 872 | 'ErrorPrototype.cpp', 873 | 'JSDataViewPrototype.cpp', 874 | 'JSGlobalObject.cpp', 875 | 'JSONObject.cpp', 876 | 'MathObject.cpp', 877 | 'NamePrototype.cpp', 878 | 'NumberConstructor.cpp', 879 | 'NumberPrototype.cpp', 880 | 'ObjectConstructor.cpp', 881 | 'RegExpConstructor.cpp', 882 | 'RegExpObject.cpp', 883 | 'RegExpPrototype.cpp', 884 | 'StringConstructor.cpp', 885 | ] 886 | 887 | for src in LUT_SOURCES: 888 | lut_header = to_lut_header(src) 889 | genrule( 890 | name = lut_header, 891 | out = lut_header, 892 | srcs = [ 893 | 'JavaScriptCore/create_hash_table', 894 | 'JavaScriptCore/runtime/' + src, 895 | ], 896 | cmd = 'perl $SRCDIR/JavaScriptCore/create_hash_table $SRCDIR/JavaScriptCore/runtime/{0} -i > $OUT'.format(src), 897 | ) 898 | JSC_HEADERS[lut_header] = ':' + lut_header 899 | 900 | 901 | genrule( 902 | name = 'Bytecodes.h', 903 | out = 'Bytecodes.h', 904 | srcs = [ 905 | 'JavaScriptCore/generate-bytecode-files', 906 | 'JavaScriptCore/bytecode/BytecodeList.json', 907 | ], 908 | cmd = ' '.join([ 909 | 'python', 910 | '$SRCDIR/JavaScriptCore/generate-bytecode-files', 911 | '--bytecodes_h', '$OUT', 912 | '$SRCDIR/JavaScriptCore/bytecode/BytecodeList.json', 913 | ]), 914 | ) 915 | JSC_HEADERS['Bytecodes.h'] = ':Bytecodes.h' 916 | 917 | genrule( 918 | name = 'InitBytecodes.asm', 919 | out = 'InitBytecodes.asm', 920 | srcs = [ 921 | 'JavaScriptCore/generate-bytecode-files', 922 | 'JavaScriptCore/bytecode/BytecodeList.json', 923 | ], 924 | cmd = ' '.join([ 925 | 'python', 926 | '$SRCDIR/JavaScriptCore/generate-bytecode-files', 927 | '--init_bytecodes_asm', '$OUT', 928 | '$SRCDIR/JavaScriptCore/bytecode/BytecodeList.json', 929 | ]), 930 | ) 931 | 932 | SOURCES = glob([ 933 | 'JavaScriptCore/offlineasm/*.rb', 934 | 'JavaScriptCore/llint/*.rb', 935 | 'JavaScriptCore/llint/*.asm', 936 | 'JavaScriptCore/*.asm', 937 | ]) 938 | SOURCES.append(':InitBytecodes.asm') 939 | for platform in ('android-armv7', 'android-x86'): 940 | source = 'LLIntAssembly.{0}.h'.format(platform) 941 | genrule( 942 | name = source, 943 | out = source, 944 | srcs = SOURCES, 945 | cmd = ' '.join([ 946 | 'ruby', 947 | 'JavaScriptCore/offlineasm/asm.rb', 948 | '-IJavaScriptCore', 949 | '-I.', 950 | 'JavaScriptCore/llint/LowLevelInterpreter.asm', 951 | '$(location :jscoffsetextractor#static,{0})'.format(platform), 952 | '$OUT', 953 | ]), 954 | ) 955 | add_gen_source(source) 956 | 957 | ###### INSPECTOR SOURCES ###### 958 | 959 | INSPECTOR_SCRIPT = 'JavaScriptCore/inspector/scripts/generate-combined-inspector-json.py' 960 | INSPECTOR_DOMAINS = [ 961 | 'JavaScriptCore/inspector/protocol/Console.json', 962 | 'JavaScriptCore/inspector/protocol/Debugger.json', 963 | 'JavaScriptCore/inspector/protocol/GenericTypes.json', 964 | 'JavaScriptCore/inspector/protocol/InspectorDomain.json', 965 | 'JavaScriptCore/inspector/protocol/Runtime.json', 966 | ] 967 | genrule( 968 | name = 'InspectorJS.json', 969 | out = 'InspectorJS.json', 970 | srcs = [INSPECTOR_SCRIPT] + INSPECTOR_DOMAINS, 971 | cmd = 972 | '$SRCDIR/{script} {sources} > $OUT' 973 | .format(script=INSPECTOR_SCRIPT, sources=' '.join(INSPECTOR_DOMAINS)), 974 | ) 975 | 976 | # Run the script to generate all the inspector C/C++ sources and pack them into 977 | # a zip file. 978 | SCRIPT = 'JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py' 979 | INSPECTOR_GENERATOR_SCRIPTS = [ 980 | 'JavaScriptCore/inspector/scripts/codegen/__init__.py', 981 | 'JavaScriptCore/inspector/scripts/codegen/generate_backend_commands.py', 982 | 'JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_header.py', 983 | 'JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_implementation.py', 984 | 'JavaScriptCore/inspector/scripts/codegen/generate_frontend_dispatcher_header.py', 985 | 'JavaScriptCore/inspector/scripts/codegen/generate_frontend_dispatcher_implementation.py', 986 | 'JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_header.py', 987 | 'JavaScriptCore/inspector/scripts/codegen/generate_protocol_types_implementation.py', 988 | 'JavaScriptCore/inspector/scripts/codegen/generator_templates.py', 989 | 'JavaScriptCore/inspector/scripts/codegen/generator.py', 990 | 'JavaScriptCore/inspector/scripts/codegen/models.py', 991 | 'JavaScriptCore/inspector/scripts/generate-combined-inspector-json.py', 992 | 'JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py', 993 | ] 994 | genrule( 995 | name = 'inspector_sources', 996 | out = 'inspector_sources.zip', 997 | srcs = [SCRIPT] + INSPECTOR_GENERATOR_SCRIPTS, 998 | cmd = SCRIPT + ' --framework JavaScriptCore --outputDir $TMP $(location :InspectorJS.json) && (cd $TMP && zip -r -0 $OUT *.cpp *.h)', 999 | ) 1000 | 1001 | # Now unpack the source we care about via independent genrules so we 1002 | # can plug them into our sources and headers list. 1003 | INSPECTOR_SOURCES = [ 1004 | 'InspectorJSBackendDispatchers.cpp', 1005 | 'InspectorJSFrontendDispatchers.cpp', 1006 | 'InspectorJSProtocolTypes.cpp', 1007 | 'InspectorJSBackendDispatchers.h', 1008 | 'InspectorJSFrontendDispatchers.h', 1009 | 'InspectorJSProtocolTypes.h', 1010 | ] 1011 | 1012 | for source in INSPECTOR_SOURCES: 1013 | unpack_rule(source, ':inspector_sources') 1014 | add_gen_source(source) 1015 | 1016 | genrule( 1017 | name = 'InjectedScriptSource.h', 1018 | out = 'InjectedScriptSource.h', 1019 | srcs = [ 1020 | 'JavaScriptCore/inspector/scripts/jsmin.py', 1021 | 'JavaScriptCore/inspector/InjectedScriptSource.js', 1022 | 'JavaScriptCore/inspector/scripts/xxd.pl', 1023 | ], 1024 | cmd = ' && '.join([ 1025 | 'echo "//# sourceURL=__WebInspectorInjectedScript__" > $TMP/InjectedScriptSource.min.js', 1026 | 'python JavaScriptCore/inspector/scripts/jsmin.py < JavaScriptCore/inspector/InjectedScriptSource.js >> $TMP/InjectedScriptSource.min.js', 1027 | 'perl JavaScriptCore/inspector/scripts/xxd.pl InjectedScriptSource_js $TMP/InjectedScriptSource.min.js $OUT', 1028 | ]), 1029 | ) 1030 | add_gen_source('InjectedScriptSource.h') 1031 | 1032 | ###### END INSPECTOR SOURCES ###### 1033 | 1034 | ###### JSC Builtins ###### 1035 | 1036 | SCRIPT = 'JavaScriptCore/generate-js-builtins' 1037 | SOURCES = glob(['JavaScriptCore/builtins/*.js']) 1038 | genrule( 1039 | name = 'JSCBuiltins', 1040 | out = 'JSCBuiltins.zip', 1041 | srcs = [SCRIPT] + SOURCES, 1042 | cmd = 1043 | 'python {script} {sources} $TMP/JSCBuiltins.h && (cd $TMP && zip -r -0 $OUT *.h *.cpp)' 1044 | .format(script=SCRIPT, sources=' '.join(SOURCES)), 1045 | ) 1046 | 1047 | BUILTINS_SOURCES = [ 1048 | 'JSCBuiltins.h', 1049 | 'JSCBuiltins.cpp', 1050 | ] 1051 | for source in BUILTINS_SOURCES: 1052 | unpack_rule(source, ':JSCBuiltins') 1053 | add_gen_source(source) 1054 | 1055 | ###### END JSC Builtins ###### 1056 | 1057 | cxx_library( 1058 | name = 'jsc', 1059 | soname = 'libjsc.so', 1060 | supported_platforms_regex = SUPPORTED_PLATFORMS, 1061 | preprocessor_flags = [ 1062 | '-DWTF_USE_EXPORT_MACROS=1', 1063 | '-DBUILDING_JavaScriptCore=1', 1064 | '-DENABLE_JIT=1', 1065 | '-DENABLE_DFG_JIT=0', 1066 | '-DENABLE_LLINT=1', 1067 | '-DINTPTR_MAX=LONG_MAX', 1068 | '-DLOG_TAG="JavaScriptCore"', 1069 | ], 1070 | compiler_flags = [ 1071 | '-fvisibility=hidden', 1072 | ], 1073 | header_namespace = '', 1074 | exported_headers = JSC_HEADERS, 1075 | headers = subdir_glob([ 1076 | ('extra_headers', '*.h'), 1077 | ('extra_headers', 'unicode/udat.h'), 1078 | ]), 1079 | srcs = JSC_SOURCES, 1080 | deps = [ 1081 | ':wtf', 1082 | ':wtfcollation', 1083 | '//icu:common', 1084 | '//icu:i18n', 1085 | ], 1086 | visibility = [ 1087 | 'PUBLIC', 1088 | ], 1089 | ) 1090 | 1091 | # JSC offset extractor: this extracts the offsets into various JSC internal 1092 | # structures that are then fed back into the low level interpreter 1093 | 1094 | JSCOFFSETEXTRACTOR_HEADERS = {} 1095 | JSCOFFSETEXTRACTOR_HEADERS['LLIntDesiredOffsets.h'] = ':llint_desired_offsets' 1096 | JSCOFFSETEXTRACTOR_HEADERS['Bytecodes.h'] = ':Bytecodes.h' 1097 | JSCOFFSETEXTRACTOR_HEADERS.update( 1098 | subdir_glob([ 1099 | ('JavaScriptCore', '*.h'), 1100 | ('JavaScriptCore/API', '*.h'), 1101 | ('', 'JavaScriptCore/API/*.h'), 1102 | ('JavaScriptCore/assembler', '*.h'), 1103 | ('JavaScriptCore/bindings', '*.h'), 1104 | ('JavaScriptCore/builtins', '*.h'), 1105 | ('JavaScriptCore/bytecode', '*.h'), 1106 | ('JavaScriptCore/bytecompiler', '*.h'), 1107 | ('JavaScriptCore/debugger', '*.h'), 1108 | ('JavaScriptCore/disassembler', '*.h'), 1109 | ('JavaScriptCore/dfg', '*.h'), 1110 | ('JavaScriptCore/ForwardingHeaders', '**/*.h'), 1111 | ('JavaScriptCore/ftl', '*.h'), 1112 | ('JavaScriptCore/heap', '*.h'), 1113 | ('JavaScriptCore/interpreter', '*.h'), 1114 | ('JavaScriptCore/inspector', '*.h'), 1115 | ('JavaScriptCore/inspector/agents', '*.h'), 1116 | ('JavaScriptCore/llint', '*.h'), 1117 | ('JavaScriptCore/jit', '*.h'), 1118 | ('JavaScriptCore/parser', '*.h'), 1119 | ('JavaScriptCore/profiler', '*.h'), 1120 | ('JavaScriptCore/runtime', '*.h'), 1121 | ('JavaScriptCore/tools', '*.h'), 1122 | ('JavaScriptCore', 'yarr/*.h'), 1123 | ]), 1124 | ) 1125 | 1126 | cxx_library( 1127 | name = 'jscoffsetextractor', 1128 | soname = 'libjscoffsetextractor.so', 1129 | force_static = True, 1130 | supported_platforms_regex = SUPPORTED_PLATFORMS, 1131 | preprocessor_flags = [ 1132 | '-DENABLE_JIT=1', 1133 | '-DENABLE_DFG_JIT=0', 1134 | '-DENABLE_LLINT=1', 1135 | ], 1136 | headers = JSCOFFSETEXTRACTOR_HEADERS, 1137 | header_namespace = '', 1138 | srcs = [ 1139 | 'JavaScriptCore/llint/LLIntOffsetsExtractor.cpp', 1140 | ], 1141 | deps = [ 1142 | ':wtf', 1143 | ], 1144 | ) 1145 | 1146 | -------------------------------------------------------------------------------- /jsc/extra_headers/LLIntAssembly.h: -------------------------------------------------------------------------------- 1 | // Copyright 2004-present Facebook. All Rights Reserved. 2 | 3 | #if defined(__ANDROID__) && defined(__ARM_ARCH_7A__) 4 | #include "LLIntAssembly.android-armv7.h" 5 | #elif defined(__ANDROID__) && defined(__i386__) 6 | #include "LLIntAssembly.android-x86.h" 7 | #else 8 | #error "Platform not supported" 9 | #endif 10 | -------------------------------------------------------------------------------- /jsc/extra_headers/collation_hack.h: -------------------------------------------------------------------------------- 1 | // Copyright 2004-present Facebook. All Rights Reserved. 2 | 3 | #ifndef COLLACTION_HACK_H 4 | #define COLLACTION_HACK_H 1 5 | 6 | // This extra header file allow CollatorDefault.cpp to compile with 7 | // UCONFIG_NO_COLLATION flag enabled. We need to enable that flag because 8 | // otherwise we'd need to include ICU library in our builds. 9 | // It turns out that since no-one is using this flag to test WebKit builds 10 | // the CollatorDefault.cpp won't compile because of the following issues: 11 | // 1) Definition of StringView is missing 12 | // 2) methods of Collator class it defines are declared static in a header file, 13 | // therefore the "const" modifier for those methods is illegal 14 | // 15 | // This file will be included with -include preprocessor option for compiling 16 | // ColloratorDefault.cpp, thus we can apply some hacks here to workaround the 17 | // issues mentioned above: 18 | // 1) We include StringView.h header 19 | // 2) We redefine "const" to empty string. The issue here is that because of 20 | // that "const char*" will be renamed to "char*". Therefore we also define 21 | // "char" to be replaced by "ConstChar" type that is a typedef of a 22 | // "const char*" but it's typedef definition comes before #define statement 23 | // for "const". Moreover to avoid #define statement to apply for the header 24 | // files that CollatorDefault.cpp is including we first include all the files 25 | // that are required there, so that when the #include statement is hit in 26 | // ColloratorDefault.cpp those are already included and preprocessor won't 27 | // process them again and won't replace "const" tokens they may contain 28 | 29 | #include "WTF/config.h" 30 | #include 31 | #include 32 | 33 | typedef const char ConstChar; 34 | #define const 35 | #define char ConstChar 36 | 37 | #endif /* COLLACTION_HACK_H */ 38 | -------------------------------------------------------------------------------- /jsc/extra_headers/langinfo.h: -------------------------------------------------------------------------------- 1 | // Copyright 2004-present Facebook. All Rights Reserved. 2 | 3 | #ifndef FAKE_LANGINFO_H 4 | #define FAKE_LANGINFO_H 1 5 | 6 | // This is a fake implementation of that disables HAVE_LANGINFO_H variable 7 | // soo that DatePrototype.cpp can compile without errors 8 | // langinfo.h is not included by other files in JSC except for DatePrototype.cpp 9 | 10 | #undef HAVE_LANGINFO_H 11 | 12 | #endif /* langinfo.h */ 13 | --------------------------------------------------------------------------------