diff options
| author | Andrea Corallo | 2019-06-13 21:18:25 +0200 |
|---|---|---|
| committer | Andrea Corallo | 2020-01-01 11:33:41 +0100 |
| commit | 79dc3a717e23cf66d04cf3ec3392bd7635839bd0 (patch) | |
| tree | 1ab013dc8133df4741c8909855ddf655461aa717 /src | |
| parent | 187c1eed6f5e21088c5b9b129c65b3e2fe512d1b (diff) | |
| download | emacs-79dc3a717e23cf66d04cf3ec3392bd7635839bd0.tar.gz emacs-79dc3a717e23cf66d04cf3ec3392bd7635839bd0.zip | |
XLP XLI l and r values
Diffstat (limited to 'src')
| -rw-r--r-- | src/comp.c | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/src/comp.c b/src/comp.c index 3f938e2c5d6..5ae4e1b0532 100644 --- a/src/comp.c +++ b/src/comp.c | |||
| @@ -274,13 +274,37 @@ comp_cast (gcc_jit_type *new_type, gcc_jit_rvalue *obj) | |||
| 274 | } | 274 | } |
| 275 | 275 | ||
| 276 | INLINE static gcc_jit_rvalue * | 276 | INLINE static gcc_jit_rvalue * |
| 277 | comp_XLI (gcc_jit_rvalue *obj) | 277 | comp_rval_XLI (gcc_jit_rvalue *obj) |
| 278 | { | 278 | { |
| 279 | return gcc_jit_rvalue_access_field (obj, | 279 | return gcc_jit_rvalue_access_field (obj, |
| 280 | NULL, | 280 | NULL, |
| 281 | comp.lisp_obj_as_num); | 281 | comp.lisp_obj_as_num); |
| 282 | } | 282 | } |
| 283 | 283 | ||
| 284 | INLINE static gcc_jit_lvalue * | ||
| 285 | comp_lval_XLI (gcc_jit_lvalue *obj) | ||
| 286 | { | ||
| 287 | return gcc_jit_lvalue_access_field (obj, | ||
| 288 | NULL, | ||
| 289 | comp.lisp_obj_as_num); | ||
| 290 | } | ||
| 291 | |||
| 292 | INLINE static gcc_jit_rvalue * | ||
| 293 | comp_rval_XLP (gcc_jit_rvalue *obj) | ||
| 294 | { | ||
| 295 | return gcc_jit_rvalue_access_field (obj, | ||
| 296 | NULL, | ||
| 297 | comp.lisp_obj_as_ptr); | ||
| 298 | } | ||
| 299 | |||
| 300 | INLINE static gcc_jit_lvalue * | ||
| 301 | comp_lval_XLP (gcc_jit_lvalue *obj) | ||
| 302 | { | ||
| 303 | return gcc_jit_lvalue_access_field (obj, | ||
| 304 | NULL, | ||
| 305 | comp.lisp_obj_as_ptr); | ||
| 306 | } | ||
| 307 | |||
| 284 | static gcc_jit_rvalue * | 308 | static gcc_jit_rvalue * |
| 285 | comp_TAGGEDP (gcc_jit_rvalue *obj, unsigned tag) | 309 | comp_TAGGEDP (gcc_jit_rvalue *obj, unsigned tag) |
| 286 | { | 310 | { |
| @@ -294,7 +318,7 @@ comp_TAGGEDP (gcc_jit_rvalue *obj, unsigned tag) | |||
| 294 | NULL, | 318 | NULL, |
| 295 | GCC_JIT_BINARY_OP_RSHIFT, | 319 | GCC_JIT_BINARY_OP_RSHIFT, |
| 296 | comp.long_long_type, | 320 | comp.long_long_type, |
| 297 | comp_XLI (obj), | 321 | comp_rval_XLI (obj), |
| 298 | gcc_jit_context_new_rvalue_from_int (comp.ctxt, | 322 | gcc_jit_context_new_rvalue_from_int (comp.ctxt, |
| 299 | comp.long_long_type, | 323 | comp.long_long_type, |
| 300 | (USE_LSB_TAG ? 0 : VALBITS))); | 324 | (USE_LSB_TAG ? 0 : VALBITS))); |
| @@ -354,7 +378,7 @@ comp_FIXNUMP (gcc_jit_rvalue *obj) | |||
| 354 | NULL, | 378 | NULL, |
| 355 | GCC_JIT_BINARY_OP_RSHIFT, | 379 | GCC_JIT_BINARY_OP_RSHIFT, |
| 356 | comp.long_long_type, | 380 | comp.long_long_type, |
| 357 | comp_XLI (obj), | 381 | comp_rval_XLI (obj), |
| 358 | gcc_jit_context_new_rvalue_from_int (comp.ctxt, | 382 | gcc_jit_context_new_rvalue_from_int (comp.ctxt, |
| 359 | comp.long_long_type, | 383 | comp.long_long_type, |
| 360 | (USE_LSB_TAG ? 0 : FIXNUM_BITS))); | 384 | (USE_LSB_TAG ? 0 : FIXNUM_BITS))); |
| @@ -396,7 +420,7 @@ comp_XFIXNUM (gcc_jit_rvalue *obj) | |||
| 396 | NULL, | 420 | NULL, |
| 397 | GCC_JIT_BINARY_OP_RSHIFT, | 421 | GCC_JIT_BINARY_OP_RSHIFT, |
| 398 | comp.long_long_type, | 422 | comp.long_long_type, |
| 399 | comp_XLI (obj), | 423 | comp_rval_XLI (obj), |
| 400 | comp.inttypebits); | 424 | comp.inttypebits); |
| 401 | } | 425 | } |
| 402 | 426 | ||
| @@ -425,10 +449,7 @@ comp_make_fixnum (gcc_jit_block *block, gcc_jit_rvalue *obj) | |||
| 425 | 449 | ||
| 426 | gcc_jit_block_add_assignment (block, | 450 | gcc_jit_block_add_assignment (block, |
| 427 | NULL, | 451 | NULL, |
| 428 | gcc_jit_lvalue_access_field ( | 452 | comp_lval_XLI (res), |
| 429 | res, | ||
| 430 | NULL, | ||
| 431 | comp.lisp_obj_as_num), | ||
| 432 | tmp); | 453 | tmp); |
| 433 | 454 | ||
| 434 | return gcc_jit_lvalue_as_rvalue (res); | 455 | return gcc_jit_lvalue_as_rvalue (res); |
| @@ -451,11 +472,6 @@ comp_lisp_obj_from_ptr (basic_block_t *bblock, void *p) | |||
| 451 | NULL, | 472 | NULL, |
| 452 | comp.lisp_obj_type, | 473 | comp.lisp_obj_type, |
| 453 | ptr_var_name); | 474 | ptr_var_name); |
| 454 | gcc_jit_lvalue *lisp_obj_as_ptr = | ||
| 455 | gcc_jit_lvalue_access_field (lisp_obj, | ||
| 456 | NULL, | ||
| 457 | comp.lisp_obj_as_ptr); | ||
| 458 | |||
| 459 | gcc_jit_rvalue *void_ptr = | 475 | gcc_jit_rvalue *void_ptr = |
| 460 | gcc_jit_context_new_rvalue_from_ptr(comp.ctxt, | 476 | gcc_jit_context_new_rvalue_from_ptr(comp.ctxt, |
| 461 | comp.void_ptr_type, | 477 | comp.void_ptr_type, |
| @@ -463,7 +479,7 @@ comp_lisp_obj_from_ptr (basic_block_t *bblock, void *p) | |||
| 463 | 479 | ||
| 464 | gcc_jit_block_add_assignment (bblock->gcc_bb, | 480 | gcc_jit_block_add_assignment (bblock->gcc_bb, |
| 465 | NULL, | 481 | NULL, |
| 466 | lisp_obj_as_ptr, | 482 | comp_lval_XLP (lisp_obj), |
| 467 | void_ptr); | 483 | void_ptr); |
| 468 | return gcc_jit_lvalue_as_rvalue (lisp_obj); | 484 | return gcc_jit_lvalue_as_rvalue (lisp_obj); |
| 469 | } | 485 | } |