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