haikuwebkit/Tools/Scripts/run-builtins-generator-tests

51 lines
2.1 KiB
Plaintext
Raw Permalink Normal View History

Restructure generate-js-bindings script to be modular and testable https://bugs.webkit.org/show_bug.cgi?id=149929 Reviewed by Alex Christensen. Source/JavaScriptCore: This is a new code generator, based on the replay inputs code generator and the inspector protocol code generator, which produces various files for JS builtins. Relative to the generator it replaces, this one consolidates two scripts in JavaScriptCore and WebCore into a single script with multiple files. Parsed information about the builtins file is stored in backend-independent model objects. Each output file has its own code generator that uses the model to produce resulting code. Generators are additionally parameterized by the target framework (to choose correct macros and includes) and output mode (one header/implementation file per builtin or per framework). It includes a few simple tests of the generator's functionality. These result- based tests will become increasingly more important as we start to add support for builtins annotation such as @optional, @internal, etc. to the code generator. Some of these complexities, such as having two output modes, will be removed in subsequent patches. This patch is intended to exactly replace the existing functionality with a unified script that makes additional cleanups straightforward. Additional cleanup and consolidation between inspector code generator scripts and this script will be pursued in followup patches. New tests: Scripts/tests/builtins/JavaScriptCore-Builtin.Promise-Combined.js Scripts/tests/builtins/JavaScriptCore-Builtin.Promise-Separate.js Scripts/tests/builtins/JavaScriptCore-Builtin.prototype-Combined.js Scripts/tests/builtins/JavaScriptCore-Builtin.prototype-Separate.js Scripts/tests/builtins/JavaScriptCore-BuiltinConstructor-Combined.js Scripts/tests/builtins/JavaScriptCore-BuiltinConstructor-Separate.js Scripts/tests/builtins/WebCore-GuardedBuiltin-Separate.js Scripts/tests/builtins/WebCore-GuardedInternalBuiltin-Separate.js Scripts/tests/builtins/WebCore-UnguardedBuiltin-Separate.js Scripts/tests/builtins/WebCore-xmlCasingTest-Separate.js * CMakeLists.txt: Copy the scripts that are used by other targets to a staging directory inside ${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore/Scripts. Define JavaScriptCore_SCRIPTS_DIR to point here so that the add_custom_command and shared file lists are identical between JavaScriptCore and WebCore. The staged scripts are a dependency of the main JavaScriptCore target so that they are always staged, even if JavaScriptCore itself does not use a particular script. The output files additionally depend on all builtin generator script files and input files that are combined into the single header/implementation file. * DerivedSources.make: Define JavaScriptCore_SCRIPTS_DIR explicitly so the rule for code generation and shared file lists are identical between JavaScriptCore and WebCore. The output files additionally depend on all builtin generator script files and input files that are combined into the single header/implementation file. * JavaScriptCore.xcodeproj/project.pbxproj: Mark the new builtins generator files as private headers so we can use them from WebCore. * Scripts/UpdateContents.py: Renamed from Source/JavaScriptCore/UpdateContents.py. * Scripts/builtins/__init__.py: Added. * Scripts/builtins/builtins.py: Added. * Scripts/builtins/builtins_generator.py: Added. This file contains the base generator. (WK_lcfirst): (WK_ucfirst): (BuiltinsGenerator): (BuiltinsGenerator.__init__): (BuiltinsGenerator.model): (BuiltinsGenerator.generate_license): (BuiltinsGenerator.generate_includes_from_entries): (BuiltinsGenerator.generate_output): (BuiltinsGenerator.output_filename): (BuiltinsGenerator.mangledNameForFunction): (BuiltinsGenerator.mangledNameForFunction.toCamel): (BuiltinsGenerator.generate_embedded_code_string_section_for_function): * Scripts/builtins/builtins_model.py: Added. This file contains builtins model objects. (ParseException): (Framework): (Framework.__init__): (Framework.setting): (Framework.fromString): (Frameworks): (BuiltinObject): (BuiltinObject.__init__): (BuiltinFunction): (BuiltinFunction.__init__): (BuiltinFunction.fromString): (BuiltinFunction.__str__): (BuiltinsCollection): (BuiltinsCollection.__init__): (BuiltinsCollection.parse_builtins_file): (BuiltinsCollection.copyrights): (BuiltinsCollection.all_functions): (BuiltinsCollection._parse_copyright_lines): (BuiltinsCollection._parse_functions): * Scripts/builtins/builtins_templates.py: Added. (BuiltinsGeneratorTemplates): * Scripts/builtins/builtins_generate_combined_header.py: Added. (BuiltinsCombinedHeaderGenerator): (BuiltinsCombinedHeaderGenerator.__init__): (BuiltinsCombinedHeaderGenerator.output_filename): (BuiltinsCombinedHeaderGenerator.generate_output): (BuiltinsCombinedHeaderGenerator.generate_forward_declarations): (FunctionExecutable): (VM): (ConstructAbility): (generate_section_for_object): (generate_externs_for_object): (generate_macros_for_object): (generate_defines_for_object): (generate_section_for_code_table_macro): (generate_section_for_code_name_macro): * Scripts/builtins/builtins_generate_combined_implementation.py: Added. (BuiltinsCombinedImplementationGenerator): (BuiltinsCombinedImplementationGenerator.__init__): (BuiltinsCombinedImplementationGenerator.output_filename): (BuiltinsCombinedImplementationGenerator.generate_output): (BuiltinsCombinedImplementationGenerator.generate_header_includes): * Scripts/builtins/builtins_generate_separate_header.py: Added. (BuiltinsSeparateHeaderGenerator): (BuiltinsSeparateHeaderGenerator.__init__): (BuiltinsSeparateHeaderGenerator.output_filename): (BuiltinsSeparateHeaderGenerator.macro_prefix): (BuiltinsSeparateHeaderGenerator.generate_output): (BuiltinsSeparateHeaderGenerator.generate_forward_declarations): (FunctionExecutable): (generate_header_includes): (generate_section_for_object): (generate_externs_for_object): (generate_macros_for_object): (generate_defines_for_object): (generate_section_for_code_table_macro): (generate_section_for_code_name_macro): * Scripts/builtins/builtins_generate_separate_implementation.py: Added. (BuiltinsSeparateImplementationGenerator): (BuiltinsSeparateImplementationGenerator.__init__): (BuiltinsSeparateImplementationGenerator.output_filename): (BuiltinsSeparateImplementationGenerator.macro_prefix): (BuiltinsSeparateImplementationGenerator.generate_output): (BuiltinsSeparateImplementationGenerator.generate_header_includes): * Scripts/builtins/builtins_generate_separate_wrapper.py: Added. (BuiltinsSeparateWrapperGenerator): (BuiltinsSeparateWrapperGenerator.__init__): (BuiltinsSeparateWrapperGenerator.output_filename): (BuiltinsSeparateWrapperGenerator.macro_prefix): (BuiltinsSeparateWrapperGenerator.generate_output): (BuiltinsSeparateWrapperGenerator.generate_header_includes): * Scripts/generate-js-builtins.py: Added. Parse command line options, decide which generators and output modes to use. (generate_bindings_for_builtins_files): * Scripts/lazywriter.py: Copied from the inspector protocol generator. (LazyFileWriter): (LazyFileWriter.__init__): (LazyFileWriter.write): (LazyFileWriter.close): * Scripts/tests/builtins/JavaScriptCore-Builtin.Promise-Combined.js: Added. * Scripts/tests/builtins/JavaScriptCore-Builtin.Promise-Separate.js: Added. * Scripts/tests/builtins/JavaScriptCore-Builtin.prototype-Combined.js: Added. * Scripts/tests/builtins/JavaScriptCore-Builtin.prototype-Separate.js: Added. * Scripts/tests/builtins/JavaScriptCore-BuiltinConstructor-Combined.js: Added. * Scripts/tests/builtins/JavaScriptCore-BuiltinConstructor-Separate.js: Added. * Scripts/tests/builtins/WebCore-GuardedBuiltin-Separate.js: Added. * Scripts/tests/builtins/WebCore-GuardedInternalBuiltin-Separate.js: Added. * Scripts/tests/builtins/WebCore-UnguardedBuiltin-Separate.js: Added. * Scripts/tests/builtins/WebCore-xmlCasingTest-Separate.js: Added. * Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Combined.js-result: Added. * Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Separate.js-result: Added. * Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Combined.js-result: Added. * Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Separate.js-result: Added. * Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Combined.js-result: Added. * Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Separate.js-result: Added. * Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result: Added. * Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result: Added. * Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result: Added. * Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result: Added. * builtins/BuiltinExecutables.cpp: (JSC::BuiltinExecutables::BuiltinExecutables): * builtins/BuiltinExecutables.h: * create_hash_table: Update the generated builtin macro names. * generate-js-builtins: Removed. Source/WebCore: * CMakeLists.txt: Define JavaScriptCore_SCRIPTS_DIR explicitly so the add_custom_command and shared file lists are identical between JavaScriptCore and WebCore. The output files additionally depend on all builtin generator script files. * DerivedSources.make: Use JavaScriptCore_SCRIPTS_DIR so that the rule for code generation and shared file lists are identical between JavaScriptCore and WebCore. The output files additionally depend on all builtin generator script files. * WebCore.xcodeproj/project.pbxproj: Define JavaScriptCore_SCRIPTS_DIR before calling DerivedSources.make. This will eventually be merged with the other similar script paths. * bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::finishCreation): Update the generated builtin macro names. * generate-js-builtins: Removed. Tools: Add a stub shell script and basic webkitpy support for running builtins generator tests. * Scripts/run-builtins-generator-tests: Added. (main): * Scripts/webkitpy/codegen/__init__.py: Added. * Scripts/webkitpy/codegen/main.py: Added. The only interesting difference here from the inspector protocol generator equivalent is that this implementation decodes the target framework and output mode (combined or separate) from the test's file name. (BuiltinsGeneratorTests): (BuiltinsGeneratorTests.__init__): (BuiltinsGeneratorTests.generate_from_js_builtins): (BuiltinsGeneratorTests.write_error_file): (BuiltinsGeneratorTests.detect_changes): (BuiltinsGeneratorTests.run_tests): (BuiltinsGeneratorTests.main): Canonical link: https://commits.webkit.org/168596@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@191433 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-10-22 04:39:01 +00:00
#!/usr/bin/env python
# Copyright (C) 2015 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. AND ITS CONTRIBUTORS ``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 ITS 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.
import sys
from webkitpy.common.system import executive
if sys.platform.startswith('linux'):
import os
top_level_directory = os.path.normpath(os.path.join(os.path.dirname(__file__), '..', '..'))
sys.path.insert(0, os.path.join(top_level_directory, 'Tools', 'flatpak'))
import flatpakutils
flatpakutils.run_in_sandbox_if_available(sys.argv)
[GTK][WPE] Migrate to Flatpak-based dev SDK https://bugs.webkit.org/show_bug.cgi?id=205658 Reviewed by Carlos Alberto Lopez Perez. Source/WebCore: * platform/text/hyphen/HyphenationLibHyphen.cpp: (WebCore::scanTestDictionariesDirectoryIfNecessary): Check for flatpak-installed dictionaries. Tools: JHBuild will now be used only if the WEBKIT_JHBUILD environment variable is set to 1, which is the case for the time being on the GTK and WPE EWS/build bots. By default the build dependencies are now locally installed from a Flatpak repository hosted at https://software.igalia.com. The repository can be regenerated with the scripts from the webkit-flatpak-sdk Github project (https://github.com/Igalia/webkit-flatpak-sdk). This is done transparently with the update-webkit{gtk,wpe}-libs scripts. As there is no need to rebuild the dependencies from scratch, the developer user-experience should now be much more friendly and overall build times reduced. As an additional commodity, the new environment supports the GStreamer gst-build-based workflow. Just set the GST_BUILD_PATH environment variable to your gst-build path. This feature was contributed by Thibault Saunier. The JHBuild infrastructure will be removed once all the bots have been switched over to Flatpak. * BuildSlaveSupport/ews-build/steps.py: (InstallGtkDependencies): (InstallWpeDependencies): (CompileWebKit.start): * BuildSlaveSupport/gtk/buildbot/run: * Scripts/build-webkit: * Scripts/run-bindings-tests: * Scripts/run-builtins-generator-tests: * Scripts/run-gtk-tests: * Scripts/run-javascriptcore-tests: * Scripts/run-minibrowser: * Scripts/run-qt-wpe-minibrowser: * Scripts/run-webdriver-tests: * Scripts/run-wpe-tests: * Scripts/test-webkitperl: * Scripts/test-webkitpy: * Scripts/test262-runner: * Scripts/update-webkit-flatpak: Renamed from Tools/Scripts/update-webkitgtk-flatpak. * Scripts/update-webkitgtk-libs: * Scripts/update-webkitwpe-flatpak: Removed. * Scripts/update-webkitwpe-libs: * Scripts/webkitdirs.pm: (getUserFlatpakPath): (inFlatpakSandbox): (runInFlatpakIfAvailable): (wrapperPrefixIfNeeded): (shouldUseJhbuild): (shouldUseFlatpak): (shouldRemoveCMakeCache): * Scripts/webkitpy/common/system/executive.py: (Executive.kill_all): * Scripts/webkitpy/port/base.py: (Port._path_to_apache): (Port._should_run_as_pixel_test): (Port._in_flatpak_sandbox): * Scripts/webkitpy/port/gtk.py: (GtkPort.setup_environ_for_server): (GtkPort._get_crash_log): * Scripts/webkitpy/port/linux_get_crash_log.py: (GDBCrashLogGenerator): (GDBCrashLogGenerator.__init__): (GDBCrashLogGenerator.generate_crash_log): * Scripts/webkitpy/port/linux_get_crash_log_unittest.py: (GDBCrashLogGeneratorTest.test_generate_crash_log): * Scripts/webkitpy/port/wpe.py: (WPEPort.setup_environ_for_server): (WPEPort._get_crash_log): * Scripts/webkitpy/port/xvfbdriver.py: (XvfbDriver._setup_environ_for_test): * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp: (WTR::getFontsPath): * WebKitTestRunner/InjectedBundle/wpe/ActivateFontsWPE.cpp: (WTR::getFontsPath): * flatpak/files/default.xkm: Removed. * flatpak/files/httpd-autogen.sh: Removed. * flatpak/flatpakutils.py: (check_flatpak): (FlatpakRepos.update): (FlatpakPackage.__repr__): (FlatpakPackage.__str__): (WebkitFlatpak.load_from_args): (WebkitFlatpak.__init__): (WebkitFlatpak.clean_args): (WebkitFlatpak.setup_builddir): (WebkitFlatpak): (WebkitFlatpak.setup_gstbuild): (WebkitFlatpak.run_in_sandbox): (WebkitFlatpak.run): (WebkitFlatpak.has_environment): (WebkitFlatpak.save_config): (WebkitFlatpak.setup_dev_env): (WebkitFlatpak.install_all): (WebkitFlatpak.run_gdb): * flatpak/org.webkit.CommonModules.yaml: Removed. * flatpak/org.webkit.GTK.yaml: Removed. * flatpak/org.webkit.WPE.yaml: Removed. * flatpak/org.webkit.WPEModules.yaml: Removed. * flatpak/org.webkit.WPEQT.yaml: Removed. * flatpak/org.webkit.WebKit.yaml: Removed. * flatpak/patches/httpd-0001-configure-use-pkg-config-for-PCRE-detection.patch: Removed. * flatpak/patches/libgcrypt-0001-Use-pkg-config-to-detect-gpg-error.patch: Removed. * flatpak/patches/xvfb-0001-HACK-Avoid-compiling-a-kbm-file.patch: Removed. LayoutTests: * http/conf/flatpak-httpd.conf: Adjust paths. Canonical link: https://commits.webkit.org/222139@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@258626 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-03-18 09:54:55 +00:00
Restructure generate-js-bindings script to be modular and testable https://bugs.webkit.org/show_bug.cgi?id=149929 Reviewed by Alex Christensen. Source/JavaScriptCore: This is a new code generator, based on the replay inputs code generator and the inspector protocol code generator, which produces various files for JS builtins. Relative to the generator it replaces, this one consolidates two scripts in JavaScriptCore and WebCore into a single script with multiple files. Parsed information about the builtins file is stored in backend-independent model objects. Each output file has its own code generator that uses the model to produce resulting code. Generators are additionally parameterized by the target framework (to choose correct macros and includes) and output mode (one header/implementation file per builtin or per framework). It includes a few simple tests of the generator's functionality. These result- based tests will become increasingly more important as we start to add support for builtins annotation such as @optional, @internal, etc. to the code generator. Some of these complexities, such as having two output modes, will be removed in subsequent patches. This patch is intended to exactly replace the existing functionality with a unified script that makes additional cleanups straightforward. Additional cleanup and consolidation between inspector code generator scripts and this script will be pursued in followup patches. New tests: Scripts/tests/builtins/JavaScriptCore-Builtin.Promise-Combined.js Scripts/tests/builtins/JavaScriptCore-Builtin.Promise-Separate.js Scripts/tests/builtins/JavaScriptCore-Builtin.prototype-Combined.js Scripts/tests/builtins/JavaScriptCore-Builtin.prototype-Separate.js Scripts/tests/builtins/JavaScriptCore-BuiltinConstructor-Combined.js Scripts/tests/builtins/JavaScriptCore-BuiltinConstructor-Separate.js Scripts/tests/builtins/WebCore-GuardedBuiltin-Separate.js Scripts/tests/builtins/WebCore-GuardedInternalBuiltin-Separate.js Scripts/tests/builtins/WebCore-UnguardedBuiltin-Separate.js Scripts/tests/builtins/WebCore-xmlCasingTest-Separate.js * CMakeLists.txt: Copy the scripts that are used by other targets to a staging directory inside ${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore/Scripts. Define JavaScriptCore_SCRIPTS_DIR to point here so that the add_custom_command and shared file lists are identical between JavaScriptCore and WebCore. The staged scripts are a dependency of the main JavaScriptCore target so that they are always staged, even if JavaScriptCore itself does not use a particular script. The output files additionally depend on all builtin generator script files and input files that are combined into the single header/implementation file. * DerivedSources.make: Define JavaScriptCore_SCRIPTS_DIR explicitly so the rule for code generation and shared file lists are identical between JavaScriptCore and WebCore. The output files additionally depend on all builtin generator script files and input files that are combined into the single header/implementation file. * JavaScriptCore.xcodeproj/project.pbxproj: Mark the new builtins generator files as private headers so we can use them from WebCore. * Scripts/UpdateContents.py: Renamed from Source/JavaScriptCore/UpdateContents.py. * Scripts/builtins/__init__.py: Added. * Scripts/builtins/builtins.py: Added. * Scripts/builtins/builtins_generator.py: Added. This file contains the base generator. (WK_lcfirst): (WK_ucfirst): (BuiltinsGenerator): (BuiltinsGenerator.__init__): (BuiltinsGenerator.model): (BuiltinsGenerator.generate_license): (BuiltinsGenerator.generate_includes_from_entries): (BuiltinsGenerator.generate_output): (BuiltinsGenerator.output_filename): (BuiltinsGenerator.mangledNameForFunction): (BuiltinsGenerator.mangledNameForFunction.toCamel): (BuiltinsGenerator.generate_embedded_code_string_section_for_function): * Scripts/builtins/builtins_model.py: Added. This file contains builtins model objects. (ParseException): (Framework): (Framework.__init__): (Framework.setting): (Framework.fromString): (Frameworks): (BuiltinObject): (BuiltinObject.__init__): (BuiltinFunction): (BuiltinFunction.__init__): (BuiltinFunction.fromString): (BuiltinFunction.__str__): (BuiltinsCollection): (BuiltinsCollection.__init__): (BuiltinsCollection.parse_builtins_file): (BuiltinsCollection.copyrights): (BuiltinsCollection.all_functions): (BuiltinsCollection._parse_copyright_lines): (BuiltinsCollection._parse_functions): * Scripts/builtins/builtins_templates.py: Added. (BuiltinsGeneratorTemplates): * Scripts/builtins/builtins_generate_combined_header.py: Added. (BuiltinsCombinedHeaderGenerator): (BuiltinsCombinedHeaderGenerator.__init__): (BuiltinsCombinedHeaderGenerator.output_filename): (BuiltinsCombinedHeaderGenerator.generate_output): (BuiltinsCombinedHeaderGenerator.generate_forward_declarations): (FunctionExecutable): (VM): (ConstructAbility): (generate_section_for_object): (generate_externs_for_object): (generate_macros_for_object): (generate_defines_for_object): (generate_section_for_code_table_macro): (generate_section_for_code_name_macro): * Scripts/builtins/builtins_generate_combined_implementation.py: Added. (BuiltinsCombinedImplementationGenerator): (BuiltinsCombinedImplementationGenerator.__init__): (BuiltinsCombinedImplementationGenerator.output_filename): (BuiltinsCombinedImplementationGenerator.generate_output): (BuiltinsCombinedImplementationGenerator.generate_header_includes): * Scripts/builtins/builtins_generate_separate_header.py: Added. (BuiltinsSeparateHeaderGenerator): (BuiltinsSeparateHeaderGenerator.__init__): (BuiltinsSeparateHeaderGenerator.output_filename): (BuiltinsSeparateHeaderGenerator.macro_prefix): (BuiltinsSeparateHeaderGenerator.generate_output): (BuiltinsSeparateHeaderGenerator.generate_forward_declarations): (FunctionExecutable): (generate_header_includes): (generate_section_for_object): (generate_externs_for_object): (generate_macros_for_object): (generate_defines_for_object): (generate_section_for_code_table_macro): (generate_section_for_code_name_macro): * Scripts/builtins/builtins_generate_separate_implementation.py: Added. (BuiltinsSeparateImplementationGenerator): (BuiltinsSeparateImplementationGenerator.__init__): (BuiltinsSeparateImplementationGenerator.output_filename): (BuiltinsSeparateImplementationGenerator.macro_prefix): (BuiltinsSeparateImplementationGenerator.generate_output): (BuiltinsSeparateImplementationGenerator.generate_header_includes): * Scripts/builtins/builtins_generate_separate_wrapper.py: Added. (BuiltinsSeparateWrapperGenerator): (BuiltinsSeparateWrapperGenerator.__init__): (BuiltinsSeparateWrapperGenerator.output_filename): (BuiltinsSeparateWrapperGenerator.macro_prefix): (BuiltinsSeparateWrapperGenerator.generate_output): (BuiltinsSeparateWrapperGenerator.generate_header_includes): * Scripts/generate-js-builtins.py: Added. Parse command line options, decide which generators and output modes to use. (generate_bindings_for_builtins_files): * Scripts/lazywriter.py: Copied from the inspector protocol generator. (LazyFileWriter): (LazyFileWriter.__init__): (LazyFileWriter.write): (LazyFileWriter.close): * Scripts/tests/builtins/JavaScriptCore-Builtin.Promise-Combined.js: Added. * Scripts/tests/builtins/JavaScriptCore-Builtin.Promise-Separate.js: Added. * Scripts/tests/builtins/JavaScriptCore-Builtin.prototype-Combined.js: Added. * Scripts/tests/builtins/JavaScriptCore-Builtin.prototype-Separate.js: Added. * Scripts/tests/builtins/JavaScriptCore-BuiltinConstructor-Combined.js: Added. * Scripts/tests/builtins/JavaScriptCore-BuiltinConstructor-Separate.js: Added. * Scripts/tests/builtins/WebCore-GuardedBuiltin-Separate.js: Added. * Scripts/tests/builtins/WebCore-GuardedInternalBuiltin-Separate.js: Added. * Scripts/tests/builtins/WebCore-UnguardedBuiltin-Separate.js: Added. * Scripts/tests/builtins/WebCore-xmlCasingTest-Separate.js: Added. * Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Combined.js-result: Added. * Scripts/tests/builtins/expected/JavaScriptCore-Builtin.Promise-Separate.js-result: Added. * Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Combined.js-result: Added. * Scripts/tests/builtins/expected/JavaScriptCore-Builtin.prototype-Separate.js-result: Added. * Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Combined.js-result: Added. * Scripts/tests/builtins/expected/JavaScriptCore-BuiltinConstructor-Separate.js-result: Added. * Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result: Added. * Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result: Added. * Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result: Added. * Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result: Added. * builtins/BuiltinExecutables.cpp: (JSC::BuiltinExecutables::BuiltinExecutables): * builtins/BuiltinExecutables.h: * create_hash_table: Update the generated builtin macro names. * generate-js-builtins: Removed. Source/WebCore: * CMakeLists.txt: Define JavaScriptCore_SCRIPTS_DIR explicitly so the add_custom_command and shared file lists are identical between JavaScriptCore and WebCore. The output files additionally depend on all builtin generator script files. * DerivedSources.make: Use JavaScriptCore_SCRIPTS_DIR so that the rule for code generation and shared file lists are identical between JavaScriptCore and WebCore. The output files additionally depend on all builtin generator script files. * WebCore.xcodeproj/project.pbxproj: Define JavaScriptCore_SCRIPTS_DIR before calling DerivedSources.make. This will eventually be merged with the other similar script paths. * bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::finishCreation): Update the generated builtin macro names. * generate-js-builtins: Removed. Tools: Add a stub shell script and basic webkitpy support for running builtins generator tests. * Scripts/run-builtins-generator-tests: Added. (main): * Scripts/webkitpy/codegen/__init__.py: Added. * Scripts/webkitpy/codegen/main.py: Added. The only interesting difference here from the inspector protocol generator equivalent is that this implementation decodes the target framework and output mode (combined or separate) from the test's file name. (BuiltinsGeneratorTests): (BuiltinsGeneratorTests.__init__): (BuiltinsGeneratorTests.generate_from_js_builtins): (BuiltinsGeneratorTests.write_error_file): (BuiltinsGeneratorTests.detect_changes): (BuiltinsGeneratorTests.run_tests): (BuiltinsGeneratorTests.main): Canonical link: https://commits.webkit.org/168596@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@191433 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-10-22 04:39:01 +00:00
def main(argv):
"""Runs the JS builtins code generator on test input files and compares
the results with reference files.
Options:
--reset-results: Overwrites the reference files with the generated results.
"""
reset_results = "--reset-results" in argv
from webkitpy.codegen.main import BuiltinsGeneratorTests
return BuiltinsGeneratorTests(reset_results, executive.Executive()).main()
if __name__ == '__main__':
sys.exit(main(sys.argv))