diff --git a/Source/JavaScriptCore/API/JSWrapperMap.h b/Source/JavaScriptCore/API/JSWrapperMap.h index 6c18c64b4c79..a5946a8f83f0 100644 --- a/Source/JavaScriptCore/API/JSWrapperMap.h +++ b/Source/JavaScriptCore/API/JSWrapperMap.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 Apple Inc. All rights reserved. + * Copyright (C) 2013-2023 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -23,8 +23,8 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "JSValueInternal.h" #import -#import #import #if JSC_OBJC_API_ENABLED diff --git a/Source/JavaScriptCore/API/ObjCCallbackFunction.h b/Source/JavaScriptCore/API/ObjCCallbackFunction.h index ba7800a530f6..9ce32bc49c18 100644 --- a/Source/JavaScriptCore/API/ObjCCallbackFunction.h +++ b/Source/JavaScriptCore/API/ObjCCallbackFunction.h @@ -29,7 +29,7 @@ #if JSC_OBJC_API_ENABLED -#import +#import "JSCallbackFunction.h" #if defined(__OBJC__) @class JSContext; diff --git a/Source/JavaScriptCore/Configurations/Base.xcconfig b/Source/JavaScriptCore/Configurations/Base.xcconfig index 3c861531e6b9..a7cdf1ddb1ea 100644 --- a/Source/JavaScriptCore/Configurations/Base.xcconfig +++ b/Source/JavaScriptCore/Configurations/Base.xcconfig @@ -156,3 +156,18 @@ WK_DEFAULT_LTO_MODE = $(WK_USER_LTO_MODE_thin); WK_PROCESSED_XCENT_FILE=$(TEMP_FILE_DIR)/$(FULL_PRODUCT_NAME).entitlements WK_USE_RESTRICTED_ENTITLEMENTS = $(USE_INTERNAL_SDK); + +// Shared variables used for dynamic or static linking of JavaScriptCore and jsc. + +OTHER_LDFLAGS_JAVASCRIPTCORE_DEPS = -fobjc-link-runtime -licucore -framework Security; + +WTF_ARCHIVE = $(BUILT_PRODUCTS_DIR)/libWTF.a; +WTF_ARCHIVE[config=Production] = $(SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_INSTALL_PATH)/libWTF.a; + +BMALLOC_ARCHIVE = $(BUILT_PRODUCTS_DIR)/libbmalloc.a; +BMALLOC_ARCHIVE[config=Production] = $(SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_INSTALL_PATH)/libbmalloc.a; + +LIBPAS_ARCHIVE = $(BUILT_PRODUCTS_DIR)/libpas.a; +LIBPAS_ARCHIVE[config=Production] = $(SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_INSTALL_PATH)/libpas.a; + +LIBJAVASCRIPTCORE_ARCHIVE = $(BUILT_PRODUCTS_DIR)/libJavaScriptCore.a; diff --git a/Source/JavaScriptCore/Configurations/BaseTarget.xcconfig b/Source/JavaScriptCore/Configurations/BaseTarget.xcconfig new file mode 100644 index 000000000000..faab546cd4b1 --- /dev/null +++ b/Source/JavaScriptCore/Configurations/BaseTarget.xcconfig @@ -0,0 +1,31 @@ +// Copyright (C) 2009-2023 Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include "../../../Configurations/Version.xcconfig" + +GCC_PREFIX_HEADER = JavaScriptCorePrefix.h; +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(ENABLE_LLVM_PROFILE_GENERATION) PAS_BMALLOC_HIDDEN; +GCC_SYMBOLS_PRIVATE_EXTERN = YES; +OTHER_CFLAGS = $(inherited) -fno-slp-vectorize --system-header-prefix=unicode/ -D__STDC_WANT_LIB_EXT1__=1; +HEADER_SEARCH_PATHS = "${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore" $(HEADER_SEARCH_PATHS); +PRODUCT_NAME = JavaScriptCore; diff --git a/Source/JavaScriptCore/Configurations/JSC.xcconfig b/Source/JavaScriptCore/Configurations/JSC.xcconfig index 0415371e4fec..4771dcecdafa 100644 --- a/Source/JavaScriptCore/Configurations/JSC.xcconfig +++ b/Source/JavaScriptCore/Configurations/JSC.xcconfig @@ -1,4 +1,4 @@ -// Copyright (C) 2011-2022 Apple Inc. All rights reserved. +// Copyright (C) 2011-2023 Apple Inc. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions @@ -25,7 +25,11 @@ INSTALL_PATH = $(INSTALL_PATH_PREFIX)$(JAVASCRIPTCORE_FRAMEWORKS_DIR)/$(JAVASCRIPTCORE_HELPERS_DIR); -OTHER_LDFLAGS = $(inherited) $(WK_RELOCATABLE_FRAMEWORKS_LDFLAGS) $(SOURCE_VERSION_LDFLAGS); +JSC_USE_STATIC_LINKING = $(WK_NOT_$(WK_NOT_$(ENABLE_LIBFUZZER))); + +OTHER_LDFLAGS = $(inherited) $(OTHER_LDFLAGS_STATIC_LINKING_$(JSC_USE_STATIC_LINKING)); +OTHER_LDFLAGS_STATIC_LINKING_YES = $(OTHER_LDFLAGS_JAVASCRIPTCORE_DEPS) $(WTF_ARCHIVE) $(BMALLOC_ARCHIVE) $(LIBPAS_ARCHIVE) $(LIBJAVASCRIPTCORE_ARCHIVE); +OTHER_LDFLAGS_STATIC_LINKING_NO = -framework JavaScriptCore $(WK_RELOCATABLE_FRAMEWORKS_LDFLAGS) $(SOURCE_VERSION_LDFLAGS); WK_RELOCATABLE_FRAMEWORKS_LDFLAGS = $(WK_RELOCATABLE_FRAMEWORKS_LDFLAGS_$(WK_RELOCATABLE_FRAMEWORKS)); WK_RELOCATABLE_FRAMEWORKS_LDFLAGS_YES = -Wl,-dyld_env,DYLD_FRAMEWORK_PATH=@executable_path/../../../..; diff --git a/Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig b/Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig index c468897ce943..5f3772c471ba 100644 --- a/Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig +++ b/Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig @@ -19,9 +19,9 @@ // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#include "../../../Configurations/Version.xcconfig" +#include "BaseTarget.xcconfig" DEFINES_MODULE = YES; MODULEMAP_FILE = $(SRCROOT)/JavaScriptCore.modulemap; @@ -61,46 +61,18 @@ WK_NO_STATIC_INITIALIZERS_Release_NO_ = $(WK_ERROR_WHEN_LINKING_WITH_STATIC_INIT WK_NO_STATIC_INITIALIZERS_Production__ = $(WK_ERROR_WHEN_LINKING_WITH_STATIC_INITIALIZERS); WK_NO_STATIC_INITIALIZERS_Production_NO_ = $(WK_ERROR_WHEN_LINKING_WITH_STATIC_INITIALIZERS); -OTHER_LDFLAGS_BASE = -unexported_symbols_list $(SRCROOT)/unexported-libc++.txt -force_load $(WTF_ARCHIVE) -force_load $(BMALLOC_ARCHIVE) -load_hidden $(LIBPAS_ARCHIVE) $(SOURCE_VERSION_LDFLAGS) $(WK_NO_STATIC_INITIALIZERS); +OTHER_LDFLAGS_BASE = $(OTHER_LDFLAGS_JAVASCRIPTCORE_DEPS) -unexported_symbols_list $(SRCROOT)/unexported-libc++.txt -force_load $(WTF_ARCHIVE) -force_load $(BMALLOC_ARCHIVE) -force_load $(LIBJAVASCRIPTCORE_ARCHIVE) -load_hidden $(LIBPAS_ARCHIVE) $(SOURCE_VERSION_LDFLAGS) $(WK_NO_STATIC_INITIALIZERS); OTHER_LDFLAGS[sdk=embedded*] = $(inherited) $(OTHER_LDFLAGS_BASE); OTHER_LDFLAGS[sdk=macosx*] = $(inherited) $(OTHER_LDFLAGS_BASE) -framework CoreServices $(PROFILE_GENERATE_OR_USE_LDFLAGS); -WTF_ARCHIVE = $(BUILT_PRODUCTS_DIR)/libWTF.a; -WTF_ARCHIVE[config=Production] = $(SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_INSTALL_PATH)/libWTF.a; - -BMALLOC_ARCHIVE = $(BUILT_PRODUCTS_DIR)/libbmalloc.a; -BMALLOC_ARCHIVE[config=Production] = $(SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_INSTALL_PATH)/libbmalloc.a; - -LIBPAS_ARCHIVE = $(BUILT_PRODUCTS_DIR)/libpas.a; -LIBPAS_ARCHIVE[config=Production] = $(SDK_DIR)$(WK_ALTERNATE_WEBKIT_SDK_PATH)$(WK_LIBRARY_INSTALL_PATH)/libpas.a; - SECTORDER_FLAGS = $(SECTORDER_FLAGS_$(CONFIGURATION)); SECTORDER_FLAGS_Production[sdk=macosx*] = -Wl,-order_file,JavaScriptCore.order; -CLANG_OPTIMIZATION_PROFILE_FILE = $(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/JavaScriptCore.profdata; -WK_COMPRESSED_OPTIMIZATION_PROFILE_FILE = $(WK_COMPRESSED_OPTIMIZATION_PROFILE_FILE_$(USE_INTERNAL_SDK)); -WK_COMPRESSED_OPTIMIZATION_PROFILE_FILE_YES = $(WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH)/Profiling/JavaScriptCore.profdata.compressed; - -CLANG_USE_OPTIMIZATION_PROFILE = $(CLANG_USE_OPTIMIZATION_PROFILE_$(USE_INTERNAL_SDK)_$(CONFIGURATION)_$(WK_PLATFORM_NAME)); -CLANG_USE_OPTIMIZATION_PROFILE_YES_Release_macosx = YES; -CLANG_USE_OPTIMIZATION_PROFILE_YES_Release_iphoneos = YES; -CLANG_USE_OPTIMIZATION_PROFILE_YES_Production_macosx = YES; -CLANG_USE_OPTIMIZATION_PROFILE_YES_Production_iphoneos = YES; - -CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING = $(CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING_$(ENABLE_LLVM_PROFILE_GENERATION)); -CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING_ENABLE_LLVM_PROFILE_GENERATION = YES; - -GCC_PREFIX_HEADER = JavaScriptCorePrefix.h; -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(ENABLE_LLVM_PROFILE_GENERATION) PAS_BMALLOC_HIDDEN; -GCC_SYMBOLS_PRIVATE_EXTERN = YES; -OTHER_CFLAGS = $(inherited) -fno-slp-vectorize --system-header-prefix=unicode/ -D__STDC_WANT_LIB_EXT1__=1; -HEADER_SEARCH_PATHS = "${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore" $(HEADER_SEARCH_PATHS); INFOPLIST_FILE = Info.plist; INSTALL_PATH = $(INSTALL_PATH_PREFIX)$(JAVASCRIPTCORE_FRAMEWORKS_DIR); DYLIB_INSTALL_NAME_BASE = $(DYLIB_INSTALL_NAME_BASE_$(WK_USE_ALTERNATE_FRAMEWORKS_DIR)); DYLIB_INSTALL_NAME_BASE_NO = $(NORMAL_JAVASCRIPTCORE_FRAMEWORKS_DIR) DYLIB_INSTALL_NAME_BASE_YES = $(JAVASCRIPTCORE_FRAMEWORKS_DIR); -PRODUCT_NAME = JavaScriptCore; PRODUCT_BUNDLE_IDENTIFIER = com.apple.$(PRODUCT_NAME:rfc1034identifier); ALTERNATE_ROOT_PATH = $(JAVASCRIPTCORE_FRAMEWORKS_DIR); @@ -113,6 +85,3 @@ APPLY_RULES_IN_COPY_HEADERS = YES; JSC_FRAMEWORK_HEADER_POSTPROCESSING_DISABLED = YES; JSC_FRAMEWORK_HEADER_POSTPROCESSING_DISABLED[config=Production] = $(WK_USE_OVERRIDE_FRAMEWORKS_DIR); - -EXCLUDED_SOURCE_FILE_NAMES = $(inherited); -EXCLUDED_SOURCE_FILE_NAMES[sdk=iphone*] = $(inherited) framework.sb; diff --git a/Source/JavaScriptCore/Configurations/libJavaScriptCore.xcconfig b/Source/JavaScriptCore/Configurations/libJavaScriptCore.xcconfig new file mode 100644 index 000000000000..21b87064a66e --- /dev/null +++ b/Source/JavaScriptCore/Configurations/libJavaScriptCore.xcconfig @@ -0,0 +1,44 @@ +// Copyright (C) 2009-2023 Apple Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include "BaseTarget.xcconfig" + +CLANG_OPTIMIZATION_PROFILE_FILE = $(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/JavaScriptCore.profdata; +WK_COMPRESSED_OPTIMIZATION_PROFILE_FILE = $(WK_COMPRESSED_OPTIMIZATION_PROFILE_FILE_$(USE_INTERNAL_SDK)); +WK_COMPRESSED_OPTIMIZATION_PROFILE_FILE_YES = $(WK_WEBKITADDITIONS_HEADERS_FOLDER_PATH)/Profiling/JavaScriptCore.profdata.compressed; + +CLANG_USE_OPTIMIZATION_PROFILE = $(CLANG_USE_OPTIMIZATION_PROFILE_$(USE_INTERNAL_SDK)_$(CONFIGURATION)_$(WK_PLATFORM_NAME)); +CLANG_USE_OPTIMIZATION_PROFILE_YES_Release_macosx = YES; +CLANG_USE_OPTIMIZATION_PROFILE_YES_Release_iphoneos = YES; +CLANG_USE_OPTIMIZATION_PROFILE_YES_Production_macosx = YES; +CLANG_USE_OPTIMIZATION_PROFILE_YES_Production_iphoneos = YES; + +CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING = $(CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING_$(ENABLE_LLVM_PROFILE_GENERATION)); +CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING_ENABLE_LLVM_PROFILE_GENERATION = YES; + +SKIP_INSTALL = YES; + +STRIP_INSTALLED_PRODUCT = NO; + +EXCLUDED_SOURCE_FILE_NAMES = $(inherited); +EXCLUDED_SOURCE_FILE_NAMES[sdk=iphone*] = $(inherited) framework.sb; diff --git a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj index d9daa0f505f2..82a2d2b02fd1 100644 --- a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj +++ b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj @@ -938,6 +938,7 @@ 43AB26C61C1A535900D82AE6 /* B3MathExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 43AB26C51C1A52F700D82AE6 /* B3MathExtras.h */; }; 43C392AB1C3BEB0500241F53 /* AssemblerCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 43C392AA1C3BEB0000241F53 /* AssemblerCommon.h */; settings = {ATTRIBUTES = (Private, ); }; }; 4443AE3316E188D90076F110 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51F0EB6105C86C6B00E6DF1B /* Foundation.framework */; }; + 44F93E0E2AE71FBD00FFA37C /* JavaScriptCoreFramework.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 44F93E0D2AE71F9F00FFA37C /* JavaScriptCoreFramework.cpp */; }; 451539B912DC994500EF7AC4 /* Yarr.h in Headers */ = {isa = PBXBuildFile; fileRef = 451539B812DC994500EF7AC4 /* Yarr.h */; settings = {ATTRIBUTES = (Private, ); }; }; 473DA4A4764C45FE871B0485 /* DefinePropertyAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 169948EDE68D4054B01EF797 /* DefinePropertyAttributes.h */; settings = {ATTRIBUTES = (Private, ); }; }; 4B1F22F62900BFC700CB5E66 /* Width.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBA4CD428FF5FE5003EBFC4 /* Width.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -1424,11 +1425,7 @@ 918E15C12447B22700447A56 /* AggregateErrorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 918E15BD2447B22600447A56 /* AggregateErrorPrototype.h */; }; 918E15C32447B22700447A56 /* AggregateErrorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 918E15BF2447B22700447A56 /* AggregateErrorConstructor.h */; }; 93052C350FB792190048FDC3 /* ParserArena.h in Headers */ = {isa = PBXBuildFile; fileRef = 93052C330FB792190048FDC3 /* ParserArena.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 932F5BD30822A1C700736975 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6560A4CF04B3B3E7008AE952 /* CoreFoundation.framework */; }; - 932F5BD60822A1C700736975 /* libobjc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 51F0EC0705C86C9A00E6DF1B /* libobjc.dylib */; }; - 932F5BD70822A1C700736975 /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 9322A00306C341D3009067BB /* libicucore.dylib */; }; 932F5BDD0822A1C700736975 /* jsc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45E12D8806A49B0F00E9DF84 /* jsc.cpp */; }; - 932F5BEA0822A1C700736975 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 932F5BD90822A1C700736975 /* JavaScriptCore.framework */; }; 933040040E6A749400786E6A /* SmallStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = 93303FEA0E6A72C000786E6A /* SmallStrings.h */; settings = {ATTRIBUTES = (Private, ); }; }; 93BFC6D929B344C90030D7BE /* GlobalObjectMethodTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 93BFC6D829B344C80030D7BE /* GlobalObjectMethodTable.h */; settings = {ATTRIBUTES = (Private, ); }; }; 95CA6AD328809E010062D5EC /* ImplementationVisibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 95CA6AD228809E010062D5EC /* ImplementationVisibility.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -1501,7 +1498,6 @@ A503FA1A188E0FB000110F14 /* JavaScriptCallFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = A503FA14188E0FAF00110F14 /* JavaScriptCallFrame.h */; }; A503FA1E188E0FB000110F14 /* JSJavaScriptCallFramePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A503FA18188E0FB000110F14 /* JSJavaScriptCallFramePrototype.h */; }; A503FA2A188F105900110F14 /* JSGlobalObjectDebugger.h in Headers */ = {isa = PBXBuildFile; fileRef = A503FA28188F105900110F14 /* JSGlobalObjectDebugger.h */; }; - A5098B041C16AA0200087797 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A5098B031C16AA0200087797 /* Security.framework */; }; A50E4B6218809DD50068A46D /* InspectorRuntimeAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = A50E4B5E18809DD50068A46D /* InspectorRuntimeAgent.h */; settings = {ATTRIBUTES = (Private, ); }; }; A50E4B6418809DD50068A46D /* JSGlobalObjectRuntimeAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = A50E4B6018809DD50068A46D /* JSGlobalObjectRuntimeAgent.h */; }; A51007C1187CC3C600B38879 /* JSGlobalObjectInspectorController.h in Headers */ = {isa = PBXBuildFile; fileRef = A51007BF187CC3C600B38879 /* JSGlobalObjectInspectorController.h */; }; @@ -1601,7 +1597,6 @@ A7299DA617D12858005F5FF9 /* SetConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7299DA417D12858005F5FF9 /* SetConstructor.h */; }; A72FFD64139985A800E5365A /* KeywordLookup.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C225CD1399849C00FF1662 /* KeywordLookup.h */; }; A730B6121250068F009D25B1 /* StrictEvalActivation.h in Headers */ = {isa = PBXBuildFile; fileRef = A730B6101250068F009D25B1 /* StrictEvalActivation.h */; }; - A731B25A130093880040A7FA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51F0EB6105C86C6B00E6DF1B /* Foundation.framework */; }; A737810E1799EA2E00817533 /* DFGNaturalLoops.h in Headers */ = {isa = PBXBuildFile; fileRef = A737810B1799EA2E00817533 /* DFGNaturalLoops.h */; }; A7386554118697B400540279 /* SpecializedThunkJIT.h in Headers */ = {isa = PBXBuildFile; fileRef = A7386551118697B400540279 /* SpecializedThunkJIT.h */; }; A7386556118697B400540279 /* ThunkGenerators.h in Headers */ = {isa = PBXBuildFile; fileRef = A7386553118697B400540279 /* ThunkGenerators.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -1878,7 +1873,6 @@ DD546FEC29CD2A5D00A5173B /* AirTmpWidthInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEC858F2BDACDC70080FF74 /* AirTmpWidthInlines.h */; }; DD5F74F9283EF58D0027A8C6 /* copy-profiling-data.sh in Headers */ = {isa = PBXBuildFile; fileRef = DD5F74F8283EF4380027A8C6 /* copy-profiling-data.sh */; settings = {ATTRIBUTES = (Private, ); }; }; DDB04F41278E569A008D3678 /* libWTF.a in Product Dependencies */ = {isa = PBXBuildFile; fileRef = 1498CAD3214656C400710879 /* libWTF.a */; }; - DDB04F42278E56A2008D3678 /* libWTF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1498CAD3214656C400710879 /* libWTF.a */; }; DDE99312278D089000F60D26 /* libWebKitAdditions.a in Product Dependencies */ = {isa = PBXBuildFile; fileRef = DDE9930E278D086600F60D26 /* libWebKitAdditions.a */; }; DE26E9031CB5DD0500D2BE82 /* BuiltinExecutableCreator.h in Headers */ = {isa = PBXBuildFile; fileRef = DE26E9021CB5DD0500D2BE82 /* BuiltinExecutableCreator.h */; }; DEA7E2451BBC677F00D78440 /* JSTypedArrayViewPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 53917E7C1B791106000EBD33 /* JSTypedArrayViewPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -2383,6 +2377,13 @@ remoteGlobalIDString = 65FB3F6609D11E9100F49DEB; remoteInfo = "Derived Sources"; }; + 44F93E102AE7200100FFA37C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 44F93E012AE71F5300FFA37C; + remoteInfo = libJavaScriptCore; + }; 52CD0F652242F5A3004A18A5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; @@ -3935,6 +3936,10 @@ 43AB26C51C1A52F700D82AE6 /* B3MathExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = B3MathExtras.h; path = b3/B3MathExtras.h; sourceTree = ""; }; 43C392AA1C3BEB0000241F53 /* AssemblerCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AssemblerCommon.h; sourceTree = ""; }; 442FBD852149D1E00073519C /* hasher.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; name = hasher.py; path = yarr/hasher.py; sourceTree = ""; }; + 443CB47A2AE8A4E100878CC0 /* BaseTarget.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = BaseTarget.xcconfig; sourceTree = ""; }; + 44F93DFD2AE71EBD00FFA37C /* libJavaScriptCore.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = libJavaScriptCore.xcconfig; sourceTree = ""; }; + 44F93E022AE71F5400FFA37C /* libJavaScriptCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libJavaScriptCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 44F93E0D2AE71F9F00FFA37C /* JavaScriptCoreFramework.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JavaScriptCoreFramework.cpp; sourceTree = ""; }; 451539B812DC994500EF7AC4 /* Yarr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Yarr.h; path = yarr/Yarr.h; sourceTree = ""; }; 45E12D8806A49B0F00E9DF84 /* jsc.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = jsc.cpp; sourceTree = ""; tabWidth = 4; }; 4B78E098294427D2003C6682 /* B3SIMDValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = B3SIMDValue.cpp; path = b3/B3SIMDValue.cpp; sourceTree = ""; }; @@ -6085,6 +6090,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 44F93DFF2AE71F5300FFA37C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 52CD0F5C2242F569004A18A5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -6116,12 +6128,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 932F5BD30822A1C700736975 /* CoreFoundation.framework in Frameworks */, - A731B25A130093880040A7FA /* Foundation.framework in Frameworks */, - 932F5BD70822A1C700736975 /* libicucore.dylib in Frameworks */, - 932F5BD60822A1C700736975 /* libobjc.dylib in Frameworks */, - DDB04F42278E56A2008D3678 /* libWTF.a in Frameworks */, - A5098B041C16AA0200087797 /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6129,7 +6135,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 932F5BEA0822A1C700736975 /* JavaScriptCore.framework in Frameworks */, 5D5D8AD10E0D0EBE00F9C692 /* libedit.dylib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -6162,6 +6167,7 @@ 79281BDC20B62B3E002E2A60 /* testmem */, 6511230514046A4C002B101D /* testRegExp */, 932F5BD90822A1C700736975 /* JavaScriptCore.framework */, + 44F93E022AE71F5400FFA37C /* libJavaScriptCore.a */, ); name = Products; sourceTree = ""; @@ -6175,9 +6181,10 @@ 530A63401FA3E31C0026A545 /* SourcesCocoa.txt */, F68EBB8C0255D4C601FF60F7 /* config.h */, F692A8540255597D01FF60F7 /* create_hash_table */, - 532631B3218777A5007B8191 /* JavaScriptCore.modulemap */, 937B63CC09E766D200A671DD /* DerivedSources.make */, 0F93275A1C20BCDF00CF6564 /* dynbench.cpp */, + 532631B3218777A5007B8191 /* JavaScriptCore.modulemap */, + 44F93E0D2AE71F9F00FFA37C /* JavaScriptCoreFramework.cpp */, F5C290E60284F98E018635CA /* JavaScriptCorePrefix.h */, 45E12D8806A49B0F00E9DF84 /* jsc.cpp */, A7C225CC139981F100FF1662 /* KeywordLookupGenerator.py */, @@ -7283,9 +7290,11 @@ isa = PBXGroup; children = ( 1C9051450BA9E8A70081E9D0 /* Base.xcconfig */, + 443CB47A2AE8A4E100878CC0 /* BaseTarget.xcconfig */, 1C9051440BA9E8A70081E9D0 /* DebugRelease.xcconfig */, 1C9051430BA9E8A70081E9D0 /* JavaScriptCore.xcconfig */, 5DAFD6CB146B686300FBEFB4 /* JSC.xcconfig */, + 44F93DFD2AE71EBD00FFA37C /* libJavaScriptCore.xcconfig */, FEE0A12229FE250400CED5E4 /* TestExecutable.xcconfig */, BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */, ); @@ -12046,6 +12055,30 @@ productReference = 14BD688E215191310050DAFF /* JSCLLIntSettingsExtractor */; productType = "com.apple.product-type.tool"; }; + 44F93E012AE71F5300FFA37C /* libJavaScriptCore */ = { + isa = PBXNativeTarget; + buildConfigurationList = 44F93E082AE71F5600FFA37C /* Build configuration list for PBXNativeTarget "libJavaScriptCore" */; + buildPhases = ( + F4CDF3C927E9147500191928 /* Copy Profiling Data */, + 44F93DFE2AE71F5300FFA37C /* Sources */, + 44F93DFF2AE71F5300FFA37C /* Frameworks */, + ); + buildRules = ( + DD284676291A27C90009A61D /* PBXBuildRule */, + DD41FA7D27CDA6FE00394D95 /* PBXBuildRule */, + 535E08C222545AC800DF00CA /* PBXBuildRule */, + ); + dependencies = ( + DD4ABD8429A6D61A00530828 /* PBXTargetDependency */, + DD4ABD8229A6D61A00530828 /* PBXTargetDependency */, + 65FB3F7E09D11EF300F49DEB /* PBXTargetDependency */, + 53B4BD141F68C2AA00D2BEA3 /* PBXTargetDependency */, + ); + name = libJavaScriptCore; + productName = JavaScriptCore; + productReference = 44F93E022AE71F5400FFA37C /* libJavaScriptCore.a */; + productType = "com.apple.product-type.library.static"; + }; 52CD0F592242F569004A18A5 /* testdfg */ = { isa = PBXNativeTarget; buildConfigurationList = 52CD0F5F2242F569004A18A5 /* Build configuration list for PBXNativeTarget "testdfg" */; @@ -12106,7 +12139,6 @@ buildConfigurationList = 149C275D08902AFE008A9EFC /* Build configuration list for PBXNativeTarget "JavaScriptCore" */; buildPhases = ( A53F1ABF18C90F8B0072EB6D /* Resources */, - F4CDF3C927E9147500191928 /* Copy Profiling Data */, 932F5B3F0822A1C700736975 /* Headers */, 932F5B910822A1C700736975 /* Sources */, 932F5BD20822A1C700736975 /* Frameworks */, @@ -12120,15 +12152,9 @@ DDA8F1542A15BEEA00BE8D11 /* Work around rdar://109484516 */, ); buildRules = ( - DD284676291A27C90009A61D /* PBXBuildRule */, - DD41FA7D27CDA6FE00394D95 /* PBXBuildRule */, - 535E08C222545AC800DF00CA /* PBXBuildRule */, ); dependencies = ( - DD4ABD8429A6D61A00530828 /* PBXTargetDependency */, - DD4ABD8229A6D61A00530828 /* PBXTargetDependency */, - 65FB3F7E09D11EF300F49DEB /* PBXTargetDependency */, - 53B4BD141F68C2AA00D2BEA3 /* PBXTargetDependency */, + 44F93E112AE7200100FFA37C /* PBXTargetDependency */, ); name = JavaScriptCore; productInstallPath = "${SYSTEM_LIBRARY_DIR}/Frameworks/WebKit.framework/Versions/A/Frameworks"; @@ -12183,6 +12209,9 @@ LastSwiftUpdateCheck = 0700; LastUpgradeCheck = 1140; TargetAttributes = { + 44F93E012AE71F5300FFA37C = { + CreatedOnToolsVersion = 15.0; + }; 5325BDBF21DFF2B100A0DEE1 = { CreatedOnToolsVersion = 10.1; ProvisioningStyle = Automatic; @@ -12203,6 +12232,7 @@ projectRoot = ""; targets = ( 932F5BE30822A1C700736975 /* All */, + 44F93E012AE71F5300FFA37C /* libJavaScriptCore */, 932F5B3E0822A1C700736975 /* JavaScriptCore */, 65FB3F6609D11E9100F49DEB /* Derived Sources */, 14BD6881215191310050DAFF /* JSCLLIntSettingsExtractor */, @@ -12856,31 +12886,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 52CD0F5A2242F569004A18A5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 52CD0F682242F71C004A18A5 /* testdfg.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 651122FA14046A4C002B101D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6511230714046B0A002B101D /* testRegExp.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 79281BBE20B62B3E002E2A60 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7954BE0B20B62D64009BC83A /* testmem.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 932F5B910822A1C700736975 /* Sources */ = { + 44F93DFE2AE71F5300FFA37C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -13076,6 +13082,38 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 52CD0F5A2242F569004A18A5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 52CD0F682242F71C004A18A5 /* testdfg.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 651122FA14046A4C002B101D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6511230714046B0A002B101D /* testRegExp.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 79281BBE20B62B3E002E2A60 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7954BE0B20B62D64009BC83A /* testmem.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 932F5B910822A1C700736975 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 44F93E0E2AE71FBD00FFA37C /* JavaScriptCoreFramework.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 932F5BDC0822A1C700736975 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -13175,6 +13213,11 @@ target = 65FB3F6609D11E9100F49DEB /* Derived Sources */; targetProxy = 14D9D9D9218462B5009126C2 /* PBXContainerItemProxy */; }; + 44F93E112AE7200100FFA37C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 44F93E012AE71F5300FFA37C /* libJavaScriptCore */; + targetProxy = 44F93E102AE7200100FFA37C /* PBXContainerItemProxy */; + }; 52CD0F662242F5A3004A18A5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 52CD0F592242F569004A18A5 /* testdfg */; @@ -13553,6 +13596,34 @@ }; name = Production; }; + 44F93E092AE71F5600FFA37C /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 44F93DFD2AE71EBD00FFA37C /* libJavaScriptCore.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 44F93E0A2AE71F5600FFA37C /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 44F93DFD2AE71EBD00FFA37C /* libJavaScriptCore.xcconfig */; + buildSettings = { + }; + name = Release; + }; + 44F93E0B2AE71F5600FFA37C /* Profiling */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 44F93DFD2AE71EBD00FFA37C /* libJavaScriptCore.xcconfig */; + buildSettings = { + }; + name = Profiling; + }; + 44F93E0C2AE71F5600FFA37C /* Production */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 44F93DFD2AE71EBD00FFA37C /* libJavaScriptCore.xcconfig */; + buildSettings = { + }; + name = Production; + }; 52CD0F602242F569004A18A5 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = FEE0A12229FE250400CED5E4 /* TestExecutable.xcconfig */; @@ -13979,6 +14050,17 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Production; }; + 44F93E082AE71F5600FFA37C /* Build configuration list for PBXNativeTarget "libJavaScriptCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 44F93E092AE71F5600FFA37C /* Debug */, + 44F93E0A2AE71F5600FFA37C /* Release */, + 44F93E0B2AE71F5600FFA37C /* Profiling */, + 44F93E0C2AE71F5600FFA37C /* Production */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Production; + }; 52CD0F5F2242F569004A18A5 /* Build configuration list for PBXNativeTarget "testdfg" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Source/JavaScriptCore/JavaScriptCoreFramework.cpp b/Source/JavaScriptCore/JavaScriptCoreFramework.cpp new file mode 100644 index 000000000000..214e7ec1ed7b --- /dev/null +++ b/Source/JavaScriptCore/JavaScriptCoreFramework.cpp @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2023 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// Used to build JavaScriptCore.framework and link libJavaScriptCore.a.