Small optimization
This commit is contained in:
@@ -38,7 +38,7 @@ class StringConcatGenerator(val mode: JvmStringConcat, val mv: InstructionAdapte
|
||||
value.encodedUTF8Size()
|
||||
}
|
||||
|
||||
fun fitEncodingLimit() = encodedUTF8Size <= STRING_UTF8_ENCODING_BYTE_LIMIT
|
||||
fun fitEncodingLimit() = if (value.isDefinitelyFitEncodingLimit()) true else encodedUTF8Size <= STRING_UTF8_ENCODING_BYTE_LIMIT
|
||||
}
|
||||
|
||||
private val items = arrayListOf<Item>()
|
||||
|
||||
@@ -682,11 +682,11 @@ fun linkedLabel(): Label = LabelNode().linkWithLabel().label
|
||||
// Strings in constant pool contain at most 2^16-1 = 65535 bytes.
|
||||
const val STRING_UTF8_ENCODING_BYTE_LIMIT: Int = 65535
|
||||
|
||||
fun splitStringConstant(value: String): List<String> {
|
||||
val length = value.length
|
||||
//Each CHAR could be encoded maximum in 3 bytes
|
||||
fun String.isDefinitelyFitEncodingLimit() = length <= STRING_UTF8_ENCODING_BYTE_LIMIT / 3
|
||||
|
||||
//Each CHAR could be encoded maximum in 3 bytes
|
||||
return if (length <= STRING_UTF8_ENCODING_BYTE_LIMIT / 3) {
|
||||
fun splitStringConstant(value: String): List<String> {
|
||||
return if (value.isDefinitelyFitEncodingLimit()) {
|
||||
listOf(value)
|
||||
} else {
|
||||
val result = arrayListOf<String>()
|
||||
@@ -696,6 +696,7 @@ fun splitStringConstant(value: String): List<String> {
|
||||
var accumulatedSize = 0
|
||||
var charOffsetInString = 0
|
||||
var lastStringBeginning = 0
|
||||
val length = value.length
|
||||
while (charOffsetInString < length) {
|
||||
val charCode = value[charOffsetInString].code
|
||||
val encodedCharSize = when {
|
||||
|
||||
Reference in New Issue
Block a user