Skip to content

Commit b40e7bc

Browse files
committed
Switch to new API for looking up boxed attributes. Note that P6opaque needs to handle it a bit smarter, but this is a start.
1 parent 815ede2 commit b40e7bc

File tree

10 files changed

+55
-43
lines changed

10 files changed

+55
-43
lines changed

src/6model/reprs/HashAttrStore.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ static void initialize(PARROT_INTERP, STable *st, void *data) {
4747
}
4848

4949
/* Gets the current value for an attribute. */
50-
static PMC * get_attribute(PARROT_INTERP, PMC *obj, PMC *class_handle, STRING *name, INTVAL hint) {
51-
HashAttrStoreInstance *instance = (HashAttrStoreInstance *)PMC_data(obj);
52-
return VTABLE_get_pmc_keyed_str(interp, instance->body.store, name);
50+
static PMC * get_attribute_boxed(PARROT_INTERP, STable *st, void *data, PMC *class_handle, STRING *name, INTVAL hint) {
51+
HashAttrStoreBody *body = (HashAttrStoreBody *)data;
52+
return VTABLE_get_pmc_keyed_str(interp, body->store, name);
5353
}
5454
static void * get_attribute_ref(PARROT_INTERP, STable *st, void *data, PMC *class_handle, STRING *name, INTVAL hint) {
5555
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
@@ -174,7 +174,7 @@ REPROps * HashAttrStore_initialize(PARROT_INTERP) {
174174
this_repr->type_object_for = type_object_for;
175175
this_repr->allocate = allocate;
176176
this_repr->initialize = initialize;
177-
this_repr->get_attribute = get_attribute;
177+
this_repr->get_attribute_boxed = get_attribute_boxed;
178178
this_repr->get_attribute_ref = get_attribute_ref;
179179
this_repr->bind_attribute = bind_attribute;
180180
this_repr->bind_attribute_int = bind_attribute_int;

src/6model/reprs/KnowHOWREPR.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ static void die_no_attrs(PARROT_INTERP) {
5454
}
5555

5656
/* Gets the current value for an attribute. */
57-
static PMC * get_attribute(PARROT_INTERP, PMC *obj, PMC *class_handle, STRING *name, INTVAL hint) {
57+
static PMC * get_attribute_boxed(PARROT_INTERP, STable *st, void *data, PMC *class_handle, STRING *name, INTVAL hint) {
5858
die_no_attrs(interp);
5959
return PMCNULL;
6060
}
@@ -171,7 +171,7 @@ REPROps * KnowHOWREPR_initialize(PARROT_INTERP) {
171171
this_repr->type_object_for = type_object_for;
172172
this_repr->allocate = allocate;
173173
this_repr->initialize = initialize;
174-
this_repr->get_attribute = get_attribute;
174+
this_repr->get_attribute_boxed = get_attribute_boxed;
175175
this_repr->get_attribute_ref = get_attribute_ref;
176176
this_repr->bind_attribute = bind_attribute;
177177
this_repr->bind_attribute_int = bind_attribute_int;

src/6model/reprs/P6int.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ static void die_no_attrs(PARROT_INTERP) {
5151
}
5252

5353
/* Gets the current value for an attribute. */
54-
static PMC * get_attribute(PARROT_INTERP, PMC *obj, PMC *class_handle, STRING *name, INTVAL hint) {
54+
static PMC * get_attribute_boxed(PARROT_INTERP, STable *st, void *data, PMC *class_handle, STRING *name, INTVAL hint) {
5555
die_no_attrs(interp);
5656
return PMCNULL;
5757
}
5858
static void * get_attribute_ref(PARROT_INTERP, STable *st, void *data, PMC *class_handle, STRING *name, INTVAL hint) {
5959
die_no_attrs(interp);
60-
return 0;
60+
return NULL;
6161
}
6262

6363
/* Binds the given value to the specified attribute. */
@@ -155,7 +155,7 @@ REPROps * P6int_initialize(PARROT_INTERP) {
155155
this_repr->type_object_for = type_object_for;
156156
this_repr->allocate = allocate;
157157
this_repr->initialize = initialize;
158-
this_repr->get_attribute = get_attribute;
158+
this_repr->get_attribute_boxed = get_attribute_boxed;
159159
this_repr->get_attribute_ref = get_attribute_ref;
160160
this_repr->bind_attribute = bind_attribute;
161161
this_repr->bind_attribute_int = bind_attribute_int;

src/6model/reprs/P6num.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ static void die_no_attrs(PARROT_INTERP) {
5252
}
5353

5454
/* Gets the current value for an attribute. */
55-
static PMC * get_attribute(PARROT_INTERP, PMC *obj, PMC *class_handle, STRING *name, INTVAL hint) {
55+
static PMC * get_attribute_boxed(PARROT_INTERP, STable *st, void *data, PMC *class_handle, STRING *name, INTVAL hint) {
5656
die_no_attrs(interp);
5757
return PMCNULL;
5858
}
5959
static void * get_attribute_ref(PARROT_INTERP, STable *st, void *data, PMC *class_handle, STRING *name, INTVAL hint) {
6060
die_no_attrs(interp);
61-
return 0;
61+
return NULL;
6262
}
6363

6464
/* Binds the given value to the specified attribute. */
@@ -156,7 +156,7 @@ REPROps * P6num_initialize(PARROT_INTERP) {
156156
this_repr->type_object_for = type_object_for;
157157
this_repr->allocate = allocate;
158158
this_repr->initialize = initialize;
159-
this_repr->get_attribute = get_attribute;
159+
this_repr->get_attribute_boxed = get_attribute_boxed;
160160
this_repr->get_attribute_ref = get_attribute_ref;
161161
this_repr->bind_attribute = bind_attribute;
162162
this_repr->bind_attribute_int = bind_attribute_int;

src/6model/reprs/P6opaque.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -399,16 +399,15 @@ static void no_such_attribute(PARROT_INTERP, const char *action, PMC *class_hand
399399
}
400400

401401
/* Gets the current value for an attribute. */
402-
static PMC * get_attribute(PARROT_INTERP, PMC *obj, PMC *class_handle, STRING *name, INTVAL hint) {
403-
P6opaqueInstance *instance = (P6opaqueInstance *)PMC_data(obj);
404-
P6opaqueREPRData *repr_data = (P6opaqueREPRData *)STABLE(obj)->REPR_data;
402+
static PMC * get_attribute_boxed(PARROT_INTERP, STable *st, void *data, PMC *class_handle, STRING *name, INTVAL hint) {
403+
P6opaqueREPRData *repr_data = (P6opaqueREPRData *)st->REPR_data;
405404
INTVAL slot;
406405

407406
/* Try the slot allocation first. */
408407
slot = hint >= 0 && !(repr_data->mi) ? hint :
409408
try_get_slot(interp, repr_data, class_handle, name);
410409
if (slot >= 0) {
411-
PMC *result = get_pmc_at_offset(instance, sizeof(P6opaqueInstance) + repr_data->attribute_offsets[slot]);
410+
PMC *result = get_pmc_at_offset(data, repr_data->attribute_offsets[slot]);
412411
if (result) {
413412
return result;
414413
}
@@ -418,7 +417,7 @@ static PMC * get_attribute(PARROT_INTERP, PMC *obj, PMC *class_handle, STRING *n
418417
PMC *value = repr_data->auto_viv_values[slot];
419418
if (value != NULL) {
420419
value = REPR(value)->clone(interp, value);
421-
set_pmc_at_offset(instance, sizeof(P6opaqueInstance) + repr_data->attribute_offsets[slot], value);
420+
set_pmc_at_offset(data, repr_data->attribute_offsets[slot], value);
422421
return value;
423422
}
424423
}
@@ -822,7 +821,7 @@ REPROps * P6opaque_initialize(PARROT_INTERP) {
822821
this_repr->type_object_for = type_object_for;
823822
this_repr->allocate = allocate;
824823
this_repr->initialize = initialize;
825-
this_repr->get_attribute = get_attribute;
824+
this_repr->get_attribute_boxed = get_attribute_boxed;
826825
this_repr->get_attribute_ref = get_attribute_ref;
827826
this_repr->bind_attribute = bind_attribute;
828827
this_repr->bind_attribute_int = bind_attribute_int;

src/6model/reprs/P6str.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ static void die_no_attrs(PARROT_INTERP) {
5151
}
5252

5353
/* Gets the current value for an attribute. */
54-
static PMC * get_attribute(PARROT_INTERP, PMC *obj, PMC *class_handle, STRING *name, INTVAL hint) {
54+
static PMC * get_attribute_boxed(PARROT_INTERP, STable *st, void *data, PMC *class_handle, STRING *name, INTVAL hint) {
5555
die_no_attrs(interp);
5656
return PMCNULL;
5757
}
@@ -162,7 +162,7 @@ REPROps * P6str_initialize(PARROT_INTERP) {
162162
this_repr->type_object_for = type_object_for;
163163
this_repr->allocate = allocate;
164164
this_repr->initialize = initialize;
165-
this_repr->get_attribute = get_attribute;
165+
this_repr->get_attribute_boxed = get_attribute_boxed;
166166
this_repr->get_attribute_ref = get_attribute_ref;
167167
this_repr->bind_attribute = bind_attribute;
168168
this_repr->bind_attribute_int = bind_attribute_int;

src/6model/reprs/Uninstantiable.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ static void die_no_attrs(PARROT_INTERP) {
5050
}
5151

5252
/* Gets the current value for an attribute. */
53-
static PMC * get_attribute(PARROT_INTERP, PMC *obj, PMC *class_handle, STRING *name, INTVAL hint) {
53+
static PMC * get_attribute_boxed(PARROT_INTERP, STable *st, void *data, PMC *class_handle, STRING *name, INTVAL hint) {
5454
die_no_attrs(interp);
5555
return PMCNULL;
5656
}
@@ -162,7 +162,7 @@ REPROps * Uninstantiable_initialize(PARROT_INTERP) {
162162
this_repr->type_object_for = type_object_for;
163163
this_repr->allocate = allocate;
164164
this_repr->initialize = initialize;
165-
this_repr->get_attribute = get_attribute;
165+
this_repr->get_attribute_boxed = get_attribute_boxed;
166166
this_repr->get_attribute_ref = get_attribute_ref;
167167
this_repr->bind_attribute = bind_attribute;
168168
this_repr->bind_attribute_int = bind_attribute_int;

src/6model/sixmodelobject.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,11 @@ struct SixModel_REPROps {
159159
* may recursively call initialize for any flattened objects. */
160160
void (*initialize) (PARROT_INTERP, STable *st, void *data);
161161

162-
/* Gets the current value for an object attribute. */
163-
PMC * (*get_attribute) (PARROT_INTERP, PMC *Object, PMC *ClassHandle, STRING *Name, INTVAL Hint);
162+
/* Gets the current value for an object attribute. For non-flattened
163+
* objects - that is, reference types - this just returns the object
164+
* stored in the attribute. For the flattened case, this will auto-box. */
165+
PMC * (*get_attribute_boxed) (PARROT_INTERP, STable *st, void *data,
166+
PMC *class_handle, STRING *name, INTVAL hint);
164167

165168
/* Gets a reference to the memory location of an attribute. Note
166169
* that this is only valid so long as the object itself is alive. */

src/ops/nqp.ops

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ inline op repr_get_attr_obj(out PMC, in PMC, in PMC, in STR) :base_core {
257257
PMC *ch = decontainerize(interp, $3);
258258
if ($2->vtable->base_type == smo_id) {
259259
if (IS_CONCRETE($2))
260-
$1 = REPR($2)->get_attribute(interp, $2, ch, $4, NO_HINT);
260+
$1 = REPR($2)->get_attribute_boxed(interp, STABLE($2), OBJECT_BODY($2), ch, $4, NO_HINT);
261261
else
262262
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
263263
"Cannot look up attributes in a type object");
@@ -434,7 +434,7 @@ inline op repr_get_attr_obj(out PMC, in PMC, in PMC, in STR, in INT) :base_core
434434
PMC *ch = decontainerize(interp, $3);
435435
if ($2->vtable->base_type == smo_id) {
436436
if (IS_CONCRETE($2))
437-
$1 = REPR($2)->get_attribute(interp, $2, ch, $4, $5);
437+
$1 = REPR($2)->get_attribute_boxed(interp, STABLE($2), OBJECT_BODY($2), ch, $4, $5);
438438
else
439439
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
440440
"Cannot look up attributes in a type object");

src/pmc/sixmodelobject.pmc

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,16 @@ PMC * decontainerize(PARROT_INTERP, PMC *var) {
4747
return var;
4848
}
4949

50+
/* Looks up an attribute, after checking we don't have a type object. */
51+
static PMC *get_attr(PARROT_INTERP, PMC *self, PMC *handle, STRING *name, INTVAL hint) {
52+
if (IS_CONCRETE(self))
53+
return REPR(self)->get_attribute_boxed(interp, STABLE(self), OBJECT_BODY(self), handle, name, hint);
54+
else
55+
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
56+
"Cannot look up attributes in a type object");
57+
}
58+
59+
5060
pmclass SixModelObject manual_attrs dynpmc group nqp {
5161
/* ********************************************** *
5262
* These methods are mapped to 6model primitives. *
@@ -84,7 +94,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
8494

8595
VTABLE PMC* get_attr_keyed(PMC *class_handle, STRING *name) {
8696
PMC *handle = decontainerize(interp, class_handle);
87-
return REPR(SELF)->get_attribute(interp, SELF, handle, name, NO_HINT);
97+
return get_attr(interp, SELF, handle, name, NO_HINT);
8898
}
8999

90100
VTABLE void set_attr_keyed(PMC *class_handle, STRING *name, PMC* value) {
@@ -268,7 +278,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
268278
return VTABLE_get_pmc_keyed_int(interp, cappy, 0);
269279
}
270280
else if (vth && vth[PARROT_VTABLE_SLOT_GET_PMC_KEYED].class_handle) {
271-
PMC *val = REPR(decont)->get_attribute(interp, decont,
281+
PMC *val = get_attr(interp, decont,
272282
vth[PARROT_VTABLE_SLOT_GET_PMC_KEYED].class_handle,
273283
vth[PARROT_VTABLE_SLOT_GET_PMC_KEYED].attr_name,
274284
vth[PARROT_VTABLE_SLOT_GET_PMC_KEYED].hint);
@@ -295,7 +305,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
295305
return VTABLE_get_pmc_keyed_int(interp, cappy, 0);
296306
}
297307
else if (vth && vth[PARROT_VTABLE_SLOT_GET_PMC_KEYED_INT].class_handle) {
298-
PMC *val = REPR(decont)->get_attribute(interp, decont,
308+
PMC *val = get_attr(interp, decont,
299309
vth[PARROT_VTABLE_SLOT_GET_PMC_KEYED_INT].class_handle,
300310
vth[PARROT_VTABLE_SLOT_GET_PMC_KEYED_INT].attr_name,
301311
vth[PARROT_VTABLE_SLOT_GET_PMC_KEYED_INT].hint);
@@ -321,7 +331,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
321331
return VTABLE_get_pmc_keyed_int(interp, cappy, 0);
322332
}
323333
else if (vth && vth[PARROT_VTABLE_SLOT_GET_PMC_KEYED_STR].class_handle) {
324-
PMC *val = REPR(decont)->get_attribute(interp, decont,
334+
PMC *val = get_attr(interp, decont,
325335
vth[PARROT_VTABLE_SLOT_GET_PMC_KEYED_STR].class_handle,
326336
vth[PARROT_VTABLE_SLOT_GET_PMC_KEYED_STR].attr_name,
327337
vth[PARROT_VTABLE_SLOT_GET_PMC_KEYED_STR].hint);
@@ -353,7 +363,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
353363
Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), old_ctx);
354364
}
355365
else if (vth && vth[PARROT_VTABLE_SLOT_SET_PMC_KEYED].class_handle) {
356-
PMC *val = REPR(decont)->get_attribute(interp, decont,
366+
PMC *val = get_attr(interp, decont,
357367
vth[PARROT_VTABLE_SLOT_SET_PMC_KEYED].class_handle,
358368
vth[PARROT_VTABLE_SLOT_SET_PMC_KEYED].attr_name,
359369
vth[PARROT_VTABLE_SLOT_SET_PMC_KEYED].hint);
@@ -379,7 +389,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
379389
Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), old_ctx);
380390
}
381391
else if (vth && vth[PARROT_VTABLE_SLOT_SET_PMC_KEYED_INT].class_handle) {
382-
PMC *val = REPR(decont)->get_attribute(interp, decont,
392+
PMC *val = get_attr(interp, decont,
383393
vth[PARROT_VTABLE_SLOT_SET_PMC_KEYED_INT].class_handle,
384394
vth[PARROT_VTABLE_SLOT_SET_PMC_KEYED_INT].attr_name,
385395
vth[PARROT_VTABLE_SLOT_SET_PMC_KEYED_INT].hint);
@@ -404,7 +414,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
404414
Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), old_ctx);
405415
}
406416
else if (vth && vth[PARROT_VTABLE_SLOT_SET_PMC_KEYED_STR].class_handle) {
407-
PMC *val = REPR(decont)->get_attribute(interp, decont,
417+
PMC *val = get_attr(interp, decont,
408418
vth[PARROT_VTABLE_SLOT_SET_PMC_KEYED_STR].class_handle,
409419
vth[PARROT_VTABLE_SLOT_SET_PMC_KEYED_STR].attr_name,
410420
vth[PARROT_VTABLE_SLOT_SET_PMC_KEYED_STR].hint);
@@ -437,7 +447,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
437447
return VTABLE_get_integer_keyed_int(interp, cappy, 0);
438448
}
439449
else if (vth && vth[PARROT_VTABLE_SLOT_EXISTS_KEYED].class_handle) {
440-
PMC *val = REPR(decont)->get_attribute(interp, decont,
450+
PMC *val = get_attr(interp, decont,
441451
vth[PARROT_VTABLE_SLOT_EXISTS_KEYED].class_handle,
442452
vth[PARROT_VTABLE_SLOT_EXISTS_KEYED].attr_name,
443453
vth[PARROT_VTABLE_SLOT_EXISTS_KEYED].hint);
@@ -464,7 +474,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
464474
return VTABLE_get_integer_keyed_int(interp, cappy, 0);
465475
}
466476
else if (vth && vth[PARROT_VTABLE_SLOT_EXISTS_KEYED_INT].class_handle) {
467-
PMC *val = REPR(decont)->get_attribute(interp, decont,
477+
PMC *val = get_attr(interp, decont,
468478
vth[PARROT_VTABLE_SLOT_EXISTS_KEYED_INT].class_handle,
469479
vth[PARROT_VTABLE_SLOT_EXISTS_KEYED_INT].attr_name,
470480
vth[PARROT_VTABLE_SLOT_EXISTS_KEYED_INT].hint);
@@ -490,7 +500,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
490500
return VTABLE_get_integer_keyed_int(interp, cappy, 0);
491501
}
492502
else if (vth && vth[PARROT_VTABLE_SLOT_EXISTS_KEYED_STR].class_handle) {
493-
PMC *val = REPR(decont)->get_attribute(interp, decont,
503+
PMC *val = get_attr(interp, decont,
494504
vth[PARROT_VTABLE_SLOT_EXISTS_KEYED_STR].class_handle,
495505
vth[PARROT_VTABLE_SLOT_EXISTS_KEYED_STR].attr_name,
496506
vth[PARROT_VTABLE_SLOT_EXISTS_KEYED_STR].hint);
@@ -522,7 +532,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
522532
Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), old_ctx);
523533
}
524534
else if (vth && vth[PARROT_VTABLE_SLOT_DELETE_KEYED].class_handle) {
525-
PMC *val = REPR(decont)->get_attribute(interp, decont,
535+
PMC *val = get_attr(interp, decont,
526536
vth[PARROT_VTABLE_SLOT_DELETE_KEYED].class_handle,
527537
vth[PARROT_VTABLE_SLOT_DELETE_KEYED].attr_name,
528538
vth[PARROT_VTABLE_SLOT_DELETE_KEYED].hint);
@@ -548,7 +558,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
548558
Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), old_ctx);
549559
}
550560
else if (vth && vth[PARROT_VTABLE_SLOT_DELETE_KEYED_INT].class_handle) {
551-
PMC *val = REPR(decont)->get_attribute(interp, decont,
561+
PMC *val = get_attr(interp, decont,
552562
vth[PARROT_VTABLE_SLOT_DELETE_KEYED_INT].class_handle,
553563
vth[PARROT_VTABLE_SLOT_DELETE_KEYED_INT].attr_name,
554564
vth[PARROT_VTABLE_SLOT_DELETE_KEYED_INT].hint);
@@ -573,7 +583,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
573583
Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), old_ctx);
574584
}
575585
else if (vth && vth[PARROT_VTABLE_SLOT_DELETE_KEYED_STR].class_handle) {
576-
PMC *val = REPR(decont)->get_attribute(interp, decont,
586+
PMC *val = get_attr(interp, decont,
577587
vth[PARROT_VTABLE_SLOT_DELETE_KEYED_STR].class_handle,
578588
vth[PARROT_VTABLE_SLOT_DELETE_KEYED_STR].attr_name,
579589
vth[PARROT_VTABLE_SLOT_DELETE_KEYED_STR].hint);
@@ -598,7 +608,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
598608
Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), old_ctx);
599609
}
600610
else if (vth && vth[PARROT_VTABLE_SLOT_UNSHIFT_PMC].class_handle) {
601-
PMC *val = REPR(decont)->get_attribute(interp, decont,
611+
PMC *val = get_attr(interp, decont,
602612
vth[PARROT_VTABLE_SLOT_UNSHIFT_PMC].class_handle,
603613
vth[PARROT_VTABLE_SLOT_UNSHIFT_PMC].attr_name,
604614
vth[PARROT_VTABLE_SLOT_UNSHIFT_PMC].hint);
@@ -623,7 +633,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
623633
Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), old_ctx);
624634
}
625635
else if (vth && vth[PARROT_VTABLE_SLOT_PUSH_PMC].class_handle) {
626-
PMC *val = REPR(decont)->get_attribute(interp, decont,
636+
PMC *val = get_attr(interp, decont,
627637
vth[PARROT_VTABLE_SLOT_PUSH_PMC].class_handle,
628638
vth[PARROT_VTABLE_SLOT_PUSH_PMC].attr_name,
629639
vth[PARROT_VTABLE_SLOT_PUSH_PMC].hint);
@@ -645,7 +655,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
645655
return (opcode_t *)next;
646656
}
647657
else if (vth && vth[PARROT_VTABLE_SLOT_INVOKE].class_handle) {
648-
PMC *val = REPR(decont)->get_attribute(interp, decont,
658+
PMC *val = get_attr(interp, decont,
649659
vth[PARROT_VTABLE_SLOT_INVOKE].class_handle,
650660
vth[PARROT_VTABLE_SLOT_INVOKE].attr_name,
651661
vth[PARROT_VTABLE_SLOT_INVOKE].hint);
@@ -670,7 +680,7 @@ pmclass SixModelObject manual_attrs dynpmc group nqp {
670680
return VTABLE_get_pmc_keyed_int(interp, cappy, 0);
671681
}
672682
else if (vth && vth[PARROT_VTABLE_SLOT_GET_ITER].class_handle) {
673-
PMC *val = REPR(decont)->get_attribute(interp, decont,
683+
PMC *val = get_attr(interp, decont,
674684
vth[PARROT_VTABLE_SLOT_GET_ITER].class_handle,
675685
vth[PARROT_VTABLE_SLOT_GET_ITER].attr_name,
676686
vth[PARROT_VTABLE_SLOT_GET_ITER].hint);

0 commit comments

Comments
 (0)