comparison src/share/vm/classfile/javaClasses.hpp @ 17764:595c0f60d50d

8029075: String deduplication in G1 Summary: Implementation of JEP 192, http://openjdk.java.net/jeps/192 Reviewed-by: brutisso, tschatzl, coleenp
author pliden
date Tue, 18 Mar 2014 19:07:22 +0100
parents 63147986a428
children 9428a0b94204
comparison
equal deleted inserted replaced
17763:6e7e363c5a8f 17764:595c0f60d50d
1 /* 1 /*
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2014, 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.
59 59
60 static bool initialized; 60 static bool initialized;
61 61
62 static Handle basic_create(int length, TRAPS); 62 static Handle basic_create(int length, TRAPS);
63 63
64 static void set_value( oop string, typeArrayOop buffer) {
65 assert(initialized, "Must be initialized");
66 string->obj_field_put(value_offset, (oop)buffer);
67 }
68 static void set_offset(oop string, int offset) { 64 static void set_offset(oop string, int offset) {
69 assert(initialized, "Must be initialized"); 65 assert(initialized, "Must be initialized");
70 if (offset_offset > 0) { 66 if (offset_offset > 0) {
71 string->int_field_put(offset_offset, offset); 67 string->int_field_put(offset_offset, offset);
72 } 68 }
120 static int hash_offset_in_bytes() { 116 static int hash_offset_in_bytes() {
121 assert(initialized && (hash_offset > 0), "Must be initialized"); 117 assert(initialized && (hash_offset > 0), "Must be initialized");
122 return hash_offset; 118 return hash_offset;
123 } 119 }
124 120
121 static void set_value(oop string, typeArrayOop buffer) {
122 assert(initialized && (value_offset > 0), "Must be initialized");
123 string->obj_field_put(value_offset, (oop)buffer);
124 }
125 static void set_hash(oop string, unsigned int hash) {
126 assert(initialized && (hash_offset > 0), "Must be initialized");
127 string->int_field_put(hash_offset, hash);
128 }
129
125 // Accessors 130 // Accessors
126 static typeArrayOop value(oop java_string) { 131 static typeArrayOop value(oop java_string) {
127 assert(initialized && (value_offset > 0), "Must be initialized"); 132 assert(initialized && (value_offset > 0), "Must be initialized");
128 assert(is_instance(java_string), "must be java_string"); 133 assert(is_instance(java_string), "must be java_string");
129 return (typeArrayOop) java_string->obj_field(value_offset); 134 return (typeArrayOop) java_string->obj_field(value_offset);
135 }
136 static unsigned int hash(oop java_string) {
137 assert(initialized && (hash_offset > 0), "Must be initialized");
138 assert(is_instance(java_string), "must be java_string");
139 return java_string->int_field(hash_offset);
130 } 140 }
131 static int offset(oop java_string) { 141 static int offset(oop java_string) {
132 assert(initialized, "Must be initialized"); 142 assert(initialized, "Must be initialized");
133 assert(is_instance(java_string), "must be java_string"); 143 assert(is_instance(java_string), "must be java_string");
134 if (offset_offset > 0) { 144 if (offset_offset > 0) {