Commit 8d53e32
Add BigInt Support to Java Turbo Module (#56018)
Summary:
Pull Request resolved: #56018
This diff adds a getBigInt method to the Java/Kotlin sample Turbo Module,
demonstrating how to use JavaScript BigInt with BigInt bridging on Android.
Changes:
- Updated NativeSampleTurboModule.js with getBigInt method declaration
- Added getBigInt Java method in NativeSampleTurboModuleSpec.java
- Implemented getBigInt in SampleTurboModule.kt using Kotlin's Long type
- Added getBigInt test case in SampleTurboModuleExample.js
On the C++ side, `facebook::react::BigInt` is used as the bridging type.
The Java/JNI layer maps this to Java's `long` type (64-bit signed integer).
JavaScript BigInt values are automatically bridged to/from Java long via the
BigIntKind return type in the JNI bindings.
## Conversion Table
| Type | Bits | Signed | Min | Max |
| --- | --- | --- | --- | --- |
| Java long | 64 | ✅ | -9.2 × 10¹⁸ | 9.2 × 10¹⁸ |
| C++ int64_t | 64 | ✅ | -9.2 × 10¹⁸ | 9.2 × 10¹⁸ |
| C++ uint64_t | 64 | ❌ | 0 | 1.8 × 10¹⁹ |
| Java BigInteger | Arbitrary | ✅ | Unbounded | Unbounded |
RESULT -> Any uint64_t value greater than 9,223,372,036,854,775,807 (2⁶³ - 1) cannot be correctly represented in a Java long
## Example:
```java
// Java spec (hand-written, codegen not yet supported for BigInt)
DoNotStrip
public BigInteger getBigInt(BigInteger arg) { return 0; }
```
```kotlin
// Kotlin implementation
override fun getBigInt(arg: BigInteger): BigInteger = arg
```
Reviewed By: sammy-SC
Differential Revision: D952322721 parent e0d94fd commit 8d53e32
6 files changed
Lines changed: 126 additions & 20 deletions
File tree
- packages
- react-native-codegen/src/generators/modules
- react-native
- ReactCommon/react/nativemodule
- core/platform/android/ReactCommon
- samples/platform/android
- src/private/specs_DEPRECATED/modules
- rn-tester/js/examples/TurboModule
Lines changed: 5 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
271 | 271 | | |
272 | 272 | | |
273 | 273 | | |
274 | | - | |
275 | | - | |
276 | | - | |
277 | | - | |
278 | | - | |
| 274 | + | |
| 275 | + | |
279 | 276 | | |
280 | 277 | | |
281 | 278 | | |
| |||
371 | 368 | | |
372 | 369 | | |
373 | 370 | | |
374 | | - | |
375 | | - | |
376 | | - | |
377 | | - | |
378 | | - | |
| 371 | + | |
| 372 | + | |
379 | 373 | | |
380 | 374 | | |
381 | 375 | | |
| |||
459 | 453 | | |
460 | 454 | | |
461 | 455 | | |
462 | | - | |
| 456 | + | |
463 | 457 | | |
464 | 458 | | |
465 | 459 | | |
| |||
Lines changed: 2 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
299 | 299 | | |
300 | 300 | | |
301 | 301 | | |
302 | | - | |
303 | | - | |
304 | | - | |
| 302 | + | |
305 | 303 | | |
306 | 304 | | |
307 | 305 | | |
| |||
387 | 385 | | |
388 | 386 | | |
389 | 387 | | |
390 | | - | |
391 | | - | |
392 | | - | |
| 388 | + | |
393 | 389 | | |
394 | 390 | | |
395 | 391 | | |
| |||
Lines changed: 104 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
8 | 11 | | |
9 | 12 | | |
10 | 13 | | |
| |||
169 | 172 | | |
170 | 173 | | |
171 | 174 | | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
172 | 222 | | |
173 | 223 | | |
174 | 224 | | |
| |||
322 | 372 | | |
323 | 373 | | |
324 | 374 | | |
325 | | - | |
| 375 | + | |
326 | 376 | | |
327 | 377 | | |
328 | 378 | | |
| |||
397 | 447 | | |
398 | 448 | | |
399 | 449 | | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
400 | 467 | | |
401 | 468 | | |
402 | 469 | | |
| |||
963 | 1030 | | |
964 | 1031 | | |
965 | 1032 | | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
| 1067 | + | |
| 1068 | + | |
966 | 1069 | | |
967 | 1070 | | |
968 | 1071 | | |
| |||
packages/react-native/ReactCommon/react/nativemodule/samples/platform/android/SampleTurboModule.kt
Lines changed: 7 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | 33 | | |
| |||
225 | 226 | | |
226 | 227 | | |
227 | 228 | | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
228 | 235 | | |
229 | 236 | | |
230 | 237 | | |
| |||
Lines changed: 2 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
| 46 | + | |
47 | 47 | | |
| 48 | + | |
48 | 49 | | |
49 | 50 | | |
50 | 51 | | |
| |||
Lines changed: 6 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| 44 | + | |
44 | 45 | | |
45 | 46 | | |
46 | 47 | | |
| |||
94 | 95 | | |
95 | 96 | | |
96 | 97 | | |
| 98 | + | |
| 99 | + | |
97 | 100 | | |
98 | 101 | | |
99 | 102 | | |
| |||
195 | 198 | | |
196 | 199 | | |
197 | 200 | | |
198 | | - | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
199 | 204 | | |
200 | 205 | | |
201 | 206 | | |
| |||
0 commit comments