Instruction that unwinds jump table for rescue/ensure.
### `OP_JMPUW`
*`OP_JMPUW`
Unwinds jump table for rescue/ensure.
### `OP_RAISEIF`
Renamed from `OP_RAISE`
Renamed from `OP_RAISE`
*`OP_RAISEIF`
### `OP_SYMBOL`
Generates a symbol from the pool string. This is a combination of `OP_STRING` and `OP_INTERN`.
### `OP_GETIDX` and `OP_SETIDX`
Execute `obj[int]` and `obj[int] = value` respectively, where `obj` is `string|array|hash`.
### `OP_SSEND` and `OP_SSENDB`
They are similar to `OP_SEND` and `OP_SENDB` respectively. They initialize the `R[a]` by `self` so that we can skip one `OP_LOADSEND` instruction for each call.
## Changed Instructions
### Jump instructions
Jump addresses used to be specified by absolute offset from the start of `iseq`. Now they are relative offset from the address of the next instruction.
### `OP_SEND` and `OP_SENDB`
Method calling instructions are unified. Now `OP_SEND` and `OP_SENDB` (method call with a block) can support both splat arguments and keyword arguments as well.
When `n == 15`, the method takes arguments packed in an array. When `nk == 15`, the method takes keyword arguments packed in a hash.
### `OP_ARYPUSH`
Now takes 2 operands and pushes multiple entries to an array.
## Removed Instructions
## Removed Instructions
...
@@ -133,15 +165,10 @@ Instructions for old exception handling
...
@@ -133,15 +165,10 @@ Instructions for old exception handling
*`OP_EPUSH`
*`OP_EPUSH`
*`OP_EPOP`
*`OP_EPOP`
No more operand extension
Instructions for method calls with variable number of arguments. They are covered by `OP_SEND` instruction with `n=15`.
*`OP_EXT1`
*`OP_EXT2`
*`OP_EXT3`
## Changed Instructions
*`OP_SENDV`
*`OP_SENDVB`
Jump addresses used to be specified by absolute offset from the start of `iseq`. Now they are relative offset from the address of the next instruction.