Class: YTLJit::Runtime::Arena
- Defined in:
- lib/ytljit/arena.rb,
ext/ytljit.c
Instance Attribute Summary collapse
-
#using ⇒ Object
Returns the value of attribute using.
Instance Method Summary collapse
- #[](offset) ⇒ Object
- #[]=(offset, src) ⇒ Object
- #body_address ⇒ Object
-
#initialize ⇒ Arena
constructor
A new instance of Arena.
- #raw_address ⇒ Object
- #size ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize ⇒ Arena
Returns a new instance of Arena.
4 5 6 |
# File 'lib/ytljit/arena.rb', line 4 def initialize @using = 0 end |
Instance Attribute Details
#using ⇒ Object
Returns the value of attribute using.
8 9 10 |
# File 'lib/ytljit/arena.rb', line 8 def using @using end |
Instance Method Details
#[](offset) ⇒ Object
154 155 156 157 158 159 160 161 162 163 164 |
# File 'ext/memory.c', line 154
VALUE
ytl_arena_ref(VALUE self, VALUE offset)
{
struct ArenaHeader *arenah;
int raw_offset;
Data_Get_Struct(self, struct ArenaHeader, arenah);
raw_offset = (arenah->body->size / sizeof(VALUE)) - FIX2INT(offset);
return ULONG2NUM(arenah->body->body[raw_offset]);
}
|
#[]=(offset, src) ⇒ Object
166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
# File 'ext/memory.c', line 166
VALUE
ytl_arena_emit(VALUE self, VALUE offset, VALUE src)
{
struct ArenaHeader *arenah;
int raw_offset;
int newsize;
VALUE *newlastptr;
Data_Get_Struct(self, struct ArenaHeader, arenah);
raw_offset = (arenah->body->size / sizeof(VALUE)) - NUM2ULONG(offset);
arenah->body->body[raw_offset] = FIX2INT(src);
newlastptr = arenah->body->body + raw_offset;
if (newlastptr < arenah->lastptr) {
arenah->lastptr = newlastptr;
}
return src;
}
|
#body_address ⇒ Object
204 205 206 207 208 209 210 211 212 |
# File 'ext/memory.c', line 204
VALUE
ytl_arena_address(VALUE self)
{
struct ArenaHeader *arenah;
Data_Get_Struct(self, struct ArenaHeader, arenah);
return ULONG2NUM((uintptr_t)arenah->body->body);
}
|
#raw_address ⇒ Object
214 215 216 217 218 219 220 221 222 |
# File 'ext/memory.c', line 214
VALUE
ytl_arena_raw_address(VALUE self)
{
struct ArenaHeader *arenah;
Data_Get_Struct(self, struct ArenaHeader, arenah);
return ULONG2NUM((uintptr_t)arenah);
}
|
#size ⇒ Object
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'ext/memory.c', line 187
VALUE
ytl_arena_size(VALUE self)
{
struct ArenaHeader *arenah;
struct ArenaBody *arenab;
int totsize;
Data_Get_Struct(self, struct ArenaHeader, arenah);
totsize = 0;
for (arenab = arenah->body; arenab; arenab = arenab->next) {
totsize += arenab->size;
}
return INT2FIX(totsize);
}
|
#to_s ⇒ Object
224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'ext/memory.c', line 224
VALUE
ytl_arena_to_s(VALUE self)
{
struct ArenaHeader *arenah;
Data_Get_Struct(self, struct ArenaHeader, arenah);
return rb_sprintf("#<Arena %p size=%d body=%p last=%p>",
(void *)self,
ytl_arena_size(self) / 2,
(void *)arenah->body->body,
(void *)arenah->lastptr);
}
|