Reserve `OP_SENDVK` for the future keyword arguments like Ruby3.0.

parent 59e581ed
...@@ -61,13 +61,14 @@ OPCODE(SENDV, BB) /* R(a) = call(R(a),Syms(b),*R(a+1)) */ ...@@ -61,13 +61,14 @@ OPCODE(SENDV, BB) /* R(a) = call(R(a),Syms(b),*R(a+1)) */
OPCODE(SENDVB, BB) /* R(a) = call(R(a),Syms(b),*R(a+1),&R(a+2)) */ OPCODE(SENDVB, BB) /* R(a) = call(R(a),Syms(b),*R(a+1),&R(a+2)) */
OPCODE(SEND, BBB) /* R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c)) */ OPCODE(SEND, BBB) /* R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c)) */
OPCODE(SENDB, BBB) /* R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c),&R(a+c+1)) */ OPCODE(SENDB, BBB) /* R(a) = call(R(a),Syms(b),R(a+1),...,R(a+c),&R(a+c+1)) */
OPCODE(SENDVK, BB) /* R(a) = call(R(a),Syms(b),*R(a+1),**(a+2),&R(a+3)) # todo */
OPCODE(CALL, Z) /* R(0) = self.call(frame.argc, frame.argv) */ OPCODE(CALL, Z) /* R(0) = self.call(frame.argc, frame.argv) */
OPCODE(SUPER, BB) /* R(a) = super(R(a+1),... ,R(a+b+1)) */ OPCODE(SUPER, BB) /* R(a) = super(R(a+1),... ,R(a+b+1)) */
OPCODE(ARGARY, BS) /* R(a) = argument array (16=m5:r1:m5:d1:lv4) */ OPCODE(ARGARY, BS) /* R(a) = argument array (16=m5:r1:m5:d1:lv4) */
OPCODE(ENTER, W) /* arg setup according to flags (23=m5:o5:r1:m5:k5:d1:b1) */ OPCODE(ENTER, W) /* arg setup according to flags (23=m5:o5:r1:m5:k5:d1:b1) */
OPCODE(KEY_P, BB) /* R(a) = kdict.key?(Syms(b)) # todo */ OPCODE(KEY_P, BB) /* R(a) = kdict.key?(Syms(b)) */
OPCODE(KEYEND, Z) /* raise unless kdict.empty? # todo */ OPCODE(KEYEND, Z) /* raise unless kdict.empty? */
OPCODE(KARG, BB) /* R(a) = kdict[Syms(b)]; kdict.delete(Syms(b)) # todo */ OPCODE(KARG, BB) /* R(a) = kdict[Syms(b)]; kdict.delete(Syms(b)) */
OPCODE(RETURN, B) /* return R(a) (normal) */ OPCODE(RETURN, B) /* return R(a) (normal) */
OPCODE(RETURN_BLK, B) /* return R(a) (in-block return) */ OPCODE(RETURN_BLK, B) /* return R(a) (in-block return) */
OPCODE(BREAK, B) /* break R(a) */ OPCODE(BREAK, B) /* break R(a) */
......
...@@ -2820,6 +2820,10 @@ RETRY_TRY_BLOCK: ...@@ -2820,6 +2820,10 @@ RETRY_TRY_BLOCK:
goto L_RAISE; goto L_RAISE;
} }
CASE(OP_SENDVK, BB) { /* not yet implemented */
NEXT;
}
CASE(OP_STOP, Z) { CASE(OP_STOP, Z) {
/* stop VM */ /* stop VM */
CHECKPOINT_RESTORE(RBREAK_TAG_STOP) { CHECKPOINT_RESTORE(RBREAK_TAG_STOP) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment