@@ -148,18 +148,6 @@ private TruffleString(Object data, int offset, int length, int stride, Encoding
148
148
super (data , offset , length , stride , encoding , isCacheHead ? FLAG_CACHE_HEAD : 0 , codePointLength , codeRange , hashCode );
149
149
}
150
150
151
- private TruffleString (Object data , int offset , int length , int stride , Encoding encoding , int codePointLength , int codeRange , int hashCode , boolean isCacheHead , TruffleString cacheEntry ) {
152
- this (data , offset , length , stride , encoding , codePointLength , codeRange , hashCode , isCacheHead );
153
- if (cacheEntry != null ) {
154
- assert !cacheEntry .isCacheHead ();
155
- assert isCacheHead ();
156
- assert next == null ;
157
- TruffleString cacheHead = this ;
158
- cacheEntry .next = cacheHead ;
159
- cacheHead .next = cacheEntry ;
160
- }
161
- }
162
-
163
151
private static TruffleString create (Object data , int offset , int length , int stride , Encoding encoding , int codePointLength , int codeRange , int hashCode , boolean isCacheHead ) {
164
152
TruffleString string = new TruffleString (data , offset , length , stride , encoding , codePointLength , codeRange , hashCode , isCacheHead );
165
153
if (AbstractTruffleString .DEBUG_ALWAYS_CREATE_JAVA_STRING ) {
@@ -168,14 +156,6 @@ private static TruffleString create(Object data, int offset, int length, int str
168
156
return string ;
169
157
}
170
158
171
- private static TruffleString createWithCacheEntry (Object data , int offset , int length , int stride , Encoding encoding , int codePointLength , int codeRange , int hashCode , TruffleString cacheEntry ) {
172
- TruffleString string = new TruffleString (data , offset , length , stride , encoding , codePointLength , codeRange , hashCode , true , cacheEntry );
173
- if (AbstractTruffleString .DEBUG_ALWAYS_CREATE_JAVA_STRING ) {
174
- string .toJavaStringUncached ();
175
- }
176
- return string ;
177
- }
178
-
179
159
static TruffleString createFromByteArray (byte [] bytes , int length , int stride , Encoding encoding , int codePointLength , int codeRange ) {
180
160
return createFromByteArray (bytes , 0 , length , stride , encoding , codePointLength , codeRange , true );
181
161
}
@@ -216,14 +196,6 @@ static TruffleString createFromArray(Object bytes, int offset, int length, int s
216
196
return TruffleString .create (bytes , offset , length , stride , encoding , codePointLength , codeRange , hashCode , isCacheHead );
217
197
}
218
198
219
- static TruffleString createFromByteArrayWithCacheEntry (byte [] bytes , int offset , int length , int stride , Encoding encoding , int codePointLength , int codeRange , int hashCode ,
220
- TruffleString cacheEntry ) {
221
- assert offset >= 0 ;
222
- assert offset + ((long ) length << stride ) <= bytes .length ;
223
- assert attrsAreCorrect (bytes , encoding , offset , length , codePointLength , codeRange , stride );
224
- return TruffleString .createWithCacheEntry (bytes , offset , length , stride , encoding , codePointLength , codeRange , hashCode , cacheEntry );
225
- }
226
-
227
199
static TruffleString createConstant (byte [] bytes , int length , int stride , Encoding encoding , int codePointLength , int codeRange ) {
228
200
return createConstant (bytes , length , stride , encoding , codePointLength , codeRange , true );
229
201
}
@@ -250,12 +222,6 @@ static TruffleString createLazyConcat(TruffleString a, TruffleString b, Encoding
250
222
return TruffleString .create (new LazyConcat (a , b ), 0 , length , stride , encoding , a .codePointLength () + b .codePointLength (), codeRange , 0 , true );
251
223
}
252
224
253
- static TruffleString createWrapJavaString (String str , int codePointLength , int codeRange ) {
254
- int stride = TStringUnsafe .getJavaStringStride (str );
255
- int hash = TStringUnsafe .getJavaStringHashMasked (str );
256
- return TruffleString .create (str , 0 , str .length (), stride , Encoding .UTF_16 , codePointLength , codeRange , hash , false );
257
- }
258
-
259
225
private static boolean attrsAreCorrect (Object dataA , Encoding encoding , int offset , int length , int codePointLength , int codeRange , int stride ) {
260
226
CompilerAsserts .neverPartOfCompilation ();
261
227
int knownCodeRange = TSCodeRange .getUnknownCodeRangeForEncoding (encoding .id );
@@ -341,7 +307,7 @@ private static boolean hasDuplicateEncoding(TruffleString cacheHead, TruffleStri
341
307
}
342
308
343
309
private static boolean cacheEntryEquals (TruffleString a , TruffleString b ) {
344
- return b .encoding () == a .encoding () && a .isNative () == b .isNative () && a .stride () == b .stride () && (! isUTF16 ( a . encoding ()) || b . isJavaString () == a . isJavaString ()) ;
310
+ return b .encoding () == a .encoding () && a .isNative () == b .isNative () && a .stride () == b .stride ();
345
311
}
346
312
347
313
@ TruffleBoundary
@@ -353,7 +319,6 @@ private boolean cacheRingIsValid() {
353
319
CompilerAsserts .neverPartOfCompilation ();
354
320
TruffleString head = null ;
355
321
TruffleString cur = this ;
356
- boolean javaStringVisited = false ;
357
322
BitSet visitedManaged = new BitSet (Encoding .values ().length );
358
323
BitSet visitedNativeRegular = new BitSet (Encoding .values ().length );
359
324
BitSet visitedNativeCompact = new BitSet (Encoding .values ().length );
@@ -363,22 +328,17 @@ private boolean cacheRingIsValid() {
363
328
assert head == null : "multiple cache heads" ;
364
329
head = cur ;
365
330
}
366
- if (cur .isJavaString ()) {
367
- assert !javaStringVisited : "duplicate cached java string" ;
368
- javaStringVisited = true ;
331
+ Encoding encoding = Encoding .get (cur .encoding ());
332
+ if (cur .isManaged ()) {
333
+ assert !visitedManaged .get (cur .encoding ()) : "duplicate managed " + encoding ;
334
+ visitedManaged .set (cur .encoding ());
369
335
} else {
370
- Encoding encoding = Encoding .get (cur .encoding ());
371
- if (cur .isManaged ()) {
372
- assert !visitedManaged .get (cur .encoding ()) : "duplicate managed " + encoding ;
373
- visitedManaged .set (cur .encoding ());
336
+ if (cur .stride () == encoding .naturalStride ) {
337
+ assert !visitedNativeRegular .get (cur .encoding ()) : "duplicate native " + encoding ;
338
+ visitedNativeRegular .set (cur .encoding ());
374
339
} else {
375
- if (cur .stride () == encoding .naturalStride ) {
376
- assert !visitedNativeRegular .get (cur .encoding ()) : "duplicate native " + encoding ;
377
- visitedNativeRegular .set (cur .encoding ());
378
- } else {
379
- assert !visitedNativeCompact .get (cur .encoding ()) : "duplicate compact native " + encoding ;
380
- visitedNativeCompact .set (cur .encoding ());
381
- }
340
+ assert !visitedNativeCompact .get (cur .encoding ()) : "duplicate compact native " + encoding ;
341
+ visitedNativeCompact .set (cur .encoding ());
382
342
}
383
343
}
384
344
assert visited .add (cur ) : "not a ring structure" ;
@@ -2540,13 +2500,12 @@ TruffleString nativeImmutable(TruffleString a, Encoding encoding, boolean cacheR
2540
2500
CompilerAsserts .partialEvaluationConstant (cacheResult );
2541
2501
a .checkEncoding (encoding );
2542
2502
TruffleString cur = a .next ;
2543
- assert !a .isJavaString ();
2544
2503
if (cacheResult && cur != null ) {
2545
- while (cur != a && (cur .isNative () || cur . isJavaString () || !cur .isCompatibleToIntl (encoding ))) {
2504
+ while (cur != a && (cur .isNative () || !cur .isCompatibleToIntl (encoding ))) {
2546
2505
cur = cur .next ;
2547
2506
}
2548
2507
if (cacheHit .profile (this , cur != a )) {
2549
- assert cur .isCompatibleToIntl (encoding ) && cur .isManaged () && ! cur . isJavaString () ;
2508
+ assert cur .isCompatibleToIntl (encoding ) && cur .isManaged ();
2550
2509
return cur ;
2551
2510
}
2552
2511
}
@@ -6940,7 +6899,6 @@ public abstract static class ToJavaStringNode extends AbstractPublicNode {
6940
6899
@ Specialization
6941
6900
static String doUTF16 (TruffleString a ,
6942
6901
@ Bind Node node ,
6943
- @ Cached InlinedConditionProfile cacheHit ,
6944
6902
@ Cached @ Exclusive InlinedConditionProfile managedProfileA ,
6945
6903
@ Cached @ Exclusive InlinedConditionProfile nativeProfileA ,
6946
6904
@ Cached @ Shared TStringInternalNodes .GetCodePointLengthNode getCodePointLengthNode ,
@@ -6952,26 +6910,13 @@ static String doUTF16(TruffleString a,
6952
6910
return "" ;
6953
6911
}
6954
6912
TruffleString cur = a .next ;
6955
- if (cur != null ) {
6956
- while (cur != a && !cur .isJavaString ()) {
6957
- cur = cur .next ;
6958
- }
6959
- if (cacheHit .profile (node , cur .isJavaString ())) {
6960
- return (String ) cur .data ();
6961
- }
6962
- }
6963
- cur = a .next ;
6964
6913
if (cur != null ) {
6965
6914
while (cur != a && !cur .isCompatibleToIntl (Encoding .UTF_16 )) {
6966
6915
cur = cur .next ;
6967
6916
}
6968
6917
} else {
6969
6918
cur = a ;
6970
6919
}
6971
- if (cur .isJavaString ()) {
6972
- // java string was inserted in parallel
6973
- return (String ) cur .data ();
6974
- }
6975
6920
Encoding encodingA = Encoding .get (cur .encoding ());
6976
6921
final AbstractTruffleString utf16String ;
6977
6922
final byte [] utf16Array ;
@@ -7009,9 +6954,7 @@ static String doUTF16(TruffleString a,
7009
6954
assert transCoded .isManaged ();
7010
6955
utf16Offset = byteArrayBaseOffset () + transCoded .offset ();
7011
6956
}
7012
- String javaString = createJavaStringNode .execute (node , utf16String , utf16Array , utf16Offset );
7013
- a .cacheInsert (TruffleString .createWrapJavaString (javaString , utf16String .codePointLength (), utf16String .codeRange ()));
7014
- return javaString ;
6957
+ return createJavaStringNode .execute (node , utf16String , utf16Array , utf16Offset );
7015
6958
} finally {
7016
6959
Reference .reachabilityFence (dataCur );
7017
6960
}
@@ -7173,13 +7116,12 @@ static TruffleString asNative(TruffleString a, NativeAllocator allocator, Encodi
7173
7116
return a ;
7174
7117
}
7175
7118
TruffleString cur = a .next ;
7176
- assert !a .isJavaString ();
7177
7119
if (cacheResult && cur != null ) {
7178
7120
while (cur != a && (!cur .isNative () || !cur .isCompatibleToIntl (encoding ) || cur .stride () != (useCompaction ? strideA : encoding .naturalStride ))) {
7179
7121
cur = cur .next ;
7180
7122
}
7181
7123
if (cacheHit .profile (node , cur != a )) {
7182
- assert cur .isCompatibleToIntl (encoding ) && cur .isNative () && ! cur . isJavaString () && cur .stride () == (useCompaction ? strideA : encoding .naturalStride );
7124
+ assert cur .isCompatibleToIntl (encoding ) && cur .isNative () && cur .stride () == (useCompaction ? strideA : encoding .naturalStride );
7183
7125
return cur ;
7184
7126
}
7185
7127
}
@@ -7426,20 +7368,17 @@ static TruffleString immutable(Node node, TruffleString a, Encoding targetEncodi
7426
7368
}
7427
7369
final boolean mustCompact = a .stride () > targetEncoding .naturalStride ;
7428
7370
if (noOpProfile .profile (node , isCompatible && !mustCompact )) {
7429
- assert !a .isJavaString ();
7430
7371
return a ;
7431
7372
}
7432
7373
if (a .isEmpty ()) {
7433
7374
return targetEncoding .getEmpty ();
7434
7375
}
7435
7376
TruffleString cur = a .next ;
7436
- assert !a .isJavaString ();
7437
7377
if (cur != null ) {
7438
- while (cur != a && cur .encoding () != targetEncoding .id || ( isUTF16 ( targetEncoding ) && cur . isJavaString ()) ) {
7378
+ while (cur != a && cur .encoding () != targetEncoding .id ) {
7439
7379
cur = cur .next ;
7440
7380
}
7441
7381
if (cacheHit .profile (node , cur .encoding () == targetEncoding .id )) {
7442
- assert !cur .isJavaString ();
7443
7382
return cur ;
7444
7383
}
7445
7384
}
@@ -7567,7 +7506,6 @@ public abstract static class ForceEncodingNode extends AbstractPublicNode {
7567
7506
7568
7507
@ Specialization (guards = "isCompatibleAndNotCompacted(a, expectedEncoding, targetEncoding)" )
7569
7508
static TruffleString compatibleImmutable (TruffleString a , @ SuppressWarnings ("unused" ) Encoding expectedEncoding , @ SuppressWarnings ("unused" ) Encoding targetEncoding ) {
7570
- assert !a .isJavaString ();
7571
7509
return a ;
7572
7510
}
7573
7511
0 commit comments