41 using namespace cacao;
54 size_t hash()
const {
return _hash; }
55 size_t size()
const {
return _str.size(); }
64 _str = t.get_string();
69 return hash() == t.hash()
71 && std::equal(begin(), end(), t.begin());
74 const uint16_t *
begin()
const {
return _str.begin(); }
75 const uint16_t *
end()
const {
return _str.end(); }
98 assert(!is_initialized());
126 template<
typename Iterator>
135 if (h == NULL)
return NULL;
155 if (h == NULL)
return NULL;
236 size_t hash()
const {
return _hash; }
237 size_t size()
const {
return _string.utf16_size(); }
246 bool b =
utf8::decode(_string.begin(), _string.end(),
const_cast<uint16_t*
>(jstr.
begin()));
282 #ifdef WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH
317 size_t hash()
const {
return _hash; }
318 size_t size()
const {
return _string.size(); }
320 const uint16_t *
begin()
const {
return _string.begin(); }
321 const uint16_t *
end()
const {
return _string.end(); }
327 std::copy(begin(), end(), const_cast<uint16_t*>(jstr.
begin()));
370 const uint16_t *ptr = begin();
372 return ptr ? ptr +
size() : NULL;
414 if (
str == NULL)
return MNEW(
char, 1);
418 const uint16_t *src = begin();
419 const uint16_t *end = src + sz;
421 char *buf =
MNEW(
char, sz + 1);
424 while (src != end) *dst++ = *src++;
438 if (
str == NULL)
return utf8::empty;
451 if (
str == NULL)
return utf8::empty;
468 const uint16_t* cs = begin();
471 for (
size_t i = 0;
i < sz;
i++) {
480 const uint16_t* cs = begin();
483 for (
size_t i = 0;
i < sz;
i++) {
486 c = (c >= 32 && (
unsigned char)c <= 127) ? c :
'?';
494 return os <<
"<null string>";
501 return os <<
"<uninitialized string>";
505 for (
const u2 *end = js.
end(); cs != end; ++cs) {
const uint16_t * end() const
#define STATISTICS(x)
Wrapper for statistics only code.
uint16_t * get_raw_data_ptr()
JavaString get_string() const
const uint16_t * end() const
Utf8String to_utf8() const
size_t utf16_size() const
virtual java_handle_array_t * get_handle() const
JavaString intern() const
size_t compute_hash(const uint16_t *cs, size_t)
static JavaString from_utf8(Utf8String)
byte_iterator end() const
static InternTable< InternedJavaString > intern_table
java_handle_chararray_t * get_value() const
typedef void(JNICALL *jvmtiEventSingleStep)(jvmtiEnv *jvmti_env
static Utf8String from_utf16_dot_to_slash(const uint16_t *, size_t)
void set_count(int32_t value)
bool operator==(const T &t) const
static classinfo * get_arrayclass_by_type(int type)
Returns the primitive array-class of the given type.
static void set_fields(java_handle_t *str, java_handle_chararray_t *value)
JavaString get_string() const
static JavaString from_array(java_handle_t *array, int32_t count, int32_t offset)
creates a new java/lang/String with a given char[] WARNING: the char[] is not copied or validated...
Used to lazily construct a java.lang.String literal.
JNIEnv jthread jobject jclass jlong size
#define TRACESUBSYSTEMINITIALIZATION(text)
java_handle_t * builtin_new(classinfo *c)
const uint16_t * begin() const
This file contains the statistics framework.
void exceptions_throw_nullpointerexception(void)
Simple stream class for formatted output.
void set_occupied(const T &t)
static JavaString allocate_on_system_heap(size_t size)
jsize get_string_offset(const java_lang_String &s)
void fprint(FILE *) const
OStream & operator<<(OStream &OS, const std::string &t)
#define EXPENSIVE_ASSERT(EXPR)
An assertion that performs computations too expensive even for a normal debug build.
Utf8String::utf16_iterator begin() const
Used to lazily copy a java.lang.String into the intern table.
static Utf8String from_utf16(const uint16_t *, size_t)
static JavaString from_utf8_slash_to_dot(Utf8String)
Utf8String::utf16_iterator end() const
classinfo * class_java_lang_String
long num_codepoints(const char *, size_t)
byte_iterator begin() const
LiteralBuilder(Utf8String u)
GNU Classpath java/lang/String.
void fprint_printable_ascii(FILE *) const
void set_value(java_handle_chararray_t *value)
static JavaString from_utf8_dot_to_slash(Utf8String)
void set_offset(int32_t value)
JavaString get_string() const
used by set_occupied
LazyStringCopy(JavaString str)
bool decode(Utf8Iterator begin, Utf8Iterator end, uint16_t *dst)
jsize get_string_count(const java_lang_String &s)
const uint16_t * begin() const
static JavaString literal(Utf8String)
#define STAT_DECLARE_VAR(type, var, init)
Declare an external statistics variable.
static bool is_initialized()
InternedJavaString()
Interface to HashTable.
size_t num_bytes(const uint16_t *, size_t)
static java_handle_t * makeJavaString(Iterator src, Iterator end, size_t dst_size)
static JavaString from_utf16(const u2 *, size_t)
creates a new java/lang/String from a utf16-text
Utf8String to_utf8_dot_to_slash() const