2015-05-06 07:38:29 +02:00
|
|
|
module Virtual
|
2015-06-20 22:49:30 +02:00
|
|
|
|
|
|
|
MESSAGE_CALLER = 0
|
|
|
|
MESSAGE_RETURN_ADDRESS = 1
|
|
|
|
MESSAGE_EXCEPTION_ADDRESS = 2
|
|
|
|
MESSAGE_SELF = 3
|
|
|
|
MESSAGE_NAME = 4
|
|
|
|
MESSAGE_RETURN_VALUE = 5
|
|
|
|
MESSAGE_FRAME = 6
|
|
|
|
MESSAGE_PAYLOAD = 7
|
|
|
|
|
|
|
|
# The current Message is one of four objects the virtual machine knows
|
|
|
|
#
|
|
|
|
# Slots represent instance variables of objects, so MessageSlots
|
|
|
|
# represent instance variables of Message objects.
|
|
|
|
# The Message has a layout as per the constant above
|
|
|
|
|
2015-05-06 07:38:29 +02:00
|
|
|
class MessageSlot < Slot
|
2015-06-11 07:04:14 +02:00
|
|
|
def initialize index , type = Unknown , value = nil
|
2015-05-06 07:38:29 +02:00
|
|
|
super(index ,type , value )
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class Return < MessageSlot
|
2015-06-11 07:04:14 +02:00
|
|
|
def initialize type = Unknown, value = nil
|
2015-05-06 07:38:29 +02:00
|
|
|
super( MESSAGE_RETURN_VALUE , type , value )
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class Self < MessageSlot
|
2015-06-11 07:04:14 +02:00
|
|
|
def initialize type = Unknown, value = nil
|
2015-05-06 07:38:29 +02:00
|
|
|
super( MESSAGE_SELF , type , value )
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# Name of the current message
|
|
|
|
class Name < MessageSlot
|
2015-06-11 07:04:14 +02:00
|
|
|
def initialize type = Unknown, value = nil
|
2015-05-06 07:38:29 +02:00
|
|
|
super( MESSAGE_NAME , type , value )
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|