Skip to content

Commit bb6a1c6

Browse files
author
Reini Urban
committed
pmc2c_orig: optimize 6model pmcs for the new pmc2c
Annotate several PMC methods for unneeded or manual GC write barriers This requires pmc2c from parrot 6.5.0 (i.e. rurban/pmc2c_orig2-gh1069) This is ~4.36% faster for the nqp testsuite. $ perf stat -r2 prove -r --exec "./nqp-p --vmlibs=nqp_dyncall_ops" t/nqp t/hll t/qregex t/p5regex t/qast t/serialization
1 parent 69c7822 commit bb6a1c6

File tree

7 files changed

+106
-92
lines changed

7 files changed

+106
-92
lines changed

src/vm/parrot/pmc/nqplexpad.pmc

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ Return the LexInfo PMC, if any or a Null PMC.
240240
return CTX_REG_PMC(interp, ctx, reg);
241241
}
242242

243-
VTABLE INTVAL get_integer_keyed_str(STRING *name) {
243+
VTABLE INTVAL get_integer_keyed_str(STRING *name) :no_wb {
244244
Hash *hash;
245245
INTVAL reg;
246246
PMC *ctx;
@@ -253,7 +253,7 @@ Return the LexInfo PMC, if any or a Null PMC.
253253
return CTX_REG_INT(interp, ctx, reg);
254254
}
255255

256-
VTABLE FLOATVAL get_number_keyed_str(STRING *name) {
256+
VTABLE FLOATVAL get_number_keyed_str(STRING *name) :no_wb {
257257
Hash *hash;
258258
INTVAL reg;
259259
PMC *ctx;
@@ -266,7 +266,7 @@ Return the LexInfo PMC, if any or a Null PMC.
266266
return CTX_REG_NUM(interp, ctx, reg);
267267
}
268268

269-
VTABLE STRING *get_string_keyed_str(STRING *name) {
269+
VTABLE STRING *get_string_keyed_str(STRING *name) :no_wb {
270270
Hash *hash;
271271
INTVAL reg;
272272
PMC *ctx;
@@ -279,22 +279,22 @@ Return the LexInfo PMC, if any or a Null PMC.
279279
return CTX_REG_STR(interp, ctx, reg);
280280
}
281281

282-
VTABLE PMC *get_pmc_keyed(PMC *name) {
282+
VTABLE PMC *get_pmc_keyed(PMC *name) :no_wb {
283283
STRING * const s = VTABLE_get_string(INTERP, name);
284284
return SELF.get_pmc_keyed_str(s);
285285
}
286286

287-
VTABLE INTVAL get_integer_keyed(PMC *name) {
287+
VTABLE INTVAL get_integer_keyed(PMC *name) :no_wb {
288288
STRING * const s = VTABLE_get_string(INTERP, name);
289289
return SELF.get_integer_keyed_str(s);
290290
}
291291

292-
VTABLE FLOATVAL get_number_keyed(PMC *name) {
292+
VTABLE FLOATVAL get_number_keyed(PMC *name) :no_wb {
293293
STRING * const s = VTABLE_get_string(INTERP, name);
294294
return SELF.get_number_keyed_str(s);
295295
}
296296

297-
VTABLE STRING *get_string_keyed(PMC *name) {
297+
VTABLE STRING *get_string_keyed(PMC *name) :no_wb {
298298
STRING * const s = VTABLE_get_string(INTERP, name);
299299
return SELF.get_string_keyed_str(s);
300300
}
@@ -345,33 +345,33 @@ Return the LexInfo PMC, if any or a Null PMC.
345345
PARROT_GC_WRITE_BARRIER(INTERP, ctx);
346346
}
347347

348-
VTABLE void set_pmc_keyed(PMC *name, PMC *value) {
348+
VTABLE void set_pmc_keyed(PMC *name, PMC *value) :manual_wb {
349349
STRING * const s = VTABLE_get_string(INTERP, name);
350350
SELF.set_pmc_keyed_str(s, value);
351351
}
352352

353-
VTABLE void set_integer_keyed(PMC *name, INTVAL value) {
353+
VTABLE void set_integer_keyed(PMC *name, INTVAL value) :manual_wb {
354354
STRING * const s = VTABLE_get_string(INTERP, name);
355355
SELF.set_integer_keyed_str(s, value);
356356
}
357357

358-
VTABLE void set_number_keyed(PMC *name, FLOATVAL value) {
358+
VTABLE void set_number_keyed(PMC *name, FLOATVAL value) :manual_wb {
359359
STRING * const s = VTABLE_get_string(INTERP, name);
360360
SELF.set_number_keyed_str(s, value);
361361
}
362362

363-
VTABLE void set_string_keyed(PMC *name, STRING *value) {
363+
VTABLE void set_string_keyed(PMC *name, STRING *value) :manual_wb {
364364
STRING * const s = VTABLE_get_string(INTERP, name);
365365
SELF.set_string_keyed_str(s, value);
366366
}
367367

368-
METHOD get_lexinfo() {
368+
METHOD get_lexinfo() :no_wb {
369369
PMC *lexinfo;
370370
GET_ATTR_lexinfo(INTERP, SELF, lexinfo);
371371
RETURN(PMC *lexinfo);
372372
}
373373

374-
METHOD get_lex_type(STRING *name) {
374+
METHOD get_lex_type(STRING *name) :no_wb {
375375
Hash *hash;
376376
HashBucket *b;
377377
INTVAL spec;
@@ -398,7 +398,7 @@ Get iterator for declared lexicals.
398398
=cut
399399

400400
*/
401-
VTABLE PMC *get_iter() {
401+
VTABLE PMC *get_iter() :no_wb {
402402
PMC *lexinfo;
403403
GET_ATTR_lexinfo(INTERP, SELF, lexinfo);
404404
return VTABLE_get_iter(INTERP, lexinfo);

src/vm/parrot/pmc/ownedhash.pmc

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,95 +7,95 @@ pmclass OwnedHash extends Hash provides hash auto_attrs dynpmc group nqp {
77
/* The object that owns this hash. */
88
ATTR PMC *owner;
99

10-
VTABLE void set_integer_keyed(PMC* key, INTVAL value) {
10+
VTABLE void set_integer_keyed(PMC* key, INTVAL value) :manual_wb {
1111
PMC *owner;
1212
GET_ATTR_owner(interp, SELF, owner);
1313
if (!PMC_IS_NULL(owner))
1414
OBJ_SC_WRITE_BARRIER(owner);
1515
SUPER(key, value);
1616
}
17-
VTABLE void set_integer_keyed_int(INTVAL key, INTVAL value) {
17+
VTABLE void set_integer_keyed_int(INTVAL key, INTVAL value) :manual_wb {
1818
PMC *owner;
1919
GET_ATTR_owner(interp, SELF, owner);
2020
if (!PMC_IS_NULL(owner))
2121
OBJ_SC_WRITE_BARRIER(owner);
2222
SUPER(key, value);
2323
}
24-
VTABLE void set_integer_keyed_str(STRING* key, INTVAL value) {
24+
VTABLE void set_integer_keyed_str(STRING* key, INTVAL value) :manual_wb {
2525
PMC *owner;
2626
GET_ATTR_owner(interp, SELF, owner);
2727
if (!PMC_IS_NULL(owner))
2828
OBJ_SC_WRITE_BARRIER(owner);
2929
SUPER(key, value);
3030
}
3131

32-
VTABLE void set_number_keyed(PMC* key, FLOATVAL value) {
32+
VTABLE void set_number_keyed(PMC* key, FLOATVAL value) :manual_wb {
3333
PMC *owner;
3434
GET_ATTR_owner(interp, SELF, owner);
3535
if (!PMC_IS_NULL(owner))
3636
OBJ_SC_WRITE_BARRIER(owner);
3737
SUPER(key, value);
3838
}
39-
VTABLE void set_number_keyed_int(INTVAL key, FLOATVAL value) {
39+
VTABLE void set_number_keyed_int(INTVAL key, FLOATVAL value) :manual_wb {
4040
PMC *owner;
4141
GET_ATTR_owner(interp, SELF, owner);
4242
if (!PMC_IS_NULL(owner))
4343
OBJ_SC_WRITE_BARRIER(owner);
4444
SUPER(key, value);
4545
}
46-
VTABLE void set_number_keyed_str(STRING* key, FLOATVAL value) {
46+
VTABLE void set_number_keyed_str(STRING* key, FLOATVAL value) :manual_wb {
4747
PMC *owner;
4848
GET_ATTR_owner(interp, SELF, owner);
4949
if (!PMC_IS_NULL(owner))
5050
OBJ_SC_WRITE_BARRIER(owner);
5151
SUPER(key, value);
5252
}
5353

54-
VTABLE void set_string_keyed(PMC* key, STRING* value) {
54+
VTABLE void set_string_keyed(PMC* key, STRING* value) :manual_wb {
5555
PMC *owner;
5656
GET_ATTR_owner(interp, SELF, owner);
5757
if (!PMC_IS_NULL(owner))
5858
OBJ_SC_WRITE_BARRIER(owner);
5959
SUPER(key, value);
6060
}
61-
VTABLE void set_string_keyed_int(INTVAL key, STRING* value) {
61+
VTABLE void set_string_keyed_int(INTVAL key, STRING* value) :manual_wb {
6262
PMC *owner;
6363
GET_ATTR_owner(interp, SELF, owner);
6464
if (!PMC_IS_NULL(owner))
6565
OBJ_SC_WRITE_BARRIER(owner);
6666
SUPER(key, value);
6767
}
68-
VTABLE void set_string_keyed_str(STRING* key, STRING* value) {
68+
VTABLE void set_string_keyed_str(STRING* key, STRING* value) :manual_wb {
6969
PMC *owner;
7070
GET_ATTR_owner(interp, SELF, owner);
7171
if (!PMC_IS_NULL(owner))
7272
OBJ_SC_WRITE_BARRIER(owner);
7373
SUPER(key, value);
7474
}
7575

76-
VTABLE void set_pmc_keyed(PMC* key, PMC* value) {
76+
VTABLE void set_pmc_keyed(PMC* key, PMC* value) :manual_wb {
7777
PMC *owner;
7878
GET_ATTR_owner(interp, SELF, owner);
7979
if (!PMC_IS_NULL(owner))
8080
OBJ_SC_WRITE_BARRIER(owner);
8181
SUPER(key, value);
8282
}
83-
VTABLE void set_pmc_keyed_int(INTVAL key, PMC* value) {
83+
VTABLE void set_pmc_keyed_int(INTVAL key, PMC* value) :manual_wb {
8484
PMC *owner;
8585
GET_ATTR_owner(interp, SELF, owner);
8686
if (!PMC_IS_NULL(owner))
8787
OBJ_SC_WRITE_BARRIER(owner);
8888
SUPER(key, value);
8989
}
90-
VTABLE void set_pmc_keyed_str(STRING* key, PMC* value) {
90+
VTABLE void set_pmc_keyed_str(STRING* key, PMC* value) :manual_wb {
9191
PMC *owner;
9292
GET_ATTR_owner(interp, SELF, owner);
9393
if (!PMC_IS_NULL(owner))
9494
OBJ_SC_WRITE_BARRIER(owner);
9595
SUPER(key, value);
9696
}
9797

98-
VTABLE void mark() {
98+
VTABLE void mark() :manual_wb {
9999
PMC *owner;
100100
GET_ATTR_owner(interp, SELF, owner);
101101
Parrot_gc_mark_PMC_alive(INTERP, owner);

0 commit comments

Comments
 (0)