3534 Node* obj,
3535 Node* adr,
3536 uint alias_idx,
3537 Node* val,
3538 const TypeOopPtr* val_type,
3539 Node* pre_val,
3540 BasicType bt) {
3541
3542 // Some sanity checks
3543 // Note: val is unused in this routine.
3544
3545 if (do_load) {
3546 // We need to generate the load of the previous value
3547 assert(obj != NULL, "must have a base");
3548 assert(adr != NULL, "where are loading from?");
3549 assert(pre_val == NULL, "loaded already?");
3550 assert(val_type != NULL, "need a type");
3551 } else {
3552 // In this case both val_type and alias_idx are unused.
3553 assert(pre_val != NULL, "must be loaded already");
3554 assert(pre_val->bottom_type()->basic_type() == T_OBJECT, "or we shouldn't be here");
3555 }
3556 assert(bt == T_OBJECT, "or we shouldn't be here");
3557
3558 IdealKit ideal(this, true);
3559
3560 Node* tls = __ thread(); // ThreadLocalStorage
3561
3562 Node* no_ctrl = NULL;
3563 Node* no_base = __ top();
3564 Node* zero = __ ConI(0);
3565 Node* zeroX = __ ConX(0);
3566
3567 float likely = PROB_LIKELY(0.999);
3568 float unlikely = PROB_UNLIKELY(0.999);
3569
3570 BasicType active_type = in_bytes(PtrQueue::byte_width_of_active()) == 4 ? T_INT : T_BYTE;
3571 assert(in_bytes(PtrQueue::byte_width_of_active()) == 4 || in_bytes(PtrQueue::byte_width_of_active()) == 1, "flag width");
3572
3573 // Offsets into the thread
|
3534 Node* obj,
3535 Node* adr,
3536 uint alias_idx,
3537 Node* val,
3538 const TypeOopPtr* val_type,
3539 Node* pre_val,
3540 BasicType bt) {
3541
3542 // Some sanity checks
3543 // Note: val is unused in this routine.
3544
3545 if (do_load) {
3546 // We need to generate the load of the previous value
3547 assert(obj != NULL, "must have a base");
3548 assert(adr != NULL, "where are loading from?");
3549 assert(pre_val == NULL, "loaded already?");
3550 assert(val_type != NULL, "need a type");
3551 } else {
3552 // In this case both val_type and alias_idx are unused.
3553 assert(pre_val != NULL, "must be loaded already");
3554 // Nothing to be done if pre_val is null.
3555 if (pre_val->bottom_type() == TypePtr::NULL_PTR) return;
3556 assert(pre_val->bottom_type()->basic_type() == T_OBJECT, "or we shouldn't be here");
3557 }
3558 assert(bt == T_OBJECT, "or we shouldn't be here");
3559
3560 IdealKit ideal(this, true);
3561
3562 Node* tls = __ thread(); // ThreadLocalStorage
3563
3564 Node* no_ctrl = NULL;
3565 Node* no_base = __ top();
3566 Node* zero = __ ConI(0);
3567 Node* zeroX = __ ConX(0);
3568
3569 float likely = PROB_LIKELY(0.999);
3570 float unlikely = PROB_UNLIKELY(0.999);
3571
3572 BasicType active_type = in_bytes(PtrQueue::byte_width_of_active()) == 4 ? T_INT : T_BYTE;
3573 assert(in_bytes(PtrQueue::byte_width_of_active()) == 4 || in_bytes(PtrQueue::byte_width_of_active()) == 1, "flag width");
3574
3575 // Offsets into the thread
|