Skip to content

Commit 200b6e0

Browse files
tomballcopybara-github
authored andcommitted
Updates floating point cast functions to better reflect JLS 5.3.1.
PiperOrigin-RevId: 733402499
1 parent cb66269 commit 200b6e0

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

jre_emul/Classes/J2ObjC_source.h

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -195,12 +195,6 @@ FOUNDATION_EXPORT NSString *JreEnumConstantName(IOSClass *enumClass, jint ordina
195195
*/
196196
__attribute__((always_inline))
197197
__attribute__((no_sanitize("float-cast-overflow")))
198-
inline jshort JreFpToShort(jdouble d) {
199-
jshort tmp = (jshort)d;
200-
return tmp == (jshort)0x8000 ? (d != d ? 0 : (d >= 0 ? 0x7FFF : tmp)) : tmp;
201-
}
202-
__attribute__((always_inline))
203-
__attribute__((no_sanitize("float-cast-overflow")))
204198
inline jint JreFpToInt(jdouble d) {
205199
jint tmp = (jint)d;
206200
return tmp == (jint)0x80000000 ? (d != d ? 0 : (d >= 0 ? 0x7FFFFFFF : tmp)) : tmp;
@@ -219,10 +213,13 @@ inline jchar JreFpToChar(jdouble d) {
219213
return tmp > 0xFFFF || (tmp == 0 && d > 0) ? 0xFFFF : (jchar)tmp;
220214
}
221215
__attribute__((always_inline))
216+
inline jshort JreFpToShort(jdouble d) {
217+
return (jshort)JreFpToInt(d);
218+
}
219+
__attribute__((always_inline))
222220
__attribute__((no_sanitize("float-cast-overflow")))
223221
inline jbyte JreFpToByte(jdouble d) {
224-
unsigned tmp = (unsigned)d;
225-
return tmp > 0xFF || (tmp == 0 && d > 0) ? (jbyte)0xFF : (jbyte)tmp;
222+
return (jbyte)JreFpToInt(d);
226223
}
227224

228225
#define ARITHMETIC_OPERATOR_DEFN(NAME, TYPE, OPNAME, OP, PNAME, PTYPE, CAST) \

0 commit comments

Comments
 (0)