Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(314)

Unified Diff: Source/bindings/generated_bindings.gyp

Issue 184233005: Pre-cache PLY yacc parse table and use optimized mode (45% build time improvement) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Reupload Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | Source/bindings/scripts/blink_idl_parser.py » ('j') | Source/bindings/scripts/idl_reader.py » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/bindings/generated_bindings.gyp
diff --git a/Source/bindings/generated_bindings.gyp b/Source/bindings/generated_bindings.gyp
index 2f18b0f7519c1641eba56afe7761d3f8a836267d..ad11941461aa17584cbf90f1ddcc5dc4c491a7d5 100644
--- a/Source/bindings/generated_bindings.gyp
+++ b/Source/bindings/generated_bindings.gyp
@@ -119,8 +119,7 @@
'<(DEPTH)/third_party/jinja2/__init__.py',
'<(DEPTH)/third_party/markupsafe/__init__.py', # jinja2 dep
],
- 'idl_compiler_files': [
- 'scripts/idl_compiler.py',
+ 'idl_lexer_parser_files': [
# PLY (Python Lex-Yacc)
'<(DEPTH)/third_party/ply/lex.py',
'<(DEPTH)/third_party/ply/yacc.py',
@@ -131,6 +130,10 @@
# Blink IDL lexer/parser/constructor
'scripts/blink_idl_lexer.py',
'scripts/blink_idl_parser.py',
+ ],
+ 'idl_compiler_files': [
+ 'scripts/idl_compiler.py',
+ # Blink IDL front end (ex-lexer/parser)
'scripts/idl_definitions.py',
'scripts/idl_reader.py',
'scripts/idl_validator.py',
@@ -281,6 +284,31 @@
},
################################################################################
{
+ # A separate pre-caching step is *not required* to use parse table caching
+ # in PLY, as the cache is concurrency-safe.
+ # However, pre-caching ensures that all compiler processes use the cached
+ # file (hence maximizing speed), instead of early processes building the
+ # table themselves (as it's not yet been written by the time they start).
+ 'target_name': 'cached_yacc_tables',
+ 'type': 'none',
+ 'actions': [{
+ 'action_name': 'cache_yacc_tables',
+ 'inputs': [
+ '<@(idl_lexer_parser_files)',
+ ],
+ 'outputs': [
+ '<(bindings_output_dir)/parsetab.pickle',
haraken 2014/03/05 06:18:04 parsed_yacc_table.pickle ?
Nils Barth (inactive) 2014/03/05 06:28:05 "parsetab.pickle" is the PLY standard name. (Simil
+ ],
+ 'action': [
+ 'python',
+ 'scripts/blink_idl_parser.py',
+ '<(bindings_output_dir)',
+ ],
+ 'message': 'Caching PLY yacc parse tables',
+ }],
+ },
+################################################################################
+ {
# A separate pre-caching step is *required* to use bytecode caching in
# Jinja (which improves speed significantly), as the bytecode cache is
# not concurrency-safe on write; details in code_generator_v8.py.
@@ -314,6 +342,7 @@
'hard_dependency': 1,
'dependencies': [
'interfaces_info',
+ 'cached_yacc_tables',
'cached_jinja_templates',
'../core/core_generated.gyp:generated_testing_idls',
],
@@ -325,7 +354,9 @@
'extension': 'idl',
'msvs_external_rule': 1,
'inputs': [
+ '<@(idl_lexer_parser_files)', # to be explicit (covered by parsetab)
'<@(idl_compiler_files)',
+ '<(bindings_output_dir)/parsetab.pickle',
'<(bindings_output_dir)/cached_jinja_templates.stamp',
'IDLExtendedAttributes.txt',
# If the dependency structure or public interface info (e.g.,
« no previous file with comments | « no previous file | Source/bindings/scripts/blink_idl_parser.py » ('j') | Source/bindings/scripts/idl_reader.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698