src/hotspot/share/classfile/javaClasses.inline.hpp
changeset 54102 fab8496eb541
parent 53447 edba42d2370f
child 54486 7fd299216e97
equal deleted inserted replaced
54101:195309a6c7d5 54102:fab8496eb541
    37 
    37 
    38 void java_lang_String::set_value_raw(oop string, typeArrayOop buffer) {
    38 void java_lang_String::set_value_raw(oop string, typeArrayOop buffer) {
    39   assert(initialized, "Must be initialized");
    39   assert(initialized, "Must be initialized");
    40   string->obj_field_put_raw(value_offset, buffer);
    40   string->obj_field_put_raw(value_offset, buffer);
    41 }
    41 }
       
    42 
    42 void java_lang_String::set_value(oop string, typeArrayOop buffer) {
    43 void java_lang_String::set_value(oop string, typeArrayOop buffer) {
    43   assert(initialized && (value_offset > 0), "Must be initialized");
    44   assert(initialized && (value_offset > 0), "Must be initialized");
    44   string->obj_field_put(value_offset, (oop)buffer);
    45   string->obj_field_put(value_offset, (oop)buffer);
    45 }
    46 }
       
    47 
    46 void java_lang_String::set_hash(oop string, unsigned int hash) {
    48 void java_lang_String::set_hash(oop string, unsigned int hash) {
    47   assert(initialized && (hash_offset > 0), "Must be initialized");
    49   assert(initialized && (hash_offset > 0), "Must be initialized");
    48   string->int_field_put(hash_offset, hash);
    50   string->int_field_put(hash_offset, hash);
    49 }
    51 }
    50 
    52 
    51 // Accessors
    53 // Accessors
       
    54 bool java_lang_String::value_equals(typeArrayOop str_value1, typeArrayOop str_value2) {
       
    55   return (oopDesc::equals(str_value1, str_value2) ||
       
    56           (str_value1->length() == str_value2->length() &&
       
    57            (!memcmp(str_value1->base(T_BYTE),
       
    58                     str_value2->base(T_BYTE),
       
    59                     str_value2->length() * sizeof(jbyte)))));
       
    60 }
       
    61 
    52 typeArrayOop java_lang_String::value(oop java_string) {
    62 typeArrayOop java_lang_String::value(oop java_string) {
    53   assert(initialized && (value_offset > 0), "Must be initialized");
    63   assert(initialized && (value_offset > 0), "Must be initialized");
    54   assert(is_instance(java_string), "must be java_string");
    64   assert(is_instance(java_string), "must be java_string");
    55   return (typeArrayOop) java_string->obj_field(value_offset);
    65   return (typeArrayOop) java_string->obj_field(value_offset);
    56 }
    66 }
       
    67 
    57 typeArrayOop java_lang_String::value_no_keepalive(oop java_string) {
    68 typeArrayOop java_lang_String::value_no_keepalive(oop java_string) {
    58   assert(initialized && (value_offset > 0), "Must be initialized");
    69   assert(initialized && (value_offset > 0), "Must be initialized");
    59   assert(is_instance(java_string), "must be java_string");
    70   assert(is_instance(java_string), "must be java_string");
    60   return (typeArrayOop) java_string->obj_field_access<AS_NO_KEEPALIVE>(value_offset);
    71   return (typeArrayOop) java_string->obj_field_access<AS_NO_KEEPALIVE>(value_offset);
    61 }
    72 }
       
    73 
    62 unsigned int java_lang_String::hash(oop java_string) {
    74 unsigned int java_lang_String::hash(oop java_string) {
    63   assert(initialized && (hash_offset > 0), "Must be initialized");
    75   assert(initialized && (hash_offset > 0), "Must be initialized");
    64   assert(is_instance(java_string), "must be java_string");
    76   assert(is_instance(java_string), "must be java_string");
    65   return java_string->int_field(hash_offset);
    77   return java_string->int_field(hash_offset);
    66 }
    78 }
       
    79 
    67 bool java_lang_String::is_latin1(oop java_string) {
    80 bool java_lang_String::is_latin1(oop java_string) {
    68   assert(initialized && (coder_offset > 0), "Must be initialized");
    81   assert(initialized && (coder_offset > 0), "Must be initialized");
    69   assert(is_instance(java_string), "must be java_string");
    82   assert(is_instance(java_string), "must be java_string");
    70   jbyte coder = java_string->byte_field(coder_offset);
    83   jbyte coder = java_string->byte_field(coder_offset);
    71   assert(CompactStrings || coder == CODER_UTF16, "Must be UTF16 without CompactStrings");
    84   assert(CompactStrings || coder == CODER_UTF16, "Must be UTF16 without CompactStrings");
    72   return coder == CODER_LATIN1;
    85   return coder == CODER_LATIN1;
    73 }
    86 }
       
    87 
    74 int java_lang_String::length(oop java_string, typeArrayOop value) {
    88 int java_lang_String::length(oop java_string, typeArrayOop value) {
    75   assert(initialized, "Must be initialized");
    89   assert(initialized, "Must be initialized");
    76   assert(is_instance(java_string), "must be java_string");
    90   assert(is_instance(java_string), "must be java_string");
    77   assert(oopDesc::equals(value, java_lang_String::value(java_string)),
    91   assert(value_equals(value, java_lang_String::value(java_string)),
    78          "value must be same as java_lang_String::value(java_string)");
    92          "value must be equal to java_lang_String::value(java_string)");
    79   if (value == NULL) {
    93   if (value == NULL) {
    80     return 0;
    94     return 0;
    81   }
    95   }
    82   int arr_length = value->length();
    96   int arr_length = value->length();
    83   if (!is_latin1(java_string)) {
    97   if (!is_latin1(java_string)) {
    84     assert((arr_length & 1) == 0, "should be even for UTF16 string");
    98     assert((arr_length & 1) == 0, "should be even for UTF16 string");
    85     arr_length >>= 1; // convert number of bytes to number of elements
    99     arr_length >>= 1; // convert number of bytes to number of elements
    86   }
   100   }
    87   return arr_length;
   101   return arr_length;
    88 }
   102 }
       
   103 
    89 int java_lang_String::length(oop java_string) {
   104 int java_lang_String::length(oop java_string) {
    90   assert(initialized, "Must be initialized");
   105   assert(initialized, "Must be initialized");
    91   assert(is_instance(java_string), "must be java_string");
   106   assert(is_instance(java_string), "must be java_string");
    92   typeArrayOop value = java_lang_String::value_no_keepalive(java_string);
   107   typeArrayOop value = java_lang_String::value_no_keepalive(java_string);
    93   return length(java_string, value);
   108   return length(java_string, value);
    99 
   114 
   100 // Accessors
   115 // Accessors
   101 oop java_lang_ref_Reference::referent(oop ref) {
   116 oop java_lang_ref_Reference::referent(oop ref) {
   102   return ref->obj_field(referent_offset);
   117   return ref->obj_field(referent_offset);
   103 }
   118 }
       
   119 
   104 void java_lang_ref_Reference::set_referent(oop ref, oop value) {
   120 void java_lang_ref_Reference::set_referent(oop ref, oop value) {
   105   ref->obj_field_put(referent_offset, value);
   121   ref->obj_field_put(referent_offset, value);
   106 }
   122 }
       
   123 
   107 void java_lang_ref_Reference::set_referent_raw(oop ref, oop value) {
   124 void java_lang_ref_Reference::set_referent_raw(oop ref, oop value) {
   108   ref->obj_field_put_raw(referent_offset, value);
   125   ref->obj_field_put_raw(referent_offset, value);
   109 }
   126 }
       
   127 
   110 HeapWord* java_lang_ref_Reference::referent_addr_raw(oop ref) {
   128 HeapWord* java_lang_ref_Reference::referent_addr_raw(oop ref) {
   111   return ref->obj_field_addr_raw<HeapWord>(referent_offset);
   129   return ref->obj_field_addr_raw<HeapWord>(referent_offset);
   112 }
   130 }
       
   131 
   113 oop java_lang_ref_Reference::next(oop ref) {
   132 oop java_lang_ref_Reference::next(oop ref) {
   114   return ref->obj_field(next_offset);
   133   return ref->obj_field(next_offset);
   115 }
   134 }
       
   135 
   116 void java_lang_ref_Reference::set_next(oop ref, oop value) {
   136 void java_lang_ref_Reference::set_next(oop ref, oop value) {
   117   ref->obj_field_put(next_offset, value);
   137   ref->obj_field_put(next_offset, value);
   118 }
   138 }
       
   139 
   119 void java_lang_ref_Reference::set_next_raw(oop ref, oop value) {
   140 void java_lang_ref_Reference::set_next_raw(oop ref, oop value) {
   120   ref->obj_field_put_raw(next_offset, value);
   141   ref->obj_field_put_raw(next_offset, value);
   121 }
   142 }
       
   143 
   122 HeapWord* java_lang_ref_Reference::next_addr_raw(oop ref) {
   144 HeapWord* java_lang_ref_Reference::next_addr_raw(oop ref) {
   123   return ref->obj_field_addr_raw<HeapWord>(next_offset);
   145   return ref->obj_field_addr_raw<HeapWord>(next_offset);
   124 }
   146 }
       
   147 
   125 oop java_lang_ref_Reference::discovered(oop ref) {
   148 oop java_lang_ref_Reference::discovered(oop ref) {
   126   return ref->obj_field(discovered_offset);
   149   return ref->obj_field(discovered_offset);
   127 }
   150 }
       
   151 
   128 void java_lang_ref_Reference::set_discovered(oop ref, oop value) {
   152 void java_lang_ref_Reference::set_discovered(oop ref, oop value) {
   129   ref->obj_field_put(discovered_offset, value);
   153   ref->obj_field_put(discovered_offset, value);
   130 }
   154 }
       
   155 
   131 void java_lang_ref_Reference::set_discovered_raw(oop ref, oop value) {
   156 void java_lang_ref_Reference::set_discovered_raw(oop ref, oop value) {
   132   ref->obj_field_put_raw(discovered_offset, value);
   157   ref->obj_field_put_raw(discovered_offset, value);
   133 }
   158 }
       
   159 
   134 HeapWord* java_lang_ref_Reference::discovered_addr_raw(oop ref) {
   160 HeapWord* java_lang_ref_Reference::discovered_addr_raw(oop ref) {
   135   return ref->obj_field_addr_raw<HeapWord>(discovered_offset);
   161   return ref->obj_field_addr_raw<HeapWord>(discovered_offset);
   136 }
   162 }
       
   163 
   137 bool java_lang_ref_Reference::is_final(oop ref) {
   164 bool java_lang_ref_Reference::is_final(oop ref) {
   138   return InstanceKlass::cast(ref->klass())->reference_type() == REF_FINAL;
   165   return InstanceKlass::cast(ref->klass())->reference_type() == REF_FINAL;
   139 }
   166 }
       
   167 
   140 bool java_lang_ref_Reference::is_phantom(oop ref) {
   168 bool java_lang_ref_Reference::is_phantom(oop ref) {
   141   return InstanceKlass::cast(ref->klass())->reference_type() == REF_PHANTOM;
   169   return InstanceKlass::cast(ref->klass())->reference_type() == REF_PHANTOM;
   142 }
   170 }
   143 
   171 
   144 inline void java_lang_invoke_CallSite::set_target_volatile(oop site, oop target) {
   172 inline void java_lang_invoke_CallSite::set_target_volatile(oop site, oop target) {