2634 // (i.e., larger than the maximum offset necessary for any
2635 // field access)
2636 ) {
2637 IdealKit ideal = IdealKit(this);
2638 #define __ ideal.
2639 IdealVariable normalized_result(ideal);
2640 __ declarations_done();
2641 __ set(normalized_result, p);
2642 __ if_then(p, BoolTest::ne, ideal.ConI(0));
2643 __ set(normalized_result, ideal.ConI(1));
2644 ideal.end_if();
2645 final_sync(ideal);
2646 p = __ value(normalized_result);
2647 #undef __
2648 }
2649 }
2650 if (type == T_ADDRESS) {
2651 p = gvn().transform(new CastP2XNode(NULL, p));
2652 p = ConvX2UL(p);
2653 }
2654 if (field != NULL && field->is_flattenable()&& !field->is_flattened()) {
2655 // Load a non-flattened but flattenable value type from memory
2656 if (value_type->value_klass()->is_scalarizable()) {
2657 p = ValueTypeNode::make_from_oop(this, p, value_type->value_klass());
2658 } else {
2659 p = null2default(p, value_type->value_klass());
2660 }
2661 }
2662 // The load node has the control of the preceding MemBarCPUOrder. All
2663 // following nodes will have the control of the MemBarCPUOrder inserted at
2664 // the end of this method. So, pushing the load onto the stack at a later
2665 // point is fine.
2666 set_result(p);
2667 } else {
2668 if (bt == T_ADDRESS) {
2669 // Repackage the long as a pointer.
2670 val = ConvL2X(val);
2671 val = gvn().transform(new CastX2PNode(val));
2672 }
2673 if (type == T_VALUETYPE) {
2674 if (adr_type->isa_instptr() && !mismatched) {
|
2634 // (i.e., larger than the maximum offset necessary for any
2635 // field access)
2636 ) {
2637 IdealKit ideal = IdealKit(this);
2638 #define __ ideal.
2639 IdealVariable normalized_result(ideal);
2640 __ declarations_done();
2641 __ set(normalized_result, p);
2642 __ if_then(p, BoolTest::ne, ideal.ConI(0));
2643 __ set(normalized_result, ideal.ConI(1));
2644 ideal.end_if();
2645 final_sync(ideal);
2646 p = __ value(normalized_result);
2647 #undef __
2648 }
2649 }
2650 if (type == T_ADDRESS) {
2651 p = gvn().transform(new CastP2XNode(NULL, p));
2652 p = ConvX2UL(p);
2653 }
2654 if (field != NULL && field->is_flattenable() && !field->is_flattened()) {
2655 // Load a non-flattened but flattenable value type from memory
2656 if (value_type->value_klass()->is_scalarizable()) {
2657 p = ValueTypeNode::make_from_oop(this, p, value_type->value_klass());
2658 } else {
2659 p = null2default(p, value_type->value_klass());
2660 }
2661 }
2662 // The load node has the control of the preceding MemBarCPUOrder. All
2663 // following nodes will have the control of the MemBarCPUOrder inserted at
2664 // the end of this method. So, pushing the load onto the stack at a later
2665 // point is fine.
2666 set_result(p);
2667 } else {
2668 if (bt == T_ADDRESS) {
2669 // Repackage the long as a pointer.
2670 val = ConvL2X(val);
2671 val = gvn().transform(new CastX2PNode(val));
2672 }
2673 if (type == T_VALUETYPE) {
2674 if (adr_type->isa_instptr() && !mismatched) {
|