src/hotspot/share/oops/objArrayOop.inline.hpp
changeset 47998 fb0275c320a0
parent 47216 71c04702a3d5
child 49041 44122f767467
equal deleted inserted replaced
47997:55c43e677ded 47998:fb0275c320a0
     1 /*
     1 /*
     2  * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
    23  */
    23  */
    24 
    24 
    25 #ifndef SHARE_VM_OOPS_OBJARRAYOOP_INLINE_HPP
    25 #ifndef SHARE_VM_OOPS_OBJARRAYOOP_INLINE_HPP
    26 #define SHARE_VM_OOPS_OBJARRAYOOP_INLINE_HPP
    26 #define SHARE_VM_OOPS_OBJARRAYOOP_INLINE_HPP
    27 
    27 
       
    28 #include "oops/access.inline.hpp"
    28 #include "oops/objArrayOop.hpp"
    29 #include "oops/objArrayOop.hpp"
    29 #include "oops/oop.inline.hpp"
    30 #include "oops/oop.inline.hpp"
    30 #include "runtime/globals.hpp"
    31 #include "runtime/globals.hpp"
    31 
    32 
    32 inline oop objArrayOopDesc::obj_at(int index) const {
    33 inline oop objArrayOopDesc::obj_at(int index) const {
    33   // With UseCompressedOops decode the narrow oop in the objArray to an
    34   ptrdiff_t offset = UseCompressedOops ? obj_at_offset<narrowOop>(index) : obj_at_offset<oop>(index);
    34   // uncompressed oop.  Otherwise this is simply a "*" operator.
    35   return HeapAccess<IN_HEAP_ARRAY>::oop_load_at(as_oop(), offset);
    35   if (UseCompressedOops) {
       
    36     return load_decode_heap_oop(obj_at_addr<narrowOop>(index));
       
    37   } else {
       
    38     return load_decode_heap_oop(obj_at_addr<oop>(index));
       
    39   }
       
    40 }
    36 }
    41 
    37 
    42 void objArrayOopDesc::obj_at_put(int index, oop value) {
    38 inline void objArrayOopDesc::obj_at_put(int index, oop value) {
    43   if (UseCompressedOops) {
    39   ptrdiff_t offset = UseCompressedOops ? obj_at_offset<narrowOop>(index) : obj_at_offset<oop>(index);
    44     oop_store(obj_at_addr<narrowOop>(index), value);
    40   HeapAccess<IN_HEAP_ARRAY>::oop_store_at(as_oop(), offset, value);
    45   } else {
       
    46     oop_store(obj_at_addr<oop>(index), value);
       
    47   }
       
    48 }
    41 }
    49 
    42 
    50 #endif // SHARE_VM_OOPS_OBJARRAYOOP_INLINE_HPP
    43 #endif // SHARE_VM_OOPS_OBJARRAYOOP_INLINE_HPP