1
/* Represents a ResizablePMCArray that is owned by a serialization context.
2
* If it gets modified, we need to trigger the SC write barrier. */
4
#include "../6model/sixmodelobject.h"
6
pmclass OwnedResizablePMCArray extends ResizablePMCArray provides array auto_attrs dynpmc group nqp {
7
/* The object that owns this RPA. */
10
VTABLE void set_integer_keyed(PMC* key, INTVAL value) {
12
GET_ATTR_owner(interp, SELF, owner);
13
if (!PMC_IS_NULL(owner))
14
OBJ_SC_WRITE_BARRIER(owner);
17
VTABLE void set_integer_keyed_int(INTVAL key, INTVAL value) {
19
GET_ATTR_owner(interp, SELF, owner);
20
if (!PMC_IS_NULL(owner))
21
OBJ_SC_WRITE_BARRIER(owner);
24
VTABLE void set_integer_keyed_str(STRING* key, INTVAL value) {
26
GET_ATTR_owner(interp, SELF, owner);
27
if (!PMC_IS_NULL(owner))
28
OBJ_SC_WRITE_BARRIER(owner);
32
VTABLE void set_number_keyed(PMC* key, FLOATVAL value) {
34
GET_ATTR_owner(interp, SELF, owner);
35
if (!PMC_IS_NULL(owner))
36
OBJ_SC_WRITE_BARRIER(owner);
39
VTABLE void set_number_keyed_int(INTVAL key, FLOATVAL value) {
41
GET_ATTR_owner(interp, SELF, owner);
42
if (!PMC_IS_NULL(owner))
43
OBJ_SC_WRITE_BARRIER(owner);
46
VTABLE void set_number_keyed_str(STRING* key, FLOATVAL value) {
48
GET_ATTR_owner(interp, SELF, owner);
49
if (!PMC_IS_NULL(owner))
50
OBJ_SC_WRITE_BARRIER(owner);
54
VTABLE void set_string_keyed(PMC* key, STRING* value) {
56
GET_ATTR_owner(interp, SELF, owner);
57
if (!PMC_IS_NULL(owner))
58
OBJ_SC_WRITE_BARRIER(owner);
61
VTABLE void set_string_keyed_int(INTVAL key, STRING* value) {
63
GET_ATTR_owner(interp, SELF, owner);
64
if (!PMC_IS_NULL(owner))
65
OBJ_SC_WRITE_BARRIER(owner);
68
VTABLE void set_string_keyed_str(STRING* key, STRING* value) {
70
GET_ATTR_owner(interp, SELF, owner);
71
if (!PMC_IS_NULL(owner))
72
OBJ_SC_WRITE_BARRIER(owner);
76
VTABLE void set_pmc_keyed(PMC* key, PMC* value) {
78
GET_ATTR_owner(interp, SELF, owner);
79
if (!PMC_IS_NULL(owner))
80
OBJ_SC_WRITE_BARRIER(owner);
83
VTABLE void set_pmc_keyed_int(INTVAL key, PMC* value) {
85
GET_ATTR_owner(interp, SELF, owner);
86
if (!PMC_IS_NULL(owner))
87
OBJ_SC_WRITE_BARRIER(owner);
90
VTABLE void set_pmc_keyed_str(STRING* key, PMC* value) {
92
GET_ATTR_owner(interp, SELF, owner);
93
if (!PMC_IS_NULL(owner))
94
OBJ_SC_WRITE_BARRIER(owner);
98
VTABLE INTVAL pop_integer() {
100
GET_ATTR_owner(interp, SELF, owner);
101
if (!PMC_IS_NULL(owner))
102
OBJ_SC_WRITE_BARRIER(owner);
105
VTABLE FLOATVAL pop_float() {
107
GET_ATTR_owner(interp, SELF, owner);
108
if (!PMC_IS_NULL(owner))
109
OBJ_SC_WRITE_BARRIER(owner);
112
VTABLE STRING* pop_string() {
114
GET_ATTR_owner(interp, SELF, owner);
115
if (!PMC_IS_NULL(owner))
116
OBJ_SC_WRITE_BARRIER(owner);
119
VTABLE PMC* pop_pmc() {
121
GET_ATTR_owner(interp, SELF, owner);
122
if (!PMC_IS_NULL(owner))
123
OBJ_SC_WRITE_BARRIER(owner);
127
VTABLE void push_integer(INTVAL value) {
129
GET_ATTR_owner(interp, SELF, owner);
130
if (!PMC_IS_NULL(owner))
131
OBJ_SC_WRITE_BARRIER(owner);
134
VTABLE void push_float(FLOATVAL value) {
136
GET_ATTR_owner(interp, SELF, owner);
137
if (!PMC_IS_NULL(owner))
138
OBJ_SC_WRITE_BARRIER(owner);
141
VTABLE void push_string(STRING* value) {
143
GET_ATTR_owner(interp, SELF, owner);
144
if (!PMC_IS_NULL(owner))
145
OBJ_SC_WRITE_BARRIER(owner);
148
VTABLE void push_pmc(PMC* value) {
150
GET_ATTR_owner(interp, SELF, owner);
151
if (!PMC_IS_NULL(owner))
152
OBJ_SC_WRITE_BARRIER(owner);
156
VTABLE INTVAL shift_integer() {
158
GET_ATTR_owner(interp, SELF, owner);
159
if (!PMC_IS_NULL(owner))
160
OBJ_SC_WRITE_BARRIER(owner);
163
VTABLE FLOATVAL shift_float() {
165
GET_ATTR_owner(interp, SELF, owner);
166
if (!PMC_IS_NULL(owner))
167
OBJ_SC_WRITE_BARRIER(owner);
170
VTABLE STRING* shift_string() {
172
GET_ATTR_owner(interp, SELF, owner);
173
if (!PMC_IS_NULL(owner))
174
OBJ_SC_WRITE_BARRIER(owner);
177
VTABLE PMC* shift_pmc() {
179
GET_ATTR_owner(interp, SELF, owner);
180
if (!PMC_IS_NULL(owner))
181
OBJ_SC_WRITE_BARRIER(owner);
185
VTABLE void unshift_integer(INTVAL value) {
187
GET_ATTR_owner(interp, SELF, owner);
188
if (!PMC_IS_NULL(owner))
189
OBJ_SC_WRITE_BARRIER(owner);
192
VTABLE void unshift_float(FLOATVAL value) {
194
GET_ATTR_owner(interp, SELF, owner);
195
if (!PMC_IS_NULL(owner))
196
OBJ_SC_WRITE_BARRIER(owner);
199
VTABLE void unshift_string(STRING* value) {
201
GET_ATTR_owner(interp, SELF, owner);
202
if (!PMC_IS_NULL(owner))
203
OBJ_SC_WRITE_BARRIER(owner);
206
VTABLE void unshift_pmc(PMC* value) {
208
GET_ATTR_owner(interp, SELF, owner);
209
if (!PMC_IS_NULL(owner))
210
OBJ_SC_WRITE_BARRIER(owner);
214
void splice(PMC* value, INTVAL offset, INTVAL count) {
216
GET_ATTR_owner(interp, SELF, owner);
217
if (!PMC_IS_NULL(owner))
218
OBJ_SC_WRITE_BARRIER(owner);
219
SUPER(value, offset, count);
224
GET_ATTR_owner(interp, SELF, owner);
225
Parrot_gc_mark_PMC_alive(INTERP, owner);