429 430 void oopDesc::obj_field_put(int offset, oop value) { 431 UseCompressedOops ? oop_store(obj_field_addr<narrowOop>(offset), value) : 432 oop_store(obj_field_addr<oop>(offset), value); 433 } 434 435 void oopDesc::obj_field_put_raw(int offset, oop value) { 436 UseCompressedOops ? 437 encode_store_heap_oop(obj_field_addr<narrowOop>(offset), value) : 438 encode_store_heap_oop(obj_field_addr<oop>(offset), value); 439 } 440 void oopDesc::obj_field_put_volatile(int offset, oop value) { 441 OrderAccess::release(); 442 obj_field_put(offset, value); 443 OrderAccess::fence(); 444 } 445 446 Metadata* oopDesc::metadata_field(int offset) const { return *metadata_field_addr(offset); } 447 void oopDesc::metadata_field_put(int offset, Metadata* value) { *metadata_field_addr(offset) = value; } 448 449 void oopDesc::release_metadata_field_put(int offset, Metadata* value) { 450 OrderAccess::release_store_ptr(metadata_field_addr(offset), value); 451 } 452 453 jbyte oopDesc::byte_field(int offset) const { return (jbyte) *byte_field_addr(offset); } 454 void oopDesc::byte_field_put(int offset, jbyte contents) { *byte_field_addr(offset) = (jint) contents; } 455 456 jchar oopDesc::char_field(int offset) const { return (jchar) *char_field_addr(offset); } 457 void oopDesc::char_field_put(int offset, jchar contents) { *char_field_addr(offset) = (jint) contents; } 458 459 jboolean oopDesc::bool_field(int offset) const { return (jboolean) *bool_field_addr(offset); } 460 void oopDesc::bool_field_put(int offset, jboolean contents) { *bool_field_addr(offset) = (((jint) contents) & 1); } 461 462 jint oopDesc::int_field(int offset) const { return *int_field_addr(offset); } 463 void oopDesc::int_field_put(int offset, jint contents) { *int_field_addr(offset) = contents; } 464 465 jshort oopDesc::short_field(int offset) const { return (jshort) *short_field_addr(offset); } 466 void oopDesc::short_field_put(int offset, jshort contents) { *short_field_addr(offset) = (jint) contents;} 467 468 jlong oopDesc::long_field(int offset) const { return *long_field_addr(offset); } | 429 430 void oopDesc::obj_field_put(int offset, oop value) { 431 UseCompressedOops ? oop_store(obj_field_addr<narrowOop>(offset), value) : 432 oop_store(obj_field_addr<oop>(offset), value); 433 } 434 435 void oopDesc::obj_field_put_raw(int offset, oop value) { 436 UseCompressedOops ? 437 encode_store_heap_oop(obj_field_addr<narrowOop>(offset), value) : 438 encode_store_heap_oop(obj_field_addr<oop>(offset), value); 439 } 440 void oopDesc::obj_field_put_volatile(int offset, oop value) { 441 OrderAccess::release(); 442 obj_field_put(offset, value); 443 OrderAccess::fence(); 444 } 445 446 Metadata* oopDesc::metadata_field(int offset) const { return *metadata_field_addr(offset); } 447 void oopDesc::metadata_field_put(int offset, Metadata* value) { *metadata_field_addr(offset) = value; } 448 449 Metadata* oopDesc::metadata_field_acquire(int offset) const { 450 return (Metadata*)OrderAccess::load_ptr_acquire(metadata_field_addr(offset)); 451 } 452 453 void oopDesc::release_metadata_field_put(int offset, Metadata* value) { 454 OrderAccess::release_store_ptr(metadata_field_addr(offset), value); 455 } 456 457 jbyte oopDesc::byte_field(int offset) const { return (jbyte) *byte_field_addr(offset); } 458 void oopDesc::byte_field_put(int offset, jbyte contents) { *byte_field_addr(offset) = (jint) contents; } 459 460 jchar oopDesc::char_field(int offset) const { return (jchar) *char_field_addr(offset); } 461 void oopDesc::char_field_put(int offset, jchar contents) { *char_field_addr(offset) = (jint) contents; } 462 463 jboolean oopDesc::bool_field(int offset) const { return (jboolean) *bool_field_addr(offset); } 464 void oopDesc::bool_field_put(int offset, jboolean contents) { *bool_field_addr(offset) = (((jint) contents) & 1); } 465 466 jint oopDesc::int_field(int offset) const { return *int_field_addr(offset); } 467 void oopDesc::int_field_put(int offset, jint contents) { *int_field_addr(offset) = contents; } 468 469 jshort oopDesc::short_field(int offset) const { return (jshort) *short_field_addr(offset); } 470 void oopDesc::short_field_put(int offset, jshort contents) { *short_field_addr(offset) = (jint) contents;} 471 472 jlong oopDesc::long_field(int offset) const { return *long_field_addr(offset); } |