llrb 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.gitmodules +4 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +5 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +56 -0
  8. data/README.md +311 -0
  9. data/Rakefile +30 -0
  10. data/bin/bm_app_fib +41 -0
  11. data/bin/bm_empty_method +33 -0
  12. data/bin/bm_loop_while +27 -0
  13. data/bin/bm_plus +33 -0
  14. data/bin/console +14 -0
  15. data/bin/loop_while.rb +5 -0
  16. data/bin/setup +8 -0
  17. data/ext/llrb/cfg.h +124 -0
  18. data/ext/llrb/compiler.c +987 -0
  19. data/ext/llrb/compiler/funcs.h +164 -0
  20. data/ext/llrb/compiler/stack.h +43 -0
  21. data/ext/llrb/cruby.h +42 -0
  22. data/ext/llrb/cruby/ccan/build_assert/build_assert.h +40 -0
  23. data/ext/llrb/cruby/ccan/check_type/check_type.h +63 -0
  24. data/ext/llrb/cruby/ccan/container_of/container_of.h +142 -0
  25. data/ext/llrb/cruby/ccan/list/list.h +773 -0
  26. data/ext/llrb/cruby/ccan/str/str.h +16 -0
  27. data/ext/llrb/cruby/internal.h +1774 -0
  28. data/ext/llrb/cruby/iseq.h +252 -0
  29. data/ext/llrb/cruby/method.h +213 -0
  30. data/ext/llrb/cruby/node.h +520 -0
  31. data/ext/llrb/cruby/probes_helper.h +43 -0
  32. data/ext/llrb/cruby/ruby_assert.h +54 -0
  33. data/ext/llrb/cruby/ruby_atomic.h +233 -0
  34. data/ext/llrb/cruby/thread_pthread.h +54 -0
  35. data/ext/llrb/cruby/vm_core.h +1646 -0
  36. data/ext/llrb/cruby/vm_debug.h +37 -0
  37. data/ext/llrb/cruby/vm_exec.h +182 -0
  38. data/ext/llrb/cruby/vm_opts.h +57 -0
  39. data/ext/llrb/cruby_extra/id.h +220 -0
  40. data/ext/llrb/cruby_extra/insns.inc +113 -0
  41. data/ext/llrb/cruby_extra/insns_info.inc +796 -0
  42. data/ext/llrb/cruby_extra/probes.h +80 -0
  43. data/ext/llrb/extconf.rb +102 -0
  44. data/ext/llrb/llrb.c +148 -0
  45. data/ext/llrb/optimizer.cc +118 -0
  46. data/ext/llrb/parser.c +191 -0
  47. data/ext/llrb/profiler.c +336 -0
  48. data/ext/llrb_insn_checkkeyword.c +20 -0
  49. data/ext/llrb_insn_checkmatch.c +28 -0
  50. data/ext/llrb_insn_concatarray.c +23 -0
  51. data/ext/llrb_insn_concatstrings.c +21 -0
  52. data/ext/llrb_insn_defined.c +9 -0
  53. data/ext/llrb_insn_getclassvariable.c +10 -0
  54. data/ext/llrb_insn_getinstancevariable.c +44 -0
  55. data/ext/llrb_insn_getlocal.c +14 -0
  56. data/ext/llrb_insn_getlocal_level0.c +8 -0
  57. data/ext/llrb_insn_getlocal_level1.c +8 -0
  58. data/ext/llrb_insn_getspecial.c +14 -0
  59. data/ext/llrb_insn_invokeblock.c +39 -0
  60. data/ext/llrb_insn_invokesuper.c +47 -0
  61. data/ext/llrb_insn_opt_aref.c +25 -0
  62. data/ext/llrb_insn_opt_aset.c +28 -0
  63. data/ext/llrb_insn_opt_div.c +32 -0
  64. data/ext/llrb_insn_opt_eq.c +57 -0
  65. data/ext/llrb_insn_opt_ge.c +28 -0
  66. data/ext/llrb_insn_opt_gt.c +38 -0
  67. data/ext/llrb_insn_opt_le.c +29 -0
  68. data/ext/llrb_insn_opt_lt.c +38 -0
  69. data/ext/llrb_insn_opt_ltlt.c +27 -0
  70. data/ext/llrb_insn_opt_minus.c +36 -0
  71. data/ext/llrb_insn_opt_mod.c +32 -0
  72. data/ext/llrb_insn_opt_mult.c +30 -0
  73. data/ext/llrb_insn_opt_neq.c +103 -0
  74. data/ext/llrb_insn_opt_plus.c +48 -0
  75. data/ext/llrb_insn_opt_send_without_block.c +45 -0
  76. data/ext/llrb_insn_opt_str_freeze.c +12 -0
  77. data/ext/llrb_insn_putspecialobject.c +23 -0
  78. data/ext/llrb_insn_send.c +49 -0
  79. data/ext/llrb_insn_setclassvariable.c +19 -0
  80. data/ext/llrb_insn_setconstant.c +23 -0
  81. data/ext/llrb_insn_setinstancevariable.c +48 -0
  82. data/ext/llrb_insn_setlocal.c +16 -0
  83. data/ext/llrb_insn_setlocal_level0.c +9 -0
  84. data/ext/llrb_insn_setlocal_level1.c +10 -0
  85. data/ext/llrb_insn_setspecial.c +15 -0
  86. data/ext/llrb_insn_splatarray.c +13 -0
  87. data/ext/llrb_insn_throw.c +11 -0
  88. data/ext/llrb_insn_trace.c +37 -0
  89. data/ext/llrb_push_result.c +14 -0
  90. data/ext/llrb_self_from_cfp.c +12 -0
  91. data/ext/llrb_set_pc.c +8 -0
  92. data/lib/llrb.rb +2 -0
  93. data/lib/llrb/jit.rb +76 -0
  94. data/lib/llrb/start.rb +2 -0
  95. data/lib/llrb/version.rb +3 -0
  96. data/llrb.gemspec +48 -0
  97. data/wercker.yml +31 -0
  98. metadata +227 -0
