rubinius-compiler 1.2.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rubinius/compiler/compiled_file.rb +16 -6
- data/lib/rubinius/compiler/compiler.rb +4 -15
- data/lib/rubinius/compiler/evaluator.rb +1 -1
- data/lib/rubinius/compiler/generator.rb +4 -12
- data/lib/rubinius/compiler/generator_methods.rb +188 -272
- data/lib/rubinius/compiler/locals.rb +1 -1
- data/lib/rubinius/compiler/opcodes.rb +94 -100
- data/lib/rubinius/compiler/printers.rb +2 -2
- data/lib/rubinius/compiler/runtime.rb +1 -1
- data/lib/rubinius/compiler/stages.rb +6 -6
- data/lib/rubinius/compiler/version.rb +3 -3
- data/rubinius-compiler.gemspec +3 -1
- metadata +11 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 520dd233806924fc5d79d893d64d43bfc4179ffa
|
4
|
+
data.tar.gz: 1f6b7965fe802a7b8d0f16d58035f5734877f390
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6fa695fa6721b0b5f777493704fb2b591e862344b432a1e636e9a5383d940fe9261759d17e17fea6cccc7d21095799e6cc8c542c7403e5c73f18aa6cbae97e5
|
7
|
+
data.tar.gz: be746f644ce2a57d16f471c960e4b117f7bd855cd0bb6cb46b79800e2b0d69df1d7e92421a71819e52f72a915faa41291239511a1916f57340833a30cf65a32e
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: us-ascii -*-
|
2
2
|
|
3
|
-
module
|
3
|
+
module Rubinius::ToolSet.current::TS
|
4
4
|
##
|
5
5
|
# A decode for the .rbc file format.
|
6
6
|
|
@@ -140,10 +140,8 @@ module CodeTools
|
|
140
140
|
str.force_encoding enc if enc and defined?(Encoding)
|
141
141
|
return str
|
142
142
|
when 120 # ?x
|
143
|
-
enc = unmarshal_data
|
144
143
|
count = next_string.to_i
|
145
144
|
str = next_bytes count
|
146
|
-
str.force_encoding enc if enc and defined?(Encoding)
|
147
145
|
return str.to_sym
|
148
146
|
when 99 # ?c
|
149
147
|
count = next_string.to_i
|
@@ -184,6 +182,7 @@ module CodeTools
|
|
184
182
|
code.stack_size = unmarshal_data
|
185
183
|
code.local_count = unmarshal_data
|
186
184
|
code.required_args = unmarshal_data
|
185
|
+
code.post_args = unmarshal_data
|
187
186
|
code.total_args = unmarshal_data
|
188
187
|
code.splat = unmarshal_data
|
189
188
|
code.literals = unmarshal_data
|
@@ -251,10 +250,21 @@ module CodeTools
|
|
251
250
|
when Fixnum, Bignum
|
252
251
|
"I\n#{val.to_s(16)}\n"
|
253
252
|
when String
|
254
|
-
|
253
|
+
if defined?(Encoding)
|
254
|
+
# We manually construct the Encoding data to avoid recursion
|
255
|
+
# marshaling an Encoding name as a String.
|
256
|
+
name = val.encoding.name
|
257
|
+
enc_name = "E\n#{name.bytesize}\n#{name}\n"
|
258
|
+
else
|
259
|
+
# The kernel code is all US-ASCII. When building melbourne for 1.8
|
260
|
+
# Ruby, we fake a bunch of encoding stuff so force US-ASCII here.
|
261
|
+
enc_name = "E\n8\nUS-ASCII\n"
|
262
|
+
end
|
263
|
+
|
264
|
+
"s\n#{enc_name}#{val.bytesize}\n#{val}\n"
|
255
265
|
when Symbol
|
256
266
|
s = val.to_s
|
257
|
-
"x\n#{s.
|
267
|
+
"x\n#{s.bytesize}\n#{s}\n"
|
258
268
|
when Rubinius::Tuple
|
259
269
|
str = "p\n#{val.size}\n"
|
260
270
|
val.each do |ele|
|
@@ -292,9 +302,9 @@ module CodeTools
|
|
292
302
|
str.append marshal(val.stack_size)
|
293
303
|
str.append marshal(val.local_count)
|
294
304
|
str.append marshal(val.required_args)
|
305
|
+
str.append marshal(val.post_args)
|
295
306
|
str.append marshal(val.total_args)
|
296
307
|
str.append marshal(val.splat)
|
297
|
-
str.append marshal(val.arity)
|
298
308
|
str.append marshal(val.literals)
|
299
309
|
str.append marshal(val.lines)
|
300
310
|
str.append marshal(val.file)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: us-ascii -*-
|
2
2
|
|
3
|
-
module
|
3
|
+
module Rubinius::ToolSet.current::TS
|
4
4
|
|
5
5
|
class CompileError < RuntimeError
|
6
6
|
end
|
@@ -27,7 +27,7 @@ module CodeTools
|
|
27
27
|
end
|
28
28
|
else
|
29
29
|
def self.compiled_cache_writable?(db, dir)
|
30
|
-
File.
|
30
|
+
File.owned?(db) or File.owned?(dir)
|
31
31
|
end
|
32
32
|
|
33
33
|
def self.compiled_name(file)
|
@@ -51,6 +51,8 @@ module CodeTools
|
|
51
51
|
dir = Rubinius::OS_STARTUP_DIR
|
52
52
|
db = "#{dir}/.rbx"
|
53
53
|
unless name.prefix?(dir) and compiled_cache_writable?(db, dir)
|
54
|
+
# Yes, this retarded shit is necessary because people actually
|
55
|
+
# run under fucked environments with no HOME set.
|
54
56
|
return unless ENV["HOME"]
|
55
57
|
|
56
58
|
dir = File.expand_path "~/"
|
@@ -346,19 +348,6 @@ module CodeTools
|
|
346
348
|
parser.input string
|
347
349
|
transforms.each { |x| parser.enable_transform x }
|
348
350
|
|
349
|
-
compiler.generator.processor Rubinius::TestGenerator
|
350
|
-
|
351
|
-
compiler.run
|
352
|
-
end
|
353
|
-
|
354
|
-
def self.compile_test_bytecode_19(string, transforms)
|
355
|
-
compiler = new :string, :bytecode
|
356
|
-
|
357
|
-
parser = compiler.parser
|
358
|
-
parser.root AST::Snippet
|
359
|
-
parser.input string
|
360
|
-
transforms.each { |x| parser.enable_transform x }
|
361
|
-
|
362
351
|
compiler.generator.processor TestGenerator
|
363
352
|
|
364
353
|
compiler.run
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: us-ascii -*-
|
2
2
|
|
3
|
-
module
|
3
|
+
module Rubinius::ToolSet.current::TS
|
4
4
|
class Generator
|
5
5
|
include GeneratorMethods
|
6
6
|
|
@@ -134,7 +134,7 @@ module CodeTools
|
|
134
134
|
stack = 0
|
135
135
|
|
136
136
|
while i < n
|
137
|
-
insn =
|
137
|
+
insn = InstructionSet[stream[i]]
|
138
138
|
printf "[%3d] %04d %-28s" % [stack, i, insn.opcode.inspect]
|
139
139
|
|
140
140
|
args = stream[i+1, insn.size-1]
|
@@ -261,7 +261,6 @@ module CodeTools
|
|
261
261
|
@required_args = 0
|
262
262
|
@post_args = 0
|
263
263
|
@total_args = 0
|
264
|
-
@arity = 0
|
265
264
|
|
266
265
|
@detected_args = 0
|
267
266
|
@detected_locals = 0
|
@@ -286,7 +285,7 @@ module CodeTools
|
|
286
285
|
:required_args, :post_args, :total_args, :splat_index,
|
287
286
|
:local_count, :local_names, :primitive, :for_block, :for_module_body,
|
288
287
|
:current_block, :detected_args, :detected_locals,
|
289
|
-
:block_index
|
288
|
+
:block_index
|
290
289
|
|
291
290
|
def execute(node)
|
292
291
|
node.bytecode self
|
@@ -325,7 +324,6 @@ module CodeTools
|
|
325
324
|
code.total_args = @total_args
|
326
325
|
code.splat = @splat_index
|
327
326
|
code.block_index = @block_index
|
328
|
-
code.arity = @arity
|
329
327
|
code.local_count = @local_count
|
330
328
|
code.local_names = @local_names.to_tuple if @local_names
|
331
329
|
|
@@ -450,12 +448,6 @@ module CodeTools
|
|
450
448
|
alias_method :dup, :dup_top
|
451
449
|
alias_method :git, :goto_if_true
|
452
450
|
alias_method :gif, :goto_if_false
|
453
|
-
alias_method :gin, :goto_if_nil
|
454
|
-
alias_method :ginn, :goto_if_not_nil
|
455
|
-
alias_method :giu, :goto_if_undefined
|
456
|
-
alias_method :ginu, :goto_if_not_undefined
|
457
|
-
alias_method :gie, :goto_if_equal
|
458
|
-
alias_method :gine, :goto_if_not_equal
|
459
451
|
alias_method :swap, :swap_stack
|
460
452
|
|
461
453
|
# Helpers
|
@@ -627,7 +619,7 @@ module CodeTools
|
|
627
619
|
|
628
620
|
def send_with_splat(meth, args, priv=false, concat=false)
|
629
621
|
val = 0
|
630
|
-
val |=
|
622
|
+
val |= InstructionSet::CALL_FLAG_CONCAT if concat
|
631
623
|
set_call_flags val unless val == 0
|
632
624
|
|
633
625
|
allow_private if priv
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# *** This file is generated by InstructionParser ***
|
2
2
|
|
3
|
-
module
|
3
|
+
module Rubinius::ToolSet.current::TS
|
4
4
|
module GeneratorMethods
|
5
5
|
def noop
|
6
6
|
@stream << 0
|
@@ -113,223 +113,139 @@ module CodeTools
|
|
113
113
|
@instruction = 10
|
114
114
|
end
|
115
115
|
|
116
|
-
def goto_if_nil(arg1)
|
117
|
-
location = @ip + 1
|
118
|
-
@stream << 11 << arg1
|
119
|
-
@ip += 2
|
120
|
-
arg1.used_at location
|
121
|
-
@current_block.add_stack(1, 0)
|
122
|
-
@current_block.left = arg1.basic_block
|
123
|
-
@current_block.close
|
124
|
-
block = new_basic_block
|
125
|
-
@current_block.right = block
|
126
|
-
@current_block = block
|
127
|
-
@instruction = 11
|
128
|
-
end
|
129
|
-
|
130
|
-
def goto_if_not_nil(arg1)
|
131
|
-
location = @ip + 1
|
132
|
-
@stream << 12 << arg1
|
133
|
-
@ip += 2
|
134
|
-
arg1.used_at location
|
135
|
-
@current_block.add_stack(1, 0)
|
136
|
-
@current_block.left = arg1.basic_block
|
137
|
-
@current_block.close
|
138
|
-
block = new_basic_block
|
139
|
-
@current_block.right = block
|
140
|
-
@current_block = block
|
141
|
-
@instruction = 12
|
142
|
-
end
|
143
|
-
|
144
|
-
def goto_if_undefined(arg1)
|
145
|
-
location = @ip + 1
|
146
|
-
@stream << 13 << arg1
|
147
|
-
@ip += 2
|
148
|
-
arg1.used_at location
|
149
|
-
@current_block.add_stack(1, 0)
|
150
|
-
@current_block.left = arg1.basic_block
|
151
|
-
@current_block.close
|
152
|
-
block = new_basic_block
|
153
|
-
@current_block.right = block
|
154
|
-
@current_block = block
|
155
|
-
@instruction = 13
|
156
|
-
end
|
157
|
-
|
158
|
-
def goto_if_not_undefined(arg1)
|
159
|
-
location = @ip + 1
|
160
|
-
@stream << 14 << arg1
|
161
|
-
@ip += 2
|
162
|
-
arg1.used_at location
|
163
|
-
@current_block.add_stack(1, 0)
|
164
|
-
@current_block.left = arg1.basic_block
|
165
|
-
@current_block.close
|
166
|
-
block = new_basic_block
|
167
|
-
@current_block.right = block
|
168
|
-
@current_block = block
|
169
|
-
@instruction = 14
|
170
|
-
end
|
171
|
-
|
172
|
-
def goto_if_equal(arg1)
|
173
|
-
location = @ip + 1
|
174
|
-
@stream << 15 << arg1
|
175
|
-
@ip += 2
|
176
|
-
arg1.used_at location
|
177
|
-
@current_block.add_stack(2, 0)
|
178
|
-
@current_block.left = arg1.basic_block
|
179
|
-
@current_block.close
|
180
|
-
block = new_basic_block
|
181
|
-
@current_block.right = block
|
182
|
-
@current_block = block
|
183
|
-
@instruction = 15
|
184
|
-
end
|
185
|
-
|
186
|
-
def goto_if_not_equal(arg1)
|
187
|
-
location = @ip + 1
|
188
|
-
@stream << 16 << arg1
|
189
|
-
@ip += 2
|
190
|
-
arg1.used_at location
|
191
|
-
@current_block.add_stack(2, 0)
|
192
|
-
@current_block.left = arg1.basic_block
|
193
|
-
@current_block.close
|
194
|
-
block = new_basic_block
|
195
|
-
@current_block.right = block
|
196
|
-
@current_block = block
|
197
|
-
@instruction = 16
|
198
|
-
end
|
199
|
-
|
200
116
|
def ret
|
201
|
-
@stream <<
|
117
|
+
@stream << 11
|
202
118
|
@ip += 1
|
203
119
|
@current_block.add_stack(1, 1)
|
204
120
|
@current_block.close true
|
205
121
|
@current_block = new_basic_block
|
206
|
-
@instruction =
|
122
|
+
@instruction = 11
|
207
123
|
end
|
208
124
|
|
209
125
|
def swap_stack
|
210
|
-
@stream <<
|
126
|
+
@stream << 12
|
211
127
|
@ip += 1
|
212
128
|
@current_block.add_stack(2, 2)
|
213
|
-
@instruction =
|
129
|
+
@instruction = 12
|
214
130
|
end
|
215
131
|
|
216
132
|
def dup_top
|
217
|
-
@stream <<
|
133
|
+
@stream << 13
|
218
134
|
@ip += 1
|
219
135
|
@current_block.add_stack(1, 2)
|
220
|
-
@instruction =
|
136
|
+
@instruction = 13
|
221
137
|
end
|
222
138
|
|
223
139
|
def dup_many(arg1)
|
224
|
-
@stream <<
|
140
|
+
@stream << 14 << arg1
|
225
141
|
@ip += 2
|
226
142
|
@current_block.add_stack(arg1, (arg1 * 2))
|
227
|
-
@instruction =
|
143
|
+
@instruction = 14
|
228
144
|
end
|
229
145
|
|
230
146
|
def pop
|
231
|
-
@stream <<
|
147
|
+
@stream << 15
|
232
148
|
@ip += 1
|
233
149
|
@current_block.add_stack(1, 0)
|
234
|
-
@instruction =
|
150
|
+
@instruction = 15
|
235
151
|
end
|
236
152
|
|
237
153
|
def pop_many(arg1)
|
238
|
-
@stream <<
|
154
|
+
@stream << 16 << arg1
|
239
155
|
@ip += 2
|
240
156
|
@current_block.add_stack(arg1, 0)
|
241
|
-
@instruction =
|
157
|
+
@instruction = 16
|
242
158
|
end
|
243
159
|
|
244
160
|
def rotate(arg1)
|
245
|
-
@stream <<
|
161
|
+
@stream << 17 << arg1
|
246
162
|
@ip += 2
|
247
163
|
@current_block.add_stack(arg1, (arg1 * 1))
|
248
|
-
@instruction =
|
164
|
+
@instruction = 17
|
249
165
|
end
|
250
166
|
|
251
167
|
def move_down(arg1)
|
252
|
-
@stream <<
|
168
|
+
@stream << 18 << arg1
|
253
169
|
@ip += 2
|
254
170
|
@current_block.add_stack(arg1, (arg1 * 1))
|
255
|
-
@instruction =
|
171
|
+
@instruction = 18
|
256
172
|
end
|
257
173
|
|
258
174
|
def set_local(arg1)
|
259
|
-
@stream <<
|
175
|
+
@stream << 19 << arg1
|
260
176
|
@ip += 2
|
261
177
|
@current_block.add_stack(1, 1)
|
262
|
-
@instruction =
|
178
|
+
@instruction = 19
|
263
179
|
end
|
264
180
|
|
265
181
|
def push_local(arg1)
|
266
|
-
@stream <<
|
182
|
+
@stream << 20 << arg1
|
267
183
|
@ip += 2
|
268
184
|
@current_block.add_stack(0, 1)
|
269
|
-
@instruction =
|
185
|
+
@instruction = 20
|
270
186
|
end
|
271
187
|
|
272
188
|
def push_local_depth(arg1, arg2)
|
273
|
-
@stream <<
|
189
|
+
@stream << 21 << arg1 << arg2
|
274
190
|
@ip += 3
|
275
191
|
@current_block.add_stack(0, 1)
|
276
|
-
@instruction =
|
192
|
+
@instruction = 21
|
277
193
|
end
|
278
194
|
|
279
195
|
def set_local_depth(arg1, arg2)
|
280
|
-
@stream <<
|
196
|
+
@stream << 22 << arg1 << arg2
|
281
197
|
@ip += 3
|
282
198
|
@current_block.add_stack(1, 1)
|
283
|
-
@instruction =
|
199
|
+
@instruction = 22
|
284
200
|
end
|
285
201
|
|
286
202
|
def passed_arg(arg1)
|
287
|
-
@stream <<
|
203
|
+
@stream << 23 << arg1
|
288
204
|
@ip += 2
|
289
205
|
@current_block.add_stack(0, 1)
|
290
|
-
@instruction =
|
206
|
+
@instruction = 23
|
291
207
|
end
|
292
208
|
|
293
209
|
def push_current_exception
|
294
|
-
@stream <<
|
210
|
+
@stream << 24
|
295
211
|
@ip += 1
|
296
212
|
@current_block.add_stack(0, 1)
|
297
|
-
@instruction =
|
213
|
+
@instruction = 24
|
298
214
|
end
|
299
215
|
|
300
216
|
def clear_exception
|
301
|
-
@stream <<
|
217
|
+
@stream << 25
|
302
218
|
@ip += 1
|
303
219
|
@current_block.add_stack(0, 0)
|
304
|
-
@instruction =
|
220
|
+
@instruction = 25
|
305
221
|
end
|
306
222
|
|
307
223
|
def push_exception_state
|
308
|
-
@stream <<
|
224
|
+
@stream << 26
|
309
225
|
@ip += 1
|
310
226
|
@current_block.add_stack(0, 1)
|
311
|
-
@instruction =
|
227
|
+
@instruction = 26
|
312
228
|
end
|
313
229
|
|
314
230
|
def restore_exception_state
|
315
|
-
@stream <<
|
231
|
+
@stream << 27
|
316
232
|
@ip += 1
|
317
233
|
@current_block.add_stack(1, 0)
|
318
|
-
@instruction =
|
234
|
+
@instruction = 27
|
319
235
|
end
|
320
236
|
|
321
237
|
def raise_exc
|
322
|
-
@stream <<
|
238
|
+
@stream << 28
|
323
239
|
@ip += 1
|
324
240
|
@current_block.add_stack(1, 0)
|
325
241
|
@current_block.close false
|
326
242
|
@current_block = new_basic_block
|
327
|
-
@instruction =
|
243
|
+
@instruction = 28
|
328
244
|
end
|
329
245
|
|
330
246
|
def setup_unwind(arg1, arg2)
|
331
247
|
location = @ip + 1
|
332
|
-
@stream <<
|
248
|
+
@stream << 29 << arg1 << arg2
|
333
249
|
@ip += 3
|
334
250
|
arg1.used_at location
|
335
251
|
@current_block.add_stack(0, 0)
|
@@ -338,548 +254,548 @@ module CodeTools
|
|
338
254
|
block = new_basic_block
|
339
255
|
@current_block.right = block
|
340
256
|
@current_block = block
|
341
|
-
@instruction =
|
257
|
+
@instruction = 29
|
342
258
|
end
|
343
259
|
|
344
260
|
def pop_unwind
|
345
|
-
@stream <<
|
261
|
+
@stream << 30
|
346
262
|
@ip += 1
|
347
263
|
@current_block.add_stack(0, 0)
|
348
|
-
@instruction =
|
264
|
+
@instruction = 30
|
349
265
|
end
|
350
266
|
|
351
267
|
def raise_return
|
352
|
-
@stream <<
|
268
|
+
@stream << 31
|
353
269
|
@ip += 1
|
354
270
|
@current_block.add_stack(1, 1)
|
355
271
|
@current_block.close true
|
356
272
|
@current_block = new_basic_block
|
357
|
-
@instruction =
|
273
|
+
@instruction = 31
|
358
274
|
end
|
359
275
|
|
360
276
|
def ensure_return
|
361
|
-
@stream <<
|
277
|
+
@stream << 32
|
362
278
|
@ip += 1
|
363
279
|
@current_block.add_stack(1, 1)
|
364
280
|
@current_block.close true
|
365
281
|
@current_block = new_basic_block
|
366
|
-
@instruction =
|
282
|
+
@instruction = 32
|
367
283
|
end
|
368
284
|
|
369
285
|
def raise_break
|
370
|
-
@stream <<
|
286
|
+
@stream << 33
|
371
287
|
@ip += 1
|
372
288
|
@current_block.add_stack(1, 1)
|
373
289
|
@current_block.close false
|
374
290
|
@current_block = new_basic_block
|
375
|
-
@instruction =
|
291
|
+
@instruction = 33
|
376
292
|
end
|
377
293
|
|
378
294
|
def reraise
|
379
|
-
@stream <<
|
295
|
+
@stream << 34
|
380
296
|
@ip += 1
|
381
297
|
@current_block.add_stack(0, 0)
|
382
298
|
@current_block.close false
|
383
299
|
@current_block = new_basic_block
|
384
|
-
@instruction =
|
300
|
+
@instruction = 34
|
385
301
|
end
|
386
302
|
|
387
303
|
def make_array(arg1)
|
388
|
-
@stream <<
|
304
|
+
@stream << 35 << arg1
|
389
305
|
@ip += 2
|
390
306
|
@current_block.add_stack(arg1, 1)
|
391
|
-
@instruction =
|
307
|
+
@instruction = 35
|
392
308
|
end
|
393
309
|
|
394
310
|
def cast_array
|
395
|
-
unless @instruction ==
|
396
|
-
@stream <<
|
311
|
+
unless @instruction == 36 or @instruction == 35
|
312
|
+
@stream << 36
|
397
313
|
@ip += 1
|
398
314
|
end
|
399
|
-
@instruction =
|
315
|
+
@instruction = 36
|
400
316
|
end
|
401
317
|
|
402
318
|
def shift_array
|
403
|
-
@stream <<
|
319
|
+
@stream << 37
|
404
320
|
@ip += 1
|
405
321
|
@current_block.add_stack(1, 2)
|
406
|
-
@instruction =
|
322
|
+
@instruction = 37
|
407
323
|
end
|
408
324
|
|
409
325
|
def set_ivar(arg1)
|
410
326
|
arg1 = find_literal arg1
|
411
|
-
@stream <<
|
327
|
+
@stream << 38 << arg1
|
412
328
|
@ip += 2
|
413
329
|
@current_block.add_stack(1, 1)
|
414
|
-
@instruction =
|
330
|
+
@instruction = 38
|
415
331
|
end
|
416
332
|
|
417
333
|
def push_ivar(arg1)
|
418
334
|
arg1 = find_literal arg1
|
419
|
-
@stream <<
|
335
|
+
@stream << 39 << arg1
|
420
336
|
@ip += 2
|
421
337
|
@current_block.add_stack(0, 1)
|
422
|
-
@instruction =
|
338
|
+
@instruction = 39
|
423
339
|
end
|
424
340
|
|
425
341
|
def set_const(arg1)
|
426
|
-
@stream <<
|
342
|
+
@stream << 41 << arg1
|
427
343
|
@ip += 2
|
428
344
|
@current_block.add_stack(1, 1)
|
429
|
-
@instruction =
|
345
|
+
@instruction = 41
|
430
346
|
end
|
431
347
|
|
432
348
|
def set_const_at(arg1)
|
433
|
-
@stream <<
|
349
|
+
@stream << 42 << arg1
|
434
350
|
@ip += 2
|
435
351
|
@current_block.add_stack(2, 1)
|
436
|
-
@instruction =
|
352
|
+
@instruction = 42
|
437
353
|
end
|
438
354
|
|
439
355
|
def find_const(arg1)
|
440
356
|
arg1 = find_literal arg1
|
441
|
-
@stream <<
|
357
|
+
@stream << 43 << arg1
|
442
358
|
@ip += 2
|
443
359
|
@current_block.add_stack(1, 1)
|
444
|
-
@instruction =
|
360
|
+
@instruction = 43
|
445
361
|
end
|
446
362
|
|
447
363
|
def push_cpath_top
|
448
|
-
@stream <<
|
364
|
+
@stream << 44
|
449
365
|
@ip += 1
|
450
366
|
@current_block.add_stack(0, 1)
|
451
|
-
@instruction =
|
367
|
+
@instruction = 44
|
452
368
|
end
|
453
369
|
|
454
370
|
def push_const_fast(arg1)
|
455
|
-
@stream <<
|
371
|
+
@stream << 45 << arg1
|
456
372
|
@ip += 2
|
457
373
|
@current_block.add_stack(0, 1)
|
458
|
-
@instruction =
|
374
|
+
@instruction = 45
|
459
375
|
end
|
460
376
|
|
461
377
|
def find_const_fast(arg1)
|
462
|
-
@stream <<
|
378
|
+
@stream << 46 << arg1
|
463
379
|
@ip += 2
|
464
380
|
@current_block.add_stack(1, 1)
|
465
|
-
@instruction =
|
381
|
+
@instruction = 46
|
466
382
|
end
|
467
383
|
|
468
384
|
def set_call_flags(arg1)
|
469
|
-
@stream <<
|
385
|
+
@stream << 47 << arg1
|
470
386
|
@ip += 2
|
471
387
|
@current_block.add_stack(0, 0)
|
472
|
-
@instruction =
|
388
|
+
@instruction = 47
|
473
389
|
end
|
474
390
|
|
475
391
|
def allow_private
|
476
|
-
@stream <<
|
392
|
+
@stream << 48
|
477
393
|
@ip += 1
|
478
394
|
@current_block.add_stack(0, 0)
|
479
|
-
@instruction =
|
395
|
+
@instruction = 48
|
480
396
|
end
|
481
397
|
|
482
398
|
def send_method(arg1)
|
483
|
-
@stream <<
|
399
|
+
@stream << 49 << arg1
|
484
400
|
@ip += 2
|
485
401
|
@current_block.add_stack(1, 1)
|
486
|
-
@instruction =
|
402
|
+
@instruction = 49
|
487
403
|
end
|
488
404
|
|
489
405
|
def send_stack(arg1, arg2)
|
490
|
-
@stream <<
|
406
|
+
@stream << 50 << arg1 << arg2
|
491
407
|
@ip += 3
|
492
408
|
@current_block.add_stack(arg2+1, 1)
|
493
|
-
@instruction =
|
409
|
+
@instruction = 50
|
494
410
|
end
|
495
411
|
|
496
412
|
def send_stack_with_block(arg1, arg2)
|
497
|
-
@stream <<
|
413
|
+
@stream << 51 << arg1 << arg2
|
498
414
|
@ip += 3
|
499
415
|
@current_block.add_stack(arg2+2, 1)
|
500
|
-
@instruction =
|
416
|
+
@instruction = 51
|
501
417
|
end
|
502
418
|
|
503
419
|
def send_stack_with_splat(arg1, arg2)
|
504
|
-
@stream <<
|
420
|
+
@stream << 52 << arg1 << arg2
|
505
421
|
@ip += 3
|
506
422
|
@current_block.add_stack(arg2+3, 1)
|
507
|
-
@instruction =
|
423
|
+
@instruction = 52
|
508
424
|
end
|
509
425
|
|
510
426
|
def send_super_stack_with_block(arg1, arg2)
|
511
|
-
@stream <<
|
427
|
+
@stream << 53 << arg1 << arg2
|
512
428
|
@ip += 3
|
513
429
|
@current_block.add_stack(arg2+1, 1)
|
514
|
-
@instruction =
|
430
|
+
@instruction = 53
|
515
431
|
end
|
516
432
|
|
517
433
|
def send_super_stack_with_splat(arg1, arg2)
|
518
|
-
@stream <<
|
434
|
+
@stream << 54 << arg1 << arg2
|
519
435
|
@ip += 3
|
520
436
|
@current_block.add_stack(arg2+2, 1)
|
521
|
-
@instruction =
|
437
|
+
@instruction = 54
|
522
438
|
end
|
523
439
|
|
524
440
|
def push_block
|
525
|
-
@stream <<
|
441
|
+
@stream << 55
|
526
442
|
@ip += 1
|
527
443
|
@current_block.add_stack(0, 1)
|
528
|
-
@instruction =
|
444
|
+
@instruction = 55
|
529
445
|
end
|
530
446
|
|
531
447
|
def passed_blockarg(arg1)
|
532
|
-
@stream <<
|
448
|
+
@stream << 56 << arg1
|
533
449
|
@ip += 2
|
534
450
|
@current_block.add_stack(0, 1)
|
535
|
-
@instruction =
|
451
|
+
@instruction = 56
|
536
452
|
end
|
537
453
|
|
538
454
|
def create_block(arg1)
|
539
455
|
arg1 = add_literal arg1
|
540
456
|
@generators << arg1
|
541
|
-
@stream <<
|
457
|
+
@stream << 57 << arg1
|
542
458
|
@ip += 2
|
543
459
|
@current_block.add_stack(0, 1)
|
544
|
-
@instruction =
|
460
|
+
@instruction = 57
|
545
461
|
end
|
546
462
|
|
547
463
|
def cast_for_single_block_arg
|
548
|
-
@stream <<
|
464
|
+
@stream << 58
|
549
465
|
@ip += 1
|
550
466
|
@current_block.add_stack(0, 1)
|
551
|
-
@instruction =
|
467
|
+
@instruction = 58
|
552
468
|
end
|
553
469
|
|
554
470
|
def cast_for_multi_block_arg
|
555
|
-
@stream <<
|
471
|
+
@stream << 59
|
556
472
|
@ip += 1
|
557
473
|
@current_block.add_stack(0, 1)
|
558
|
-
@instruction =
|
474
|
+
@instruction = 59
|
559
475
|
end
|
560
476
|
|
561
477
|
def cast_for_splat_block_arg
|
562
|
-
@stream <<
|
478
|
+
@stream << 60
|
563
479
|
@ip += 1
|
564
480
|
@current_block.add_stack(0, 1)
|
565
|
-
@instruction =
|
481
|
+
@instruction = 60
|
566
482
|
end
|
567
483
|
|
568
484
|
def yield_stack(arg1)
|
569
|
-
@stream <<
|
485
|
+
@stream << 61 << arg1
|
570
486
|
@ip += 2
|
571
487
|
@current_block.add_stack(arg1, 1)
|
572
|
-
@instruction =
|
488
|
+
@instruction = 61
|
573
489
|
end
|
574
490
|
|
575
491
|
def yield_splat(arg1)
|
576
|
-
@stream <<
|
492
|
+
@stream << 62 << arg1
|
577
493
|
@ip += 2
|
578
494
|
@current_block.add_stack(arg1+1, 1)
|
579
|
-
@instruction =
|
495
|
+
@instruction = 62
|
580
496
|
end
|
581
497
|
|
582
498
|
def string_append
|
583
|
-
@stream <<
|
499
|
+
@stream << 63
|
584
500
|
@ip += 1
|
585
501
|
@current_block.add_stack(2, 1)
|
586
|
-
@instruction =
|
502
|
+
@instruction = 63
|
587
503
|
end
|
588
504
|
|
589
505
|
def string_build(arg1)
|
590
|
-
@stream <<
|
506
|
+
@stream << 64 << arg1
|
591
507
|
@ip += 2
|
592
508
|
@current_block.add_stack(arg1, 1)
|
593
|
-
@instruction =
|
509
|
+
@instruction = 64
|
594
510
|
end
|
595
511
|
|
596
512
|
def string_dup
|
597
|
-
@stream <<
|
513
|
+
@stream << 65
|
598
514
|
@ip += 1
|
599
515
|
@current_block.add_stack(1, 1)
|
600
|
-
@instruction =
|
516
|
+
@instruction = 65
|
601
517
|
end
|
602
518
|
|
603
519
|
def push_scope
|
604
|
-
@stream <<
|
520
|
+
@stream << 66
|
605
521
|
@ip += 1
|
606
522
|
@current_block.add_stack(0, 1)
|
607
|
-
@instruction =
|
523
|
+
@instruction = 66
|
608
524
|
end
|
609
525
|
|
610
526
|
def add_scope
|
611
|
-
@stream <<
|
527
|
+
@stream << 67
|
612
528
|
@ip += 1
|
613
529
|
@current_block.add_stack(1, 0)
|
614
|
-
@instruction =
|
530
|
+
@instruction = 67
|
615
531
|
end
|
616
532
|
|
617
533
|
def push_variables
|
618
|
-
@stream <<
|
534
|
+
@stream << 68
|
619
535
|
@ip += 1
|
620
536
|
@current_block.add_stack(0, 1)
|
621
|
-
@instruction =
|
537
|
+
@instruction = 68
|
622
538
|
end
|
623
539
|
|
624
540
|
def check_interrupts
|
625
|
-
@stream <<
|
541
|
+
@stream << 69
|
626
542
|
@ip += 1
|
627
543
|
@current_block.add_stack(0, 0)
|
628
|
-
@instruction =
|
544
|
+
@instruction = 69
|
629
545
|
end
|
630
546
|
|
631
547
|
def yield_debugger
|
632
|
-
@stream <<
|
548
|
+
@stream << 70
|
633
549
|
@ip += 1
|
634
550
|
@current_block.add_stack(0, 0)
|
635
|
-
@instruction =
|
551
|
+
@instruction = 70
|
636
552
|
end
|
637
553
|
|
638
554
|
def is_nil
|
639
|
-
@stream <<
|
555
|
+
@stream << 71
|
640
556
|
@ip += 1
|
641
557
|
@current_block.add_stack(1, 1)
|
642
|
-
@instruction =
|
558
|
+
@instruction = 71
|
643
559
|
end
|
644
560
|
|
645
561
|
def check_serial(arg1, arg2)
|
646
562
|
arg1 = find_literal arg1
|
647
563
|
arg2 = Integer(arg2)
|
648
|
-
@stream <<
|
564
|
+
@stream << 72 << arg1 << arg2
|
649
565
|
@ip += 3
|
650
566
|
@current_block.add_stack(1, 1)
|
651
|
-
@instruction =
|
567
|
+
@instruction = 72
|
652
568
|
end
|
653
569
|
|
654
570
|
def check_serial_private(arg1, arg2)
|
655
571
|
arg1 = find_literal arg1
|
656
572
|
arg2 = Integer(arg2)
|
657
|
-
@stream <<
|
573
|
+
@stream << 73 << arg1 << arg2
|
658
574
|
@ip += 3
|
659
575
|
@current_block.add_stack(1, 1)
|
660
|
-
@instruction =
|
576
|
+
@instruction = 73
|
661
577
|
end
|
662
578
|
|
663
579
|
def push_my_field(arg1)
|
664
|
-
@stream <<
|
580
|
+
@stream << 74 << arg1
|
665
581
|
@ip += 2
|
666
582
|
@current_block.add_stack(0, 1)
|
667
|
-
@instruction =
|
583
|
+
@instruction = 74
|
668
584
|
end
|
669
585
|
|
670
586
|
def store_my_field(arg1)
|
671
|
-
@stream <<
|
587
|
+
@stream << 75 << arg1
|
672
588
|
@ip += 2
|
673
589
|
@current_block.add_stack(1, 1)
|
674
|
-
@instruction =
|
590
|
+
@instruction = 75
|
675
591
|
end
|
676
592
|
|
677
593
|
def kind_of
|
678
|
-
@stream <<
|
594
|
+
@stream << 76
|
679
595
|
@ip += 1
|
680
596
|
@current_block.add_stack(2, 1)
|
681
|
-
@instruction =
|
597
|
+
@instruction = 76
|
682
598
|
end
|
683
599
|
|
684
600
|
def instance_of
|
685
|
-
@stream <<
|
601
|
+
@stream << 77
|
686
602
|
@ip += 1
|
687
603
|
@current_block.add_stack(2, 1)
|
688
|
-
@instruction =
|
604
|
+
@instruction = 77
|
689
605
|
end
|
690
606
|
|
691
607
|
def meta_push_neg_1
|
692
|
-
@stream <<
|
608
|
+
@stream << 78
|
693
609
|
@ip += 1
|
694
610
|
@current_block.add_stack(0, 1)
|
695
|
-
@instruction =
|
611
|
+
@instruction = 78
|
696
612
|
end
|
697
613
|
|
698
614
|
def meta_push_0
|
699
|
-
@stream <<
|
615
|
+
@stream << 79
|
700
616
|
@ip += 1
|
701
617
|
@current_block.add_stack(0, 1)
|
702
|
-
@instruction =
|
618
|
+
@instruction = 79
|
703
619
|
end
|
704
620
|
|
705
621
|
def meta_push_1
|
706
|
-
@stream <<
|
622
|
+
@stream << 80
|
707
623
|
@ip += 1
|
708
624
|
@current_block.add_stack(0, 1)
|
709
|
-
@instruction =
|
625
|
+
@instruction = 80
|
710
626
|
end
|
711
627
|
|
712
628
|
def meta_push_2
|
713
|
-
@stream <<
|
629
|
+
@stream << 81
|
714
630
|
@ip += 1
|
715
631
|
@current_block.add_stack(0, 1)
|
716
|
-
@instruction =
|
632
|
+
@instruction = 81
|
717
633
|
end
|
718
634
|
|
719
635
|
def meta_send_op_plus(arg1)
|
720
|
-
@stream <<
|
636
|
+
@stream << 82 << arg1
|
721
637
|
@ip += 2
|
722
638
|
@current_block.add_stack(2, 1)
|
723
|
-
@instruction =
|
639
|
+
@instruction = 82
|
724
640
|
end
|
725
641
|
|
726
642
|
def meta_send_op_minus(arg1)
|
727
|
-
@stream <<
|
643
|
+
@stream << 83 << arg1
|
728
644
|
@ip += 2
|
729
645
|
@current_block.add_stack(2, 1)
|
730
|
-
@instruction =
|
646
|
+
@instruction = 83
|
731
647
|
end
|
732
648
|
|
733
649
|
def meta_send_op_equal(arg1)
|
734
|
-
@stream <<
|
650
|
+
@stream << 84 << arg1
|
735
651
|
@ip += 2
|
736
652
|
@current_block.add_stack(2, 1)
|
737
|
-
@instruction =
|
653
|
+
@instruction = 84
|
738
654
|
end
|
739
655
|
|
740
656
|
def meta_send_op_lt(arg1)
|
741
|
-
@stream <<
|
657
|
+
@stream << 85 << arg1
|
742
658
|
@ip += 2
|
743
659
|
@current_block.add_stack(2, 1)
|
744
|
-
@instruction =
|
660
|
+
@instruction = 85
|
745
661
|
end
|
746
662
|
|
747
663
|
def meta_send_op_gt(arg1)
|
748
|
-
@stream <<
|
664
|
+
@stream << 86 << arg1
|
749
665
|
@ip += 2
|
750
666
|
@current_block.add_stack(2, 1)
|
751
|
-
@instruction =
|
667
|
+
@instruction = 86
|
752
668
|
end
|
753
669
|
|
754
670
|
def meta_send_op_tequal(arg1)
|
755
|
-
@stream <<
|
671
|
+
@stream << 87 << arg1
|
756
672
|
@ip += 2
|
757
673
|
@current_block.add_stack(2, 1)
|
758
|
-
@instruction =
|
674
|
+
@instruction = 87
|
759
675
|
end
|
760
676
|
|
761
677
|
def meta_send_call(arg1, arg2)
|
762
|
-
@stream <<
|
678
|
+
@stream << 88 << arg1 << arg2
|
763
679
|
@ip += 3
|
764
680
|
@current_block.add_stack(arg2+1, 1)
|
765
|
-
@instruction =
|
681
|
+
@instruction = 88
|
766
682
|
end
|
767
683
|
|
768
684
|
def push_my_offset(arg1)
|
769
|
-
@stream <<
|
685
|
+
@stream << 89 << arg1
|
770
686
|
@ip += 2
|
771
687
|
@current_block.add_stack(0, 1)
|
772
|
-
@instruction =
|
688
|
+
@instruction = 89
|
773
689
|
end
|
774
690
|
|
775
691
|
def zsuper(arg1)
|
776
692
|
arg1 = find_literal arg1
|
777
|
-
@stream <<
|
693
|
+
@stream << 90 << arg1
|
778
694
|
@ip += 2
|
779
695
|
@current_block.add_stack(1, 1)
|
780
|
-
@instruction =
|
696
|
+
@instruction = 90
|
781
697
|
end
|
782
698
|
|
783
699
|
def push_block_arg
|
784
|
-
@stream <<
|
700
|
+
@stream << 91
|
785
701
|
@ip += 1
|
786
702
|
@current_block.add_stack(0, 1)
|
787
|
-
@instruction =
|
703
|
+
@instruction = 91
|
788
704
|
end
|
789
705
|
|
790
706
|
def push_undef
|
791
|
-
@stream <<
|
707
|
+
@stream << 92
|
792
708
|
@ip += 1
|
793
709
|
@current_block.add_stack(0, 1)
|
794
|
-
@instruction =
|
710
|
+
@instruction = 92
|
795
711
|
end
|
796
712
|
|
797
713
|
def push_stack_local(arg1)
|
798
|
-
@stream <<
|
714
|
+
@stream << 93 << arg1
|
799
715
|
@ip += 2
|
800
716
|
@current_block.add_stack(0, 1)
|
801
|
-
@instruction =
|
717
|
+
@instruction = 93
|
802
718
|
end
|
803
719
|
|
804
720
|
def set_stack_local(arg1)
|
805
|
-
@stream <<
|
721
|
+
@stream << 94 << arg1
|
806
722
|
@ip += 2
|
807
723
|
@current_block.add_stack(1, 1)
|
808
|
-
@instruction =
|
724
|
+
@instruction = 94
|
809
725
|
end
|
810
726
|
|
811
727
|
def push_has_block
|
812
|
-
@stream <<
|
728
|
+
@stream << 95
|
813
729
|
@ip += 1
|
814
730
|
@current_block.add_stack(0, 1)
|
815
|
-
@instruction =
|
731
|
+
@instruction = 95
|
816
732
|
end
|
817
733
|
|
818
734
|
def push_proc
|
819
|
-
@stream <<
|
735
|
+
@stream << 96
|
820
736
|
@ip += 1
|
821
737
|
@current_block.add_stack(0, 1)
|
822
|
-
@instruction =
|
738
|
+
@instruction = 96
|
823
739
|
end
|
824
740
|
|
825
741
|
def check_frozen
|
826
|
-
@stream <<
|
742
|
+
@stream << 97
|
827
743
|
@ip += 1
|
828
744
|
@current_block.add_stack(1, 1)
|
829
|
-
@instruction =
|
745
|
+
@instruction = 97
|
830
746
|
end
|
831
747
|
|
832
748
|
def cast_multi_value
|
833
|
-
@stream <<
|
749
|
+
@stream << 98
|
834
750
|
@ip += 1
|
835
751
|
@current_block.add_stack(1, 1)
|
836
|
-
@instruction =
|
752
|
+
@instruction = 98
|
837
753
|
end
|
838
754
|
|
839
755
|
def invoke_primitive(arg1, arg2)
|
840
756
|
arg1 = find_literal arg1
|
841
757
|
arg2 = Integer(arg2)
|
842
|
-
@stream <<
|
758
|
+
@stream << 99 << arg1 << arg2
|
843
759
|
@ip += 3
|
844
760
|
@current_block.add_stack(arg2, 1)
|
845
|
-
@instruction =
|
761
|
+
@instruction = 99
|
846
762
|
end
|
847
763
|
|
848
764
|
def push_rubinius
|
849
|
-
@stream <<
|
765
|
+
@stream << 100
|
850
766
|
@ip += 1
|
851
767
|
@current_block.add_stack(0, 1)
|
852
|
-
@instruction =
|
768
|
+
@instruction = 100
|
853
769
|
end
|
854
770
|
|
855
771
|
def call_custom(arg1, arg2)
|
856
772
|
arg1 = find_literal arg1
|
857
773
|
arg2 = Integer(arg2)
|
858
|
-
@stream <<
|
774
|
+
@stream << 101 << arg1 << arg2
|
859
775
|
@ip += 3
|
860
776
|
@current_block.add_stack(arg2+1, 1)
|
861
|
-
@instruction =
|
777
|
+
@instruction = 101
|
862
778
|
end
|
863
779
|
|
864
780
|
def meta_to_s(arg1)
|
865
|
-
@stream <<
|
781
|
+
@stream << 102 << arg1
|
866
782
|
@ip += 2
|
867
783
|
@current_block.add_stack(1, 1)
|
868
|
-
@instruction =
|
784
|
+
@instruction = 102
|
869
785
|
end
|
870
786
|
|
871
787
|
def push_type
|
872
|
-
@stream <<
|
788
|
+
@stream << 103
|
873
789
|
@ip += 1
|
874
790
|
@current_block.add_stack(0, 1)
|
875
|
-
@instruction =
|
791
|
+
@instruction = 103
|
876
792
|
end
|
877
793
|
|
878
794
|
def push_mirror
|
879
|
-
@stream <<
|
795
|
+
@stream << 104
|
880
796
|
@ip += 1
|
881
797
|
@current_block.add_stack(0, 1)
|
882
|
-
@instruction =
|
798
|
+
@instruction = 104
|
883
799
|
end
|
884
800
|
|
885
801
|
end
|