summaryrefslogtreecommitdiff
path: root/insns.def
diff options
context:
space:
mode:
Diffstat (limited to 'insns.def')
-rw-r--r--insns.def99
1 files changed, 36 insertions, 63 deletions
diff --git a/insns.def b/insns.def
index 0a23525a01..b5c5fa4314 100644
--- a/insns.def
+++ b/insns.def
@@ -310,32 +310,56 @@ putself
/**
@c put
- @e put cbase.
- @j スタックに cbase をプッシュする。
+ @e put some object.
+ i.e. Fixnum, true, false, nil, and so on.
+ @j オブジェクト val をスタックにプッシュする。
+ i.e. Fixnum, true, false, nil, and so on.
*/
DEFINE_INSN
-putcbase
-()
+putobject
+(VALUE val)
()
(VALUE val)
{
- val = vm_get_cbase(GET_ISEQ(), GET_LFP(), GET_DFP());
+ /* */
}
/**
@c put
- @e put some object.
- i.e. Fixnum, true, false, nil, and so on.
- @j オブジェクト val をスタックにプッシュする。
- i.e. Fixnum, true, false, nil, and so on.
+ @e put special object. "value_type" is for expansion.
+ @j 特別なオブジェクト val をスタックにプッシュする。
+ オブジェクトの種類は value_type による.
*/
DEFINE_INSN
-putobject
-(VALUE val)
+putspecialobject
+(rb_num_t value_type)
()
(VALUE val)
{
- /* */
+ switch (value_type) {
+ case VM_SPECIAL_OBJECT_VMCORE:
+ val = rb_mRubyVMFrozenCore;
+ break;
+ case VM_SPECIAL_OBJECT_CBASE:
+ val = vm_get_cbase(GET_ISEQ(), GET_LFP(), GET_DFP());
+ break;
+ default:
+ rb_bug("putspecialobject insn: unknown value_type");
+ }
+}
+
+/**
+ @c put
+ @e put iseq value.
+ @j put iseq value.
+ */
+DEFINE_INSN
+putiseq
+(ISEQ iseq)
+()
+(VALUE ret)
+{
+ ret = iseq->self;
}
/**
@@ -714,57 +738,6 @@ adjuststack
/**
@c setting
- @e define (singleton) method id as body
- @j (特異)メソッド id を body として定義する。
- */
-DEFINE_INSN
-definemethod
-(ID id, ISEQ body, rb_num_t is_singleton)
-(VALUE obj)
-()
-{
- NODE *cref = vm_get_cref(GET_ISEQ(), GET_LFP(), GET_DFP());
- vm_define_method(th, obj, id, body, is_singleton, cref);
-}
-
-/**
- @c setting
- @e make alias (if v_p is Qtrue, make valias)
- @j alias を作る。もし v_p が Qtrue なら、valias (global variable) を作る。
- */
-DEFINE_INSN
-alias
-(VALUE v_p)
-(VALUE sym1, VALUE sym2)
-()
-{
- if (v_p == Qtrue) {
- rb_alias_variable(SYM2ID(sym1), SYM2ID(sym2));
- }
- else {
- const VALUE klass = vm_get_cbase(GET_ISEQ(), GET_LFP(), GET_DFP());
- rb_alias(klass, SYM2ID(sym1), SYM2ID(sym2));
- }
-}
-
-/**
- @c setting
- @e undef
- @j undef を行う。
- */
-DEFINE_INSN
-undef
-()
-(VALUE sym)
-()
-{
- const VALUE klass = vm_get_cbase(GET_ISEQ(), GET_LFP(), GET_DFP());
- rb_undef(klass, SYM2ID(sym));
- INC_VM_STATE_VERSION();
-}
-
-/**
- @c setting
@e defined?
@j defined? を行う。
*/