@@ -0,0 +1,31 @@
1
+ box: k0kubun/llvm38-assert-ruby24
2
+ build:
3
+ steps:
4
+ - bundle-install
5
+ - script:
6
+ name: clone cruby
7
+ code: git submodule init && git submodule update
8
+ - script:
9
+ name: compile
10
+ code: bundle exec rake compile
11
+ - script:
12
+ name: rspec
13
+ code: bundle exec rake spec
14
+ - script:
15
+ name: optcarrot
16
+ code: bundle exec rake optcarrot:run
17
+ - script:
18
+ name: bm_loop_while
19
+ code: bin/bm_loop_while
20
+ - script:
21
+ name: bm_plus
22
+ code: bin/bm_plus
23
+ - script:
24
+ name: bm_empty_method
25
+ code: bin/bm_empty_method
26
+ - script:
27
+ name: bm_app_fib
28
+ code: bin/bm_app_fib
29
+ - script:
30
+ name: check installability
31
+ code: bundle exec rake install
metadata ADDED
@@ -0,0 +1,227 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: llrb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Takashi Kokubun
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-07-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: benchmark-ips
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake-compiler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ description: LLRB is LLVM-based JIT compiler for Ruby. Note that this gem can be only
98
+ installed to fork of CRuby.
99
+ email:
100
+ - takashikkbn@gmail.com
101
+ executables: []
102
+ extensions:
103
+ - ext/llrb/extconf.rb
104
+ extra_rdoc_files: []
105
+ files:
106
+ - ".gitignore"
107
+ - ".gitmodules"
108
+ - ".rspec"
109
+ - ".travis.yml"
110
+ - Gemfile
111
+ - LICENSE.txt
112
+ - README.md
113
+ - Rakefile
114
+ - bin/bm_app_fib
115
+ - bin/bm_empty_method
116
+ - bin/bm_loop_while
117
+ - bin/bm_plus
118
+ - bin/console
119
+ - bin/loop_while.rb
120
+ - bin/setup
121
+ - ext/llrb/cfg.h
122
+ - ext/llrb/compiler.c
123
+ - ext/llrb/compiler/funcs.h
124
+ - ext/llrb/compiler/stack.h
125
+ - ext/llrb/cruby.h
126
+ - ext/llrb/cruby/ccan/build_assert/build_assert.h
127
+ - ext/llrb/cruby/ccan/check_type/check_type.h
128
+ - ext/llrb/cruby/ccan/container_of/container_of.h
129
+ - ext/llrb/cruby/ccan/list/list.h
130
+ - ext/llrb/cruby/ccan/str/str.h
131
+ - ext/llrb/cruby/internal.h
132
+ - ext/llrb/cruby/iseq.h
133
+ - ext/llrb/cruby/method.h
134
+ - ext/llrb/cruby/node.h
135
+ - ext/llrb/cruby/probes_helper.h
136
+ - ext/llrb/cruby/ruby_assert.h
137
+ - ext/llrb/cruby/ruby_atomic.h
138
+ - ext/llrb/cruby/thread_pthread.h
139
+ - ext/llrb/cruby/vm_core.h
140
+ - ext/llrb/cruby/vm_debug.h
141
+ - ext/llrb/cruby/vm_exec.h
142
+ - ext/llrb/cruby/vm_opts.h
143
+ - ext/llrb/cruby_extra/id.h
144
+ - ext/llrb/cruby_extra/insns.inc
145
+ - ext/llrb/cruby_extra/insns_info.inc
146
+ - ext/llrb/cruby_extra/probes.h
147
+ - ext/llrb/extconf.rb
148
+ - ext/llrb/llrb.c
149
+ - ext/llrb/optimizer.cc
150
+ - ext/llrb/parser.c
151
+ - ext/llrb/profiler.c
152
+ - ext/llrb_insn_checkkeyword.c
153
+ - ext/llrb_insn_checkmatch.c
154
+ - ext/llrb_insn_concatarray.c
155
+ - ext/llrb_insn_concatstrings.c
156
+ - ext/llrb_insn_defined.c
157
+ - ext/llrb_insn_getclassvariable.c
158
+ - ext/llrb_insn_getinstancevariable.c
159
+ - ext/llrb_insn_getlocal.c
160
+ - ext/llrb_insn_getlocal_level0.c
161
+ - ext/llrb_insn_getlocal_level1.c
162
+ - ext/llrb_insn_getspecial.c
163
+ - ext/llrb_insn_invokeblock.c
164
+ - ext/llrb_insn_invokesuper.c
165
+ - ext/llrb_insn_opt_aref.c
166
+ - ext/llrb_insn_opt_aset.c
167
+ - ext/llrb_insn_opt_div.c
168
+ - ext/llrb_insn_opt_eq.c
169
+ - ext/llrb_insn_opt_ge.c
170
+ - ext/llrb_insn_opt_gt.c
171
+ - ext/llrb_insn_opt_le.c
172
+ - ext/llrb_insn_opt_lt.c
173
+ - ext/llrb_insn_opt_ltlt.c
174
+ - ext/llrb_insn_opt_minus.c
175
+ - ext/llrb_insn_opt_mod.c
176
+ - ext/llrb_insn_opt_mult.c
177
+ - ext/llrb_insn_opt_neq.c
178
+ - ext/llrb_insn_opt_plus.c
179
+ - ext/llrb_insn_opt_send_without_block.c
180
+ - ext/llrb_insn_opt_str_freeze.c
181
+ - ext/llrb_insn_putspecialobject.c
182
+ - ext/llrb_insn_send.c
183
+ - ext/llrb_insn_setclassvariable.c
184
+ - ext/llrb_insn_setconstant.c
185
+ - ext/llrb_insn_setinstancevariable.c
186
+ - ext/llrb_insn_setlocal.c
187
+ - ext/llrb_insn_setlocal_level0.c
188
+ - ext/llrb_insn_setlocal_level1.c
189
+ - ext/llrb_insn_setspecial.c
190
+ - ext/llrb_insn_splatarray.c
191
+ - ext/llrb_insn_throw.c
192
+ - ext/llrb_insn_trace.c
193
+ - ext/llrb_push_result.c
194
+ - ext/llrb_self_from_cfp.c
195
+ - ext/llrb_set_pc.c
196
+ - lib/llrb.rb
197
+ - lib/llrb/jit.rb
198
+ - lib/llrb/start.rb
199
+ - lib/llrb/version.rb
200
+ - llrb.gemspec
201
+ - wercker.yml
202
+ homepage: https://github.com/k0kubun/llrb
203
+ licenses:
204
+ - MIT
205
+ metadata: {}
206
+ post_install_message:
207
+ rdoc_options: []
208
+ require_paths:
209
+ - lib
210
+ required_ruby_version: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ required_rubygems_version: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - ">="
218
+ - !ruby/object:Gem::Version
219
+ version: '0'
220
+ requirements: []
221
+ rubyforge_project:
222
+ rubygems_version: 2.6.11
223
+ signing_key:
224
+ specification_version: 4
225
+ summary: LLRB is LLVM-based JIT compiler for Ruby. Note that this gem can be only
226
+ installed to fork of CRuby.
227
+ test_files: []