Updated RubySpec submodule to 9f66d0b1.
[rbx.git] / kernel / bootstrap / context.rb
blobf91d5bb6ea606597b7256299fd39977262075255
1 class MethodContext
2   def self.new
3     raise TypeError, "MethodContext doesn't support #new"
4   end
6   def self.current
7     cur = Rubinius.asm { push_context }
8     return cur.sender
9   end
11   def activate(val)
12     Ruby.primitive :activate_context    
13     raise PrimitiveFailure, "primitive failed"
14   end
16   def sender
17     _get_field(0)
18   end
20   def ip
21     _get_field(1)
22   end
24   def ip=(num)
25     _set_field(1, num.to_i)
26   end
28   def sp
29     _get_field(2)
30   end
32   def fp
33     _get_field(13)
34   end
36   def block
37     _get_field(3)
38   end
40   def method
41     _get_field(5)
42   end
44   def method=(obj)
45     _set_field(5, obj)
46   end
48   def receiver
49     _get_field(7)
50   end
52   def receiver=(val)
53     _set_field(7, val)
54   end
56   def locals
57     _get_field(8)
58   end
60   def locals=(val)
61     _set_field(8, val)
62   end
64   def name
65     _get_field(10)
66   end
68   def method_module
69     _get_field(11)
70   end
72   def dup
73     Ruby.primitive :fastctx_dup
74     raise PrimitiveFailure, "primitive failed"
75   end
77   def _get_field(int)
78     Ruby.primitive :fastctx_get_field
79     raise PrimitiveFailure, "primitive failed"
80   end
82   def _set_field(int, val)
83     Ruby.primitive :fastctx_set_field
84     raise PrimitiveFailure, "primitive failed"
85   end
87   # Reloads the compiled method instruction sequence into the method context.
88   # Required so that the debugger can add breakpoints to a currently executing
89   # method context.
90   def reload_method
91     Ruby.primitive :fastctx_reload_method
92     raise PrimitiveFailure, "primitive failed"
93   end
95   # Modifies the context to use the specified instruction sequence.
96   # This method exists to support debugging; it should only be used to modify
97   # the task instruction sequence to add/remove temporary breakpoints that are
98   # only for the current thread, e.g. when stepping or restoring a persistent
99   # breakpoint.
100   def set_iseq(iseq)
101     Ruby.primitive :fastctx_set_iseq
102     raise PrimitiveFailure, "primitive failed"
103   end
106 class BlockContext
107   def env
108     _get_field(10)
109   end
112 class BlockEnvironment
113   def call(*args)
114     Ruby.primitive :block_call
115     raise PrimitiveFailure, "primitive failed"
116   end