root/lang/javascript/hsp-on-js/trunk/src/run-in-shell @ 30092

Revision 30092, 2.2 kB (checked in by fujidig, 4 years ago)

組み込み関数のインライン化を実装

  • Property svn:executable set to *
Line 
1#!/usr/bin/env ruby1.9
2require 'optparse'
3
4use_repl = false
5package_path = nil
6show_sequence = false
7show_main_loop = false
8compile_only = false
9js_type = 'spider-monkey'
10js = nil
11
12opt = OptionParser.new
13opt.on('--repl') {|v| use_repl = v}
14opt.on('--package=PATH') {|v| package_path = v }
15opt.on('--[no-]show-sequence') {|v| show_sequence = v }
16opt.on('--[no-]show-main-loop') {|v| show_main_loop = v }
17opt.on('--[no-]compile-only') {|v| compile_only = v }
18opt.on('--js=COMMAND') {|v| js = v }
19opt.on('--v8') {|v| js ||= js_type = 'v8' }
20opt.on('--rhino') {|v| js ||= js_type = 'rhino' }
21
22opt.parse!(ARGV)
23js ||= 'js'
24
25message = IO.popen('hspcmp -d t.hsp'){|io|io.read}
26if $?.exitstatus != 0
27  puts message.encode(Encoding.default_external, 'cp932')
28  exit 1
29end
30
31dump = open('t.ax','rb') do |f|
32  f.each_byte.each_slice(16).map do |i|
33    "'%s'" % i.map{|j| '\x%02x'%j }.join
34  end.join(",\n")
35end
36
37open('t.ax.js', 'wb') do |f|
38  f.puts "var runInShellOptions = {"
39  f.puts "axBinary: [\n#{dump}\n].join(''),"
40  f.puts "showSequence: #{show_sequence},"
41  f.puts "showMainLoop: #{show_main_loop},"
42  f.puts "compileOnly: #{compile_only}"
43  f.puts "};"
44end
45
46if package_path
47  filenames = [package_path]
48else
49  filenames = %w[
50    head-for-run-in-shell.js
51    binary-parser.js
52    cp932.js
53    utils.js
54    vcrandom.js
55    vartype.js
56    calc-code.js
57    formatter.js
58    exception.js
59    axdata.js
60    instruction.js
61    user-def-func.js
62    builtin-func-names.js
63    value.js
64    label-value.js
65    str-value.js
66    double-value.js
67    int-value.js
68    struct-value.js
69    jump-type.js
70    str-buffer.js
71    hsp-array.js
72    reference.js
73    uninitialized-array.js
74    label-array.js
75    str-array.js
76    double-array.js
77    int-array.js
78    struct-array.js
79    variable.js
80    variable-agent.js
81    param-info.js
82    compiler.js
83    mainloop-generator.js
84    builtin-funcs.js
85    evaluator.js
86  ]
87end
88
89filenames << 't.ax.js' << 'run-in-shell.js'
90
91if use_repl and js_type != 'v8'
92  filenames << '-'
93end
94
95case js_type
96when 'rhino'
97  system(js, *filenames.map{|i|["-f", i]}.flatten)
98when 'v8'
99  system(js, *(use_repl ? ['--shell'] : []), *filenames)
100else
101  system(js, '-s', '-w', *filenames.map{|i|["-f", i]}.flatten)
102end
103
Note: See TracBrowser for help on using the browser.