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

Side by Side Diff: runtime/tools/create_snapshot_bin.py

Issue 2902313004: CoreJIT snapshots without training. (Closed)
Patch Set: . Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
4 # for details. All rights reserved. Use of this source code is governed by a 4 # for details. All rights reserved. Use of this source code is governed by a
5 # BSD-style license that can be found in the LICENSE file. 5 # BSD-style license that can be found in the LICENSE file.
6 6
7 """Script to create snapshot bin file.""" 7 """Script to create snapshot bin file."""
8 8
9 import getopt 9 import getopt
10 import optparse 10 import optparse
11 import os 11 import os
12 from os.path import basename, join 12 from os.path import basename, join
13 import sys 13 import sys
14 import utils 14 import utils
15 15
16 16
17 HOST_OS = utils.GuessOS()
18 HOST_CPUS = utils.GuessCpus()
19 DEBUG = False
20 VERBOSE = False
21
22 def BuildOptions(): 17 def BuildOptions():
23 result = optparse.OptionParser() 18 result = optparse.OptionParser()
24 result.add_option("--executable", 19 result.add_option("--executable",
25 action="store", type="string", 20 action="store", type="string",
26 help="path to snapshot generator executable") 21 help="path to snapshot generator executable")
27 result.add_option("--snapshot_kind", 22 result.add_option("--snapshot_kind",
28 action="store", type="string", 23 action="store", type="string",
29 help="kind of snapshot to generate", 24 help="kind of snapshot to generate",
30 default="core") 25 default="core")
31 result.add_option("--vm_output_bin", 26 result.add_option("--vm_output_bin",
32 action="store", type="string", 27 action="store", type="string",
33 help="output file name into which vm isolate snapshot in binary form " + 28 help="output file name into which vm isolate snapshot in binary form " +
34 "is generated") 29 "is generated")
30 result.add_option("--vm_instructions_output_bin",
31 action="store", type="string",
32 help="output file name into which vm isolate snapshot in binary form " +
33 "is generated")
35 result.add_option("--isolate_output_bin", 34 result.add_option("--isolate_output_bin",
36 action="store", type="string", 35 action="store", type="string",
37 help="output file name into which isolate snapshot in binary form " + 36 help="output file name into which isolate snapshot in binary form " +
38 "is generated") 37 "is generated")
38 result.add_option("--isolate_instructions_output_bin",
39 action="store", type="string",
40 help="output file name into which isolate snapshot in binary form " +
41 "is generated")
39 result.add_option("--embedder_entry_points_manifest", 42 result.add_option("--embedder_entry_points_manifest",
40 action="store", type="string", 43 action="store", type="string",
41 help="input manifest with the vm entry points in a precompiled snapshot") 44 help="input manifest with the vm entry points in a precompiled snapshot")
42 result.add_option("--script", 45 result.add_option("--script",
43 action="store", type="string", 46 action="store", type="string",
44 help="Dart script for which snapshot is to be generated") 47 help="Dart script for which snapshot is to be generated")
45 result.add_option("--package_root", 48 result.add_option("--package_root",
46 action="store", type="string", 49 action="store", type="string",
47 help="path used to resolve package: imports.") 50 help="path used to resolve package: imports.")
48 result.add_option("--packages", 51 result.add_option("--packages",
49 action="store", type="string", 52 action="store", type="string",
50 help="package config file used to reasolve package: imports.") 53 help="package config file used to reasolve package: imports.")
51 result.add_option("--url_mapping", 54 result.add_option("--url_mapping",
52 default=[], 55 default=[],
53 action="append", 56 action="append",
54 help=("mapping from url to file name, used when generating snapshots " + 57 help=("mapping from url to file name, used when generating snapshots " +
55 "E.g.: --url_mapping=fileUri,/path/to/file.dart")) 58 "E.g.: --url_mapping=fileUri,/path/to/file.dart"))
56 result.add_option("-v", "--verbose", 59 result.add_option("-v", "--verbose",
57 help='Verbose output.', 60 help='Verbose output.',
58 default=False, action="store_true") 61 default=False, action="store_true")
59 result.add_option("--target_os",
60 action="store", type="string",
61 help="Which os to run the executable on. Current choice is android")
62 result.add_option("--abi",
63 action="store", type="string",
64 help="Desired ABI for android target OS. armeabi-v7a or x86")
65 result.add_option("--timestamp_file", 62 result.add_option("--timestamp_file",
66 action="store", type="string", 63 action="store", type="string",
67 help="Path to timestamp file that will be written", 64 help="Path to timestamp file that will be written",
68 default="") 65 default="")
69 return result 66 return result
70 67
71 68
72 def ProcessOptions(options): 69 def ProcessOptions(options):
73 if not options.executable: 70 if not options.executable:
74 sys.stderr.write('--executable not specified\n') 71 sys.stderr.write('--executable not specified\n')
75 return False 72 return False
76 if not options.snapshot_kind: 73 if not options.snapshot_kind:
77 sys.stderr.write('--snapshot_kind not specified\n') 74 sys.stderr.write('--snapshot_kind not specified\n')
78 return False 75 return False
79 if not options.vm_output_bin: 76 if not options.vm_output_bin:
80 sys.stderr.write('--vm_output_bin not specified\n') 77 sys.stderr.write('--vm_output_bin not specified\n')
81 return False 78 return False
82 if not options.isolate_output_bin: 79 if not options.isolate_output_bin:
83 sys.stderr.write('--isolate_output_bin not specified\n') 80 sys.stderr.write('--isolate_output_bin not specified\n')
84 return False 81 return False
85 if options.abi and not options.target_os == 'android': 82 if (options.snapshot_kind == 'core-jit'
86 sys.stderr.write('--abi requires --target_os android\n') 83 and not options.vm_instructions_output_bin):
84 sys.stderr.write('--vm_instructions_output_bin not specified\n')
85 return False
86 if (options.snapshot_kind == 'core-jit'
87 and not options.isolate_instructions_output_bin):
88 sys.stderr.write('--isolate_instructions_output_bin not specified\n')
87 return False 89 return False
88 return True 90 return True
89 91
90 92
91 def CreateTimestampFile(options): 93 def CreateTimestampFile(options):
92 if options.timestamp_file != '': 94 if options.timestamp_file != '':
93 dir_name = os.path.dirname(options.timestamp_file) 95 dir_name = os.path.dirname(options.timestamp_file)
94 if not os.path.exists(dir_name): 96 if not os.path.exists(dir_name):
95 os.mkdir(dir_name) 97 os.mkdir(dir_name)
96 open(options.timestamp_file, 'w').close() 98 open(options.timestamp_file, 'w').close()
97 99
98 100
99 def Main(): 101 def Main():
100 # Parse options. 102 # Parse options.
101 parser = BuildOptions() 103 parser = BuildOptions()
102 (options, args) = parser.parse_args() 104 (options, args) = parser.parse_args()
103 if not ProcessOptions(options): 105 if not ProcessOptions(options):
104 parser.print_help() 106 parser.print_help()
105 return 1 107 return 1
106 108
107 # If there are additional arguments, report error and exit. 109 # If there are additional arguments, report error and exit.
108 if args: 110 if args:
109 parser.print_help() 111 parser.print_help()
110 return 1 112 return 1
111 113
112 # Setup arguments to the snapshot generator binary. 114 # Setup arguments to the snapshot generator binary.
113 script_args = ["--ignore_unrecognized_flags", 115 script_args = ["--ignore_unrecognized_flags" ]
114 "--error_on_bad_type",
115 "--error_on_bad_override"]
116 116
117 # Pass along the package_root if there is one. 117 # Pass along the package_root if there is one.
118 if options.package_root: 118 if options.package_root:
119 script_args.append(''.join([ "--package_root=", options.package_root])) 119 script_args.append(''.join([ "--package_root=", options.package_root]))
120 120
121 # Pass along the packages if there is one. 121 # Pass along the packages if there is one.
122 if options.packages: 122 if options.packages:
123 script_args.append(''.join([ "--packages=", options.packages])) 123 script_args.append(''.join([ "--packages=", options.packages]))
124 124
125 # First setup the vm isolate and regular isolate snapshot output filename. 125 # First setup the vm isolate and regular isolate snapshot output filename.
126 script_args.append(''.join([ "--snapshot_kind=", options.snapshot_kind ])) 126 script_args.append(''.join([ "--snapshot_kind=", options.snapshot_kind ]))
127 script_args.append(''.join([ "--vm_snapshot_data=", options.vm_output_bin ])) 127 script_args.append(''.join([ "--vm_snapshot_data=", options.vm_output_bin ]))
128 script_args.append(''.join([ "--isolate_snapshot_data=", options.isolate_outpu t_bin ])) 128 script_args.append(''.join([ "--isolate_snapshot_data=", options.isolate_outpu t_bin ]))
129 129
130 if options.vm_instructions_output_bin != None:
131 script_args.append(''.join([ "--vm_snapshot_instructions=",
132 options.vm_instructions_output_bin ]))
133 if options.isolate_instructions_output_bin != None:
134 script_args.append(''.join([ "--isolate_snapshot_instructions=",
135 options.isolate_instructions_output_bin ]))
136
130 # Specify the embedder entry points snapshot 137 # Specify the embedder entry points snapshot
131 if options.embedder_entry_points_manifest: 138 if options.embedder_entry_points_manifest:
132 script_args.append(''.join([ "--embedder_entry_points_manifest=", 139 script_args.append(''.join([ "--embedder_entry_points_manifest=",
133 options.embedder_entry_points_manifest ])) 140 options.embedder_entry_points_manifest ]))
134 141
135 # Next setup all url mapping options specified. 142 # Next setup all url mapping options specified.
136 for url_arg in options.url_mapping: 143 for url_arg in options.url_mapping:
137 url_mapping_argument = ''.join(["--url_mapping=", url_arg ]) 144 url_mapping_argument = ''.join(["--url_mapping=", url_arg ])
138 script_args.append(url_mapping_argument) 145 script_args.append(url_mapping_argument)
139 146
(...skipping 10 matching lines...) Expand all
150 return -1 157 return -1
151 158
152 # Success, update timestamp file. 159 # Success, update timestamp file.
153 CreateTimestampFile(options) 160 CreateTimestampFile(options)
154 161
155 return 0 162 return 0
156 163
157 164
158 if __name__ == '__main__': 165 if __name__ == '__main__':
159 sys.exit(Main()) 166 sys.exit(Main())
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698