src/share/vm/prims/unsafe.cpp

changeset 9327
f96fcd9e1e1b
parent 9318
576949777967
child 9448
73d689add964
child 9858
b985cbb00e68
equal deleted inserted replaced
9324:efdbe9b904ad 9327:f96fcd9e1e1b
1348 1348
1349 #define ADR "J" 1349 #define ADR "J"
1350 1350
1351 #define LANG "Ljava/lang/" 1351 #define LANG "Ljava/lang/"
1352 1352
1353 #define OBJ LANG"Object;" 1353 #define OBJ LANG "Object;"
1354 #define CLS LANG"Class;" 1354 #define CLS LANG "Class;"
1355 #define CTR LANG"reflect/Constructor;" 1355 #define CTR LANG "reflect/Constructor;"
1356 #define FLD LANG"reflect/Field;" 1356 #define FLD LANG "reflect/Field;"
1357 #define MTH LANG"reflect/Method;" 1357 #define MTH LANG "reflect/Method;"
1358 #define THR LANG"Throwable;" 1358 #define THR LANG "Throwable;"
1359 1359
1360 #define DC0_Args LANG"String;[BII" 1360 #define DC0_Args LANG "String;[BII"
1361 #define DC_Args DC0_Args LANG"ClassLoader;" "Ljava/security/ProtectionDomain;" 1361 #define DC_Args DC0_Args LANG "ClassLoader;" "Ljava/security/ProtectionDomain;"
1362 1362
1363 #define CC (char*) /*cast a literal from (const char*)*/ 1363 #define CC (char*) /*cast a literal from (const char*)*/
1364 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &f) 1364 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &f)
1365 1365
1366 // define deprecated accessors for compabitility with 1.4.0 1366 // define deprecated accessors for compabitility with 1.4.0
1367 #define DECLARE_GETSETOOP_140(Boolean, Z) \ 1367 #define DECLARE_GETSETOOP_140(Boolean, Z) \
1368 {CC"get"#Boolean, CC"("OBJ"I)"#Z, FN_PTR(Unsafe_Get##Boolean##140)}, \ 1368 {CC "get" #Boolean, CC "(" OBJ "I)" #Z, FN_PTR(Unsafe_Get##Boolean##140)}, \
1369 {CC"put"#Boolean, CC"("OBJ"I"#Z")V", FN_PTR(Unsafe_Set##Boolean##140)} 1369 {CC "put" #Boolean, CC "(" OBJ "I" #Z ")V", FN_PTR(Unsafe_Set##Boolean##140)}
1370 1370
1371 // Note: In 1.4.1, getObject and kin take both int and long offsets. 1371 // Note: In 1.4.1, getObject and kin take both int and long offsets.
1372 #define DECLARE_GETSETOOP_141(Boolean, Z) \ 1372 #define DECLARE_GETSETOOP_141(Boolean, Z) \
1373 {CC"get"#Boolean, CC"("OBJ"J)"#Z, FN_PTR(Unsafe_Get##Boolean)}, \ 1373 {CC "get" #Boolean, CC "(" OBJ "J)" #Z, FN_PTR(Unsafe_Get##Boolean)}, \
1374 {CC"put"#Boolean, CC"("OBJ"J"#Z")V", FN_PTR(Unsafe_Set##Boolean)} 1374 {CC "put" #Boolean, CC "(" OBJ "J" #Z ")V", FN_PTR(Unsafe_Set##Boolean)}
1375 1375
1376 // Note: In 1.5.0, there are volatile versions too 1376 // Note: In 1.5.0, there are volatile versions too
1377 #define DECLARE_GETSETOOP(Boolean, Z) \ 1377 #define DECLARE_GETSETOOP(Boolean, Z) \
1378 {CC"get"#Boolean, CC"("OBJ"J)"#Z, FN_PTR(Unsafe_Get##Boolean)}, \ 1378 {CC "get" #Boolean, CC "(" OBJ "J)" #Z, FN_PTR(Unsafe_Get##Boolean)}, \
1379 {CC"put"#Boolean, CC"("OBJ"J"#Z")V", FN_PTR(Unsafe_Set##Boolean)}, \ 1379 {CC "put" #Boolean, CC "(" OBJ "J" #Z ")V", FN_PTR(Unsafe_Set##Boolean)}, \
1380 {CC"get"#Boolean"Volatile", CC"("OBJ"J)"#Z, FN_PTR(Unsafe_Get##Boolean##Volatile)}, \ 1380 {CC "get" #Boolean "Volatile", CC "(" OBJ "J)" #Z, FN_PTR(Unsafe_Get##Boolean##Volatile)}, \
1381 {CC"put"#Boolean"Volatile", CC"("OBJ"J"#Z")V", FN_PTR(Unsafe_Set##Boolean##Volatile)} 1381 {CC "put" #Boolean "Volatile", CC "(" OBJ "J" #Z ")V", FN_PTR(Unsafe_Set##Boolean##Volatile)}
1382 1382
1383 1383
1384 #define DECLARE_GETSETNATIVE(Byte, B) \ 1384 #define DECLARE_GETSETNATIVE(Byte, B) \
1385 {CC"get"#Byte, CC"("ADR")"#B, FN_PTR(Unsafe_GetNative##Byte)}, \ 1385 {CC "get" #Byte, CC "(" ADR ")" #B, FN_PTR(Unsafe_GetNative##Byte)}, \
1386 {CC"put"#Byte, CC"("ADR#B")V", FN_PTR(Unsafe_SetNative##Byte)} 1386 {CC "put" #Byte, CC "(" ADR#B ")V", FN_PTR(Unsafe_SetNative##Byte)}
1387 1387
1388 1388
1389 1389
1390 // These are the methods for 1.4.0 1390 // These are the methods for 1.4.0
1391 static JNINativeMethod methods_140[] = { 1391 static JNINativeMethod methods_140[] = {
1392 {CC"getObject", CC"("OBJ"I)"OBJ"", FN_PTR(Unsafe_GetObject140)}, 1392 {CC "getObject", CC "(" OBJ "I)" OBJ "", FN_PTR(Unsafe_GetObject140)},
1393 {CC"putObject", CC"("OBJ"I"OBJ")V", FN_PTR(Unsafe_SetObject140)}, 1393 {CC "putObject", CC "(" OBJ "I" OBJ ")V", FN_PTR(Unsafe_SetObject140)},
1394 1394
1395 DECLARE_GETSETOOP_140(Boolean, Z), 1395 DECLARE_GETSETOOP_140(Boolean, Z),
1396 DECLARE_GETSETOOP_140(Byte, B), 1396 DECLARE_GETSETOOP_140(Byte, B),
1397 DECLARE_GETSETOOP_140(Short, S), 1397 DECLARE_GETSETOOP_140(Short, S),
1398 DECLARE_GETSETOOP_140(Char, C), 1398 DECLARE_GETSETOOP_140(Char, C),
1407 DECLARE_GETSETNATIVE(Int, I), 1407 DECLARE_GETSETNATIVE(Int, I),
1408 DECLARE_GETSETNATIVE(Long, J), 1408 DECLARE_GETSETNATIVE(Long, J),
1409 DECLARE_GETSETNATIVE(Float, F), 1409 DECLARE_GETSETNATIVE(Float, F),
1410 DECLARE_GETSETNATIVE(Double, D), 1410 DECLARE_GETSETNATIVE(Double, D),
1411 1411
1412 {CC"getAddress", CC"("ADR")"ADR, FN_PTR(Unsafe_GetNativeAddress)}, 1412 {CC "getAddress", CC "(" ADR ")" ADR, FN_PTR(Unsafe_GetNativeAddress)},
1413 {CC"putAddress", CC"("ADR""ADR")V", FN_PTR(Unsafe_SetNativeAddress)}, 1413 {CC "putAddress", CC "(" ADR "" ADR ")V", FN_PTR(Unsafe_SetNativeAddress)},
1414 1414
1415 {CC"allocateMemory", CC"(J)"ADR, FN_PTR(Unsafe_AllocateMemory)}, 1415 {CC "allocateMemory", CC "(J)" ADR, FN_PTR(Unsafe_AllocateMemory)},
1416 {CC"reallocateMemory", CC"("ADR"J)"ADR, FN_PTR(Unsafe_ReallocateMemory)}, 1416 {CC "reallocateMemory", CC "(" ADR "J)" ADR, FN_PTR(Unsafe_ReallocateMemory)},
1417 {CC"freeMemory", CC"("ADR")V", FN_PTR(Unsafe_FreeMemory)}, 1417 {CC "freeMemory", CC "(" ADR ")V", FN_PTR(Unsafe_FreeMemory)},
1418 1418
1419 {CC"fieldOffset", CC"("FLD")I", FN_PTR(Unsafe_FieldOffset)}, 1419 {CC "fieldOffset", CC "(" FLD ")I", FN_PTR(Unsafe_FieldOffset)},
1420 {CC"staticFieldBase", CC"("CLS")"OBJ, FN_PTR(Unsafe_StaticFieldBaseFromClass)}, 1420 {CC "staticFieldBase", CC "(" CLS ")" OBJ, FN_PTR(Unsafe_StaticFieldBaseFromClass)},
1421 {CC"ensureClassInitialized",CC"("CLS")V", FN_PTR(Unsafe_EnsureClassInitialized)}, 1421 {CC "ensureClassInitialized",CC "(" CLS ")V", FN_PTR(Unsafe_EnsureClassInitialized)},
1422 {CC"arrayBaseOffset", CC"("CLS")I", FN_PTR(Unsafe_ArrayBaseOffset)}, 1422 {CC "arrayBaseOffset", CC "(" CLS ")I", FN_PTR(Unsafe_ArrayBaseOffset)},
1423 {CC"arrayIndexScale", CC"("CLS")I", FN_PTR(Unsafe_ArrayIndexScale)}, 1423 {CC "arrayIndexScale", CC "(" CLS ")I", FN_PTR(Unsafe_ArrayIndexScale)},
1424 {CC"addressSize", CC"()I", FN_PTR(Unsafe_AddressSize)}, 1424 {CC "addressSize", CC "()I", FN_PTR(Unsafe_AddressSize)},
1425 {CC"pageSize", CC"()I", FN_PTR(Unsafe_PageSize)}, 1425 {CC "pageSize", CC "()I", FN_PTR(Unsafe_PageSize)},
1426 1426
1427 {CC"defineClass", CC"("DC0_Args")"CLS, FN_PTR(Unsafe_DefineClass0)}, 1427 {CC "defineClass", CC "(" DC0_Args ")" CLS, FN_PTR(Unsafe_DefineClass0)},
1428 {CC"defineClass", CC"("DC_Args")"CLS, FN_PTR(Unsafe_DefineClass)}, 1428 {CC "defineClass", CC "(" DC_Args ")" CLS, FN_PTR(Unsafe_DefineClass)},
1429 {CC"allocateInstance", CC"("CLS")"OBJ, FN_PTR(Unsafe_AllocateInstance)}, 1429 {CC "allocateInstance", CC "(" CLS ")" OBJ, FN_PTR(Unsafe_AllocateInstance)},
1430 {CC"monitorEnter", CC"("OBJ")V", FN_PTR(Unsafe_MonitorEnter)}, 1430 {CC "monitorEnter", CC "(" OBJ ")V", FN_PTR(Unsafe_MonitorEnter)},
1431 {CC"monitorExit", CC"("OBJ")V", FN_PTR(Unsafe_MonitorExit)}, 1431 {CC "monitorExit", CC "(" OBJ ")V", FN_PTR(Unsafe_MonitorExit)},
1432 {CC"throwException", CC"("THR")V", FN_PTR(Unsafe_ThrowException)} 1432 {CC "throwException", CC "(" THR ")V", FN_PTR(Unsafe_ThrowException)}
1433 }; 1433 };
1434 1434
1435 // These are the methods prior to the JSR 166 changes in 1.5.0 1435 // These are the methods prior to the JSR 166 changes in 1.5.0
1436 static JNINativeMethod methods_141[] = { 1436 static JNINativeMethod methods_141[] = {
1437 {CC"getObject", CC"("OBJ"J)"OBJ"", FN_PTR(Unsafe_GetObject)}, 1437 {CC "getObject", CC "(" OBJ "J)" OBJ "", FN_PTR(Unsafe_GetObject)},
1438 {CC"putObject", CC"("OBJ"J"OBJ")V", FN_PTR(Unsafe_SetObject)}, 1438 {CC "putObject", CC "(" OBJ "J" OBJ ")V", FN_PTR(Unsafe_SetObject)},
1439 1439
1440 DECLARE_GETSETOOP_141(Boolean, Z), 1440 DECLARE_GETSETOOP_141(Boolean, Z),
1441 DECLARE_GETSETOOP_141(Byte, B), 1441 DECLARE_GETSETOOP_141(Byte, B),
1442 DECLARE_GETSETOOP_141(Short, S), 1442 DECLARE_GETSETOOP_141(Short, S),
1443 DECLARE_GETSETOOP_141(Char, C), 1443 DECLARE_GETSETOOP_141(Char, C),
1452 DECLARE_GETSETNATIVE(Int, I), 1452 DECLARE_GETSETNATIVE(Int, I),
1453 DECLARE_GETSETNATIVE(Long, J), 1453 DECLARE_GETSETNATIVE(Long, J),
1454 DECLARE_GETSETNATIVE(Float, F), 1454 DECLARE_GETSETNATIVE(Float, F),
1455 DECLARE_GETSETNATIVE(Double, D), 1455 DECLARE_GETSETNATIVE(Double, D),
1456 1456
1457 {CC"getAddress", CC"("ADR")"ADR, FN_PTR(Unsafe_GetNativeAddress)}, 1457 {CC "getAddress", CC "(" ADR ")" ADR, FN_PTR(Unsafe_GetNativeAddress)},
1458 {CC"putAddress", CC"("ADR""ADR")V", FN_PTR(Unsafe_SetNativeAddress)}, 1458 {CC "putAddress", CC "(" ADR "" ADR ")V", FN_PTR(Unsafe_SetNativeAddress)},
1459 1459
1460 {CC"allocateMemory", CC"(J)"ADR, FN_PTR(Unsafe_AllocateMemory)}, 1460 {CC "allocateMemory", CC "(J)" ADR, FN_PTR(Unsafe_AllocateMemory)},
1461 {CC"reallocateMemory", CC"("ADR"J)"ADR, FN_PTR(Unsafe_ReallocateMemory)}, 1461 {CC "reallocateMemory", CC "(" ADR "J)" ADR, FN_PTR(Unsafe_ReallocateMemory)},
1462 {CC"freeMemory", CC"("ADR")V", FN_PTR(Unsafe_FreeMemory)}, 1462 {CC "freeMemory", CC "(" ADR ")V", FN_PTR(Unsafe_FreeMemory)},
1463 1463
1464 {CC"objectFieldOffset", CC"("FLD")J", FN_PTR(Unsafe_ObjectFieldOffset)}, 1464 {CC "objectFieldOffset", CC "(" FLD ")J", FN_PTR(Unsafe_ObjectFieldOffset)},
1465 {CC"staticFieldOffset", CC"("FLD")J", FN_PTR(Unsafe_StaticFieldOffset)}, 1465 {CC "staticFieldOffset", CC "(" FLD ")J", FN_PTR(Unsafe_StaticFieldOffset)},
1466 {CC"staticFieldBase", CC"("FLD")"OBJ, FN_PTR(Unsafe_StaticFieldBaseFromField)}, 1466 {CC "staticFieldBase", CC "(" FLD ")" OBJ, FN_PTR(Unsafe_StaticFieldBaseFromField)},
1467 {CC"ensureClassInitialized",CC"("CLS")V", FN_PTR(Unsafe_EnsureClassInitialized)}, 1467 {CC "ensureClassInitialized",CC "(" CLS ")V", FN_PTR(Unsafe_EnsureClassInitialized)},
1468 {CC"arrayBaseOffset", CC"("CLS")I", FN_PTR(Unsafe_ArrayBaseOffset)}, 1468 {CC "arrayBaseOffset", CC "(" CLS ")I", FN_PTR(Unsafe_ArrayBaseOffset)},
1469 {CC"arrayIndexScale", CC"("CLS")I", FN_PTR(Unsafe_ArrayIndexScale)}, 1469 {CC "arrayIndexScale", CC "(" CLS ")I", FN_PTR(Unsafe_ArrayIndexScale)},
1470 {CC"addressSize", CC"()I", FN_PTR(Unsafe_AddressSize)}, 1470 {CC "addressSize", CC "()I", FN_PTR(Unsafe_AddressSize)},
1471 {CC"pageSize", CC"()I", FN_PTR(Unsafe_PageSize)}, 1471 {CC "pageSize", CC "()I", FN_PTR(Unsafe_PageSize)},
1472 1472
1473 {CC"defineClass", CC"("DC0_Args")"CLS, FN_PTR(Unsafe_DefineClass0)}, 1473 {CC "defineClass", CC "(" DC0_Args ")" CLS, FN_PTR(Unsafe_DefineClass0)},
1474 {CC"defineClass", CC"("DC_Args")"CLS, FN_PTR(Unsafe_DefineClass)}, 1474 {CC "defineClass", CC "(" DC_Args ")" CLS, FN_PTR(Unsafe_DefineClass)},
1475 {CC"allocateInstance", CC"("CLS")"OBJ, FN_PTR(Unsafe_AllocateInstance)}, 1475 {CC "allocateInstance", CC "(" CLS ")" OBJ, FN_PTR(Unsafe_AllocateInstance)},
1476 {CC"monitorEnter", CC"("OBJ")V", FN_PTR(Unsafe_MonitorEnter)}, 1476 {CC "monitorEnter", CC "(" OBJ ")V", FN_PTR(Unsafe_MonitorEnter)},
1477 {CC"monitorExit", CC"("OBJ")V", FN_PTR(Unsafe_MonitorExit)}, 1477 {CC "monitorExit", CC "(" OBJ ")V", FN_PTR(Unsafe_MonitorExit)},
1478 {CC"throwException", CC"("THR")V", FN_PTR(Unsafe_ThrowException)} 1478 {CC "throwException", CC "(" THR ")V", FN_PTR(Unsafe_ThrowException)}
1479 1479
1480 }; 1480 };
1481 1481
1482 // These are the methods prior to the JSR 166 changes in 1.6.0 1482 // These are the methods prior to the JSR 166 changes in 1.6.0
1483 static JNINativeMethod methods_15[] = { 1483 static JNINativeMethod methods_15[] = {
1484 {CC"getObject", CC"("OBJ"J)"OBJ"", FN_PTR(Unsafe_GetObject)}, 1484 {CC "getObject", CC "(" OBJ "J)" OBJ "", FN_PTR(Unsafe_GetObject)},
1485 {CC"putObject", CC"("OBJ"J"OBJ")V", FN_PTR(Unsafe_SetObject)}, 1485 {CC "putObject", CC "(" OBJ "J" OBJ ")V", FN_PTR(Unsafe_SetObject)},
1486 {CC"getObjectVolatile",CC"("OBJ"J)"OBJ"", FN_PTR(Unsafe_GetObjectVolatile)}, 1486 {CC "getObjectVolatile",CC "(" OBJ "J)" OBJ "", FN_PTR(Unsafe_GetObjectVolatile)},
1487 {CC"putObjectVolatile",CC"("OBJ"J"OBJ")V", FN_PTR(Unsafe_SetObjectVolatile)}, 1487 {CC "putObjectVolatile",CC "(" OBJ "J" OBJ ")V", FN_PTR(Unsafe_SetObjectVolatile)},
1488 1488
1489 1489
1490 DECLARE_GETSETOOP(Boolean, Z), 1490 DECLARE_GETSETOOP(Boolean, Z),
1491 DECLARE_GETSETOOP(Byte, B), 1491 DECLARE_GETSETOOP(Byte, B),
1492 DECLARE_GETSETOOP(Short, S), 1492 DECLARE_GETSETOOP(Short, S),
1502 DECLARE_GETSETNATIVE(Int, I), 1502 DECLARE_GETSETNATIVE(Int, I),
1503 DECLARE_GETSETNATIVE(Long, J), 1503 DECLARE_GETSETNATIVE(Long, J),
1504 DECLARE_GETSETNATIVE(Float, F), 1504 DECLARE_GETSETNATIVE(Float, F),
1505 DECLARE_GETSETNATIVE(Double, D), 1505 DECLARE_GETSETNATIVE(Double, D),
1506 1506
1507 {CC"getAddress", CC"("ADR")"ADR, FN_PTR(Unsafe_GetNativeAddress)}, 1507 {CC "getAddress", CC "(" ADR ")" ADR, FN_PTR(Unsafe_GetNativeAddress)},
1508 {CC"putAddress", CC"("ADR""ADR")V", FN_PTR(Unsafe_SetNativeAddress)}, 1508 {CC "putAddress", CC "(" ADR "" ADR ")V", FN_PTR(Unsafe_SetNativeAddress)},
1509 1509
1510 {CC"allocateMemory", CC"(J)"ADR, FN_PTR(Unsafe_AllocateMemory)}, 1510 {CC "allocateMemory", CC "(J)" ADR, FN_PTR(Unsafe_AllocateMemory)},
1511 {CC"reallocateMemory", CC"("ADR"J)"ADR, FN_PTR(Unsafe_ReallocateMemory)}, 1511 {CC "reallocateMemory", CC "(" ADR "J)" ADR, FN_PTR(Unsafe_ReallocateMemory)},
1512 {CC"freeMemory", CC"("ADR")V", FN_PTR(Unsafe_FreeMemory)}, 1512 {CC "freeMemory", CC "(" ADR ")V", FN_PTR(Unsafe_FreeMemory)},
1513 1513
1514 {CC"objectFieldOffset", CC"("FLD")J", FN_PTR(Unsafe_ObjectFieldOffset)}, 1514 {CC "objectFieldOffset", CC "(" FLD ")J", FN_PTR(Unsafe_ObjectFieldOffset)},
1515 {CC"staticFieldOffset", CC"("FLD")J", FN_PTR(Unsafe_StaticFieldOffset)}, 1515 {CC "staticFieldOffset", CC "(" FLD ")J", FN_PTR(Unsafe_StaticFieldOffset)},
1516 {CC"staticFieldBase", CC"("FLD")"OBJ, FN_PTR(Unsafe_StaticFieldBaseFromField)}, 1516 {CC "staticFieldBase", CC "(" FLD ")" OBJ, FN_PTR(Unsafe_StaticFieldBaseFromField)},
1517 {CC"ensureClassInitialized",CC"("CLS")V", FN_PTR(Unsafe_EnsureClassInitialized)}, 1517 {CC "ensureClassInitialized",CC "(" CLS ")V", FN_PTR(Unsafe_EnsureClassInitialized)},
1518 {CC"arrayBaseOffset", CC"("CLS")I", FN_PTR(Unsafe_ArrayBaseOffset)}, 1518 {CC "arrayBaseOffset", CC "(" CLS ")I", FN_PTR(Unsafe_ArrayBaseOffset)},
1519 {CC"arrayIndexScale", CC"("CLS")I", FN_PTR(Unsafe_ArrayIndexScale)}, 1519 {CC "arrayIndexScale", CC "(" CLS ")I", FN_PTR(Unsafe_ArrayIndexScale)},
1520 {CC"addressSize", CC"()I", FN_PTR(Unsafe_AddressSize)}, 1520 {CC "addressSize", CC "()I", FN_PTR(Unsafe_AddressSize)},
1521 {CC"pageSize", CC"()I", FN_PTR(Unsafe_PageSize)}, 1521 {CC "pageSize", CC "()I", FN_PTR(Unsafe_PageSize)},
1522 1522
1523 {CC"defineClass", CC"("DC0_Args")"CLS, FN_PTR(Unsafe_DefineClass0)}, 1523 {CC "defineClass", CC "(" DC0_Args ")" CLS, FN_PTR(Unsafe_DefineClass0)},
1524 {CC"defineClass", CC"("DC_Args")"CLS, FN_PTR(Unsafe_DefineClass)}, 1524 {CC "defineClass", CC "(" DC_Args ")" CLS, FN_PTR(Unsafe_DefineClass)},
1525 {CC"allocateInstance", CC"("CLS")"OBJ, FN_PTR(Unsafe_AllocateInstance)}, 1525 {CC "allocateInstance", CC "(" CLS ")" OBJ, FN_PTR(Unsafe_AllocateInstance)},
1526 {CC"monitorEnter", CC"("OBJ")V", FN_PTR(Unsafe_MonitorEnter)}, 1526 {CC "monitorEnter", CC "(" OBJ ")V", FN_PTR(Unsafe_MonitorEnter)},
1527 {CC"monitorExit", CC"("OBJ")V", FN_PTR(Unsafe_MonitorExit)}, 1527 {CC "monitorExit", CC "(" OBJ ")V", FN_PTR(Unsafe_MonitorExit)},
1528 {CC"throwException", CC"("THR")V", FN_PTR(Unsafe_ThrowException)}, 1528 {CC "throwException", CC "(" THR ")V", FN_PTR(Unsafe_ThrowException)},
1529 {CC"compareAndSwapObject", CC"("OBJ"J"OBJ""OBJ")Z", FN_PTR(Unsafe_CompareAndSwapObject)}, 1529 {CC "compareAndSwapObject", CC "(" OBJ "J" OBJ "" OBJ ")Z", FN_PTR(Unsafe_CompareAndSwapObject)},
1530 {CC"compareAndSwapInt", CC"("OBJ"J""I""I"")Z", FN_PTR(Unsafe_CompareAndSwapInt)}, 1530 {CC "compareAndSwapInt", CC "(" OBJ "J""I""I"")Z", FN_PTR(Unsafe_CompareAndSwapInt)},
1531 {CC"compareAndSwapLong", CC"("OBJ"J""J""J"")Z", FN_PTR(Unsafe_CompareAndSwapLong)}, 1531 {CC "compareAndSwapLong", CC "(" OBJ "J""J""J"")Z", FN_PTR(Unsafe_CompareAndSwapLong)},
1532 {CC"park", CC"(ZJ)V", FN_PTR(Unsafe_Park)}, 1532 {CC "park", CC "(ZJ)V", FN_PTR(Unsafe_Park)},
1533 {CC"unpark", CC"("OBJ")V", FN_PTR(Unsafe_Unpark)} 1533 {CC "unpark", CC "(" OBJ ")V", FN_PTR(Unsafe_Unpark)}
1534 1534
1535 }; 1535 };
1536 1536
1537 // These are the methods for 1.6.0 and 1.7.0 1537 // These are the methods for 1.6.0 and 1.7.0
1538 static JNINativeMethod methods_16[] = { 1538 static JNINativeMethod methods_16[] = {
1539 {CC"getObject", CC"("OBJ"J)"OBJ"", FN_PTR(Unsafe_GetObject)}, 1539 {CC "getObject", CC "(" OBJ "J)" OBJ "", FN_PTR(Unsafe_GetObject)},
1540 {CC"putObject", CC"("OBJ"J"OBJ")V", FN_PTR(Unsafe_SetObject)}, 1540 {CC "putObject", CC "(" OBJ "J" OBJ ")V", FN_PTR(Unsafe_SetObject)},
1541 {CC"getObjectVolatile",CC"("OBJ"J)"OBJ"", FN_PTR(Unsafe_GetObjectVolatile)}, 1541 {CC "getObjectVolatile",CC "(" OBJ "J)" OBJ "", FN_PTR(Unsafe_GetObjectVolatile)},
1542 {CC"putObjectVolatile",CC"("OBJ"J"OBJ")V", FN_PTR(Unsafe_SetObjectVolatile)}, 1542 {CC "putObjectVolatile",CC "(" OBJ "J" OBJ ")V", FN_PTR(Unsafe_SetObjectVolatile)},
1543 1543
1544 DECLARE_GETSETOOP(Boolean, Z), 1544 DECLARE_GETSETOOP(Boolean, Z),
1545 DECLARE_GETSETOOP(Byte, B), 1545 DECLARE_GETSETOOP(Byte, B),
1546 DECLARE_GETSETOOP(Short, S), 1546 DECLARE_GETSETOOP(Short, S),
1547 DECLARE_GETSETOOP(Char, C), 1547 DECLARE_GETSETOOP(Char, C),
1556 DECLARE_GETSETNATIVE(Int, I), 1556 DECLARE_GETSETNATIVE(Int, I),
1557 DECLARE_GETSETNATIVE(Long, J), 1557 DECLARE_GETSETNATIVE(Long, J),
1558 DECLARE_GETSETNATIVE(Float, F), 1558 DECLARE_GETSETNATIVE(Float, F),
1559 DECLARE_GETSETNATIVE(Double, D), 1559 DECLARE_GETSETNATIVE(Double, D),
1560 1560
1561 {CC"getAddress", CC"("ADR")"ADR, FN_PTR(Unsafe_GetNativeAddress)}, 1561 {CC "getAddress", CC "(" ADR ")" ADR, FN_PTR(Unsafe_GetNativeAddress)},
1562 {CC"putAddress", CC"("ADR""ADR")V", FN_PTR(Unsafe_SetNativeAddress)}, 1562 {CC "putAddress", CC "(" ADR "" ADR ")V", FN_PTR(Unsafe_SetNativeAddress)},
1563 1563
1564 {CC"allocateMemory", CC"(J)"ADR, FN_PTR(Unsafe_AllocateMemory)}, 1564 {CC "allocateMemory", CC "(J)" ADR, FN_PTR(Unsafe_AllocateMemory)},
1565 {CC"reallocateMemory", CC"("ADR"J)"ADR, FN_PTR(Unsafe_ReallocateMemory)}, 1565 {CC "reallocateMemory", CC "(" ADR "J)" ADR, FN_PTR(Unsafe_ReallocateMemory)},
1566 {CC"freeMemory", CC"("ADR")V", FN_PTR(Unsafe_FreeMemory)}, 1566 {CC "freeMemory", CC "(" ADR ")V", FN_PTR(Unsafe_FreeMemory)},
1567 1567
1568 {CC"objectFieldOffset", CC"("FLD")J", FN_PTR(Unsafe_ObjectFieldOffset)}, 1568 {CC "objectFieldOffset", CC "(" FLD ")J", FN_PTR(Unsafe_ObjectFieldOffset)},
1569 {CC"staticFieldOffset", CC"("FLD")J", FN_PTR(Unsafe_StaticFieldOffset)}, 1569 {CC "staticFieldOffset", CC "(" FLD ")J", FN_PTR(Unsafe_StaticFieldOffset)},
1570 {CC"staticFieldBase", CC"("FLD")"OBJ, FN_PTR(Unsafe_StaticFieldBaseFromField)}, 1570 {CC "staticFieldBase", CC "(" FLD ")" OBJ, FN_PTR(Unsafe_StaticFieldBaseFromField)},
1571 {CC"ensureClassInitialized",CC"("CLS")V", FN_PTR(Unsafe_EnsureClassInitialized)}, 1571 {CC "ensureClassInitialized",CC "(" CLS ")V", FN_PTR(Unsafe_EnsureClassInitialized)},
1572 {CC"arrayBaseOffset", CC"("CLS")I", FN_PTR(Unsafe_ArrayBaseOffset)}, 1572 {CC "arrayBaseOffset", CC "(" CLS ")I", FN_PTR(Unsafe_ArrayBaseOffset)},
1573 {CC"arrayIndexScale", CC"("CLS")I", FN_PTR(Unsafe_ArrayIndexScale)}, 1573 {CC "arrayIndexScale", CC "(" CLS ")I", FN_PTR(Unsafe_ArrayIndexScale)},
1574 {CC"addressSize", CC"()I", FN_PTR(Unsafe_AddressSize)}, 1574 {CC "addressSize", CC "()I", FN_PTR(Unsafe_AddressSize)},
1575 {CC"pageSize", CC"()I", FN_PTR(Unsafe_PageSize)}, 1575 {CC "pageSize", CC "()I", FN_PTR(Unsafe_PageSize)},
1576 1576
1577 {CC"defineClass", CC"("DC0_Args")"CLS, FN_PTR(Unsafe_DefineClass0)}, 1577 {CC "defineClass", CC "(" DC0_Args ")" CLS, FN_PTR(Unsafe_DefineClass0)},
1578 {CC"defineClass", CC"("DC_Args")"CLS, FN_PTR(Unsafe_DefineClass)}, 1578 {CC "defineClass", CC "(" DC_Args ")" CLS, FN_PTR(Unsafe_DefineClass)},
1579 {CC"allocateInstance", CC"("CLS")"OBJ, FN_PTR(Unsafe_AllocateInstance)}, 1579 {CC "allocateInstance", CC "(" CLS ")" OBJ, FN_PTR(Unsafe_AllocateInstance)},
1580 {CC"monitorEnter", CC"("OBJ")V", FN_PTR(Unsafe_MonitorEnter)}, 1580 {CC "monitorEnter", CC "(" OBJ ")V", FN_PTR(Unsafe_MonitorEnter)},
1581 {CC"monitorExit", CC"("OBJ")V", FN_PTR(Unsafe_MonitorExit)}, 1581 {CC "monitorExit", CC "(" OBJ ")V", FN_PTR(Unsafe_MonitorExit)},
1582 {CC"tryMonitorEnter", CC"("OBJ")Z", FN_PTR(Unsafe_TryMonitorEnter)}, 1582 {CC "tryMonitorEnter", CC "(" OBJ ")Z", FN_PTR(Unsafe_TryMonitorEnter)},
1583 {CC"throwException", CC"("THR")V", FN_PTR(Unsafe_ThrowException)}, 1583 {CC "throwException", CC "(" THR ")V", FN_PTR(Unsafe_ThrowException)},
1584 {CC"compareAndSwapObject", CC"("OBJ"J"OBJ""OBJ")Z", FN_PTR(Unsafe_CompareAndSwapObject)}, 1584 {CC "compareAndSwapObject", CC "(" OBJ "J" OBJ "" OBJ ")Z", FN_PTR(Unsafe_CompareAndSwapObject)},
1585 {CC"compareAndSwapInt", CC"("OBJ"J""I""I"")Z", FN_PTR(Unsafe_CompareAndSwapInt)}, 1585 {CC "compareAndSwapInt", CC "(" OBJ "J""I""I"")Z", FN_PTR(Unsafe_CompareAndSwapInt)},
1586 {CC"compareAndSwapLong", CC"("OBJ"J""J""J"")Z", FN_PTR(Unsafe_CompareAndSwapLong)}, 1586 {CC "compareAndSwapLong", CC "(" OBJ "J""J""J"")Z", FN_PTR(Unsafe_CompareAndSwapLong)},
1587 {CC"putOrderedObject", CC"("OBJ"J"OBJ")V", FN_PTR(Unsafe_SetOrderedObject)}, 1587 {CC "putOrderedObject", CC "(" OBJ "J" OBJ ")V", FN_PTR(Unsafe_SetOrderedObject)},
1588 {CC"putOrderedInt", CC"("OBJ"JI)V", FN_PTR(Unsafe_SetOrderedInt)}, 1588 {CC "putOrderedInt", CC "(" OBJ "JI)V", FN_PTR(Unsafe_SetOrderedInt)},
1589 {CC"putOrderedLong", CC"("OBJ"JJ)V", FN_PTR(Unsafe_SetOrderedLong)}, 1589 {CC "putOrderedLong", CC "(" OBJ "JJ)V", FN_PTR(Unsafe_SetOrderedLong)},
1590 {CC"park", CC"(ZJ)V", FN_PTR(Unsafe_Park)}, 1590 {CC "park", CC "(ZJ)V", FN_PTR(Unsafe_Park)},
1591 {CC"unpark", CC"("OBJ")V", FN_PTR(Unsafe_Unpark)} 1591 {CC "unpark", CC "(" OBJ ")V", FN_PTR(Unsafe_Unpark)}
1592 }; 1592 };
1593 1593
1594 // These are the methods for 1.8.0 1594 // These are the methods for 1.8.0
1595 static JNINativeMethod methods_18[] = { 1595 static JNINativeMethod methods_18[] = {
1596 {CC"getObject", CC"("OBJ"J)"OBJ"", FN_PTR(Unsafe_GetObject)}, 1596 {CC "getObject", CC "(" OBJ "J)" OBJ "", FN_PTR(Unsafe_GetObject)},
1597 {CC"putObject", CC"("OBJ"J"OBJ")V", FN_PTR(Unsafe_SetObject)}, 1597 {CC "putObject", CC "(" OBJ "J" OBJ ")V", FN_PTR(Unsafe_SetObject)},
1598 {CC"getObjectVolatile",CC"("OBJ"J)"OBJ"", FN_PTR(Unsafe_GetObjectVolatile)}, 1598 {CC "getObjectVolatile",CC "(" OBJ "J)" OBJ "", FN_PTR(Unsafe_GetObjectVolatile)},
1599 {CC"putObjectVolatile",CC"("OBJ"J"OBJ")V", FN_PTR(Unsafe_SetObjectVolatile)}, 1599 {CC "putObjectVolatile",CC "(" OBJ "J" OBJ ")V", FN_PTR(Unsafe_SetObjectVolatile)},
1600 1600
1601 DECLARE_GETSETOOP(Boolean, Z), 1601 DECLARE_GETSETOOP(Boolean, Z),
1602 DECLARE_GETSETOOP(Byte, B), 1602 DECLARE_GETSETOOP(Byte, B),
1603 DECLARE_GETSETOOP(Short, S), 1603 DECLARE_GETSETOOP(Short, S),
1604 DECLARE_GETSETOOP(Char, C), 1604 DECLARE_GETSETOOP(Char, C),
1613 DECLARE_GETSETNATIVE(Int, I), 1613 DECLARE_GETSETNATIVE(Int, I),
1614 DECLARE_GETSETNATIVE(Long, J), 1614 DECLARE_GETSETNATIVE(Long, J),
1615 DECLARE_GETSETNATIVE(Float, F), 1615 DECLARE_GETSETNATIVE(Float, F),
1616 DECLARE_GETSETNATIVE(Double, D), 1616 DECLARE_GETSETNATIVE(Double, D),
1617 1617
1618 {CC"getAddress", CC"("ADR")"ADR, FN_PTR(Unsafe_GetNativeAddress)}, 1618 {CC "getAddress", CC "(" ADR ")" ADR, FN_PTR(Unsafe_GetNativeAddress)},
1619 {CC"putAddress", CC"("ADR""ADR")V", FN_PTR(Unsafe_SetNativeAddress)}, 1619 {CC "putAddress", CC "(" ADR "" ADR ")V", FN_PTR(Unsafe_SetNativeAddress)},
1620 1620
1621 {CC"allocateMemory", CC"(J)"ADR, FN_PTR(Unsafe_AllocateMemory)}, 1621 {CC "allocateMemory", CC "(J)" ADR, FN_PTR(Unsafe_AllocateMemory)},
1622 {CC"reallocateMemory", CC"("ADR"J)"ADR, FN_PTR(Unsafe_ReallocateMemory)}, 1622 {CC "reallocateMemory", CC "(" ADR "J)" ADR, FN_PTR(Unsafe_ReallocateMemory)},
1623 {CC"freeMemory", CC"("ADR")V", FN_PTR(Unsafe_FreeMemory)}, 1623 {CC "freeMemory", CC "(" ADR ")V", FN_PTR(Unsafe_FreeMemory)},
1624 1624
1625 {CC"objectFieldOffset", CC"("FLD")J", FN_PTR(Unsafe_ObjectFieldOffset)}, 1625 {CC "objectFieldOffset", CC "(" FLD ")J", FN_PTR(Unsafe_ObjectFieldOffset)},
1626 {CC"staticFieldOffset", CC"("FLD")J", FN_PTR(Unsafe_StaticFieldOffset)}, 1626 {CC "staticFieldOffset", CC "(" FLD ")J", FN_PTR(Unsafe_StaticFieldOffset)},
1627 {CC"staticFieldBase", CC"("FLD")"OBJ, FN_PTR(Unsafe_StaticFieldBaseFromField)}, 1627 {CC "staticFieldBase", CC "(" FLD ")" OBJ, FN_PTR(Unsafe_StaticFieldBaseFromField)},
1628 {CC"ensureClassInitialized",CC"("CLS")V", FN_PTR(Unsafe_EnsureClassInitialized)}, 1628 {CC "ensureClassInitialized",CC "(" CLS ")V", FN_PTR(Unsafe_EnsureClassInitialized)},
1629 {CC"arrayBaseOffset", CC"("CLS")I", FN_PTR(Unsafe_ArrayBaseOffset)}, 1629 {CC "arrayBaseOffset", CC "(" CLS ")I", FN_PTR(Unsafe_ArrayBaseOffset)},
1630 {CC"arrayIndexScale", CC"("CLS")I", FN_PTR(Unsafe_ArrayIndexScale)}, 1630 {CC "arrayIndexScale", CC "(" CLS ")I", FN_PTR(Unsafe_ArrayIndexScale)},
1631 {CC"addressSize", CC"()I", FN_PTR(Unsafe_AddressSize)}, 1631 {CC "addressSize", CC "()I", FN_PTR(Unsafe_AddressSize)},
1632 {CC"pageSize", CC"()I", FN_PTR(Unsafe_PageSize)}, 1632 {CC "pageSize", CC "()I", FN_PTR(Unsafe_PageSize)},
1633 1633
1634 {CC"defineClass", CC"("DC_Args")"CLS, FN_PTR(Unsafe_DefineClass)}, 1634 {CC "defineClass", CC "(" DC_Args ")" CLS, FN_PTR(Unsafe_DefineClass)},
1635 {CC"allocateInstance", CC"("CLS")"OBJ, FN_PTR(Unsafe_AllocateInstance)}, 1635 {CC "allocateInstance", CC "(" CLS ")" OBJ, FN_PTR(Unsafe_AllocateInstance)},
1636 {CC"monitorEnter", CC"("OBJ")V", FN_PTR(Unsafe_MonitorEnter)}, 1636 {CC "monitorEnter", CC "(" OBJ ")V", FN_PTR(Unsafe_MonitorEnter)},
1637 {CC"monitorExit", CC"("OBJ")V", FN_PTR(Unsafe_MonitorExit)}, 1637 {CC "monitorExit", CC "(" OBJ ")V", FN_PTR(Unsafe_MonitorExit)},
1638 {CC"tryMonitorEnter", CC"("OBJ")Z", FN_PTR(Unsafe_TryMonitorEnter)}, 1638 {CC "tryMonitorEnter", CC "(" OBJ ")Z", FN_PTR(Unsafe_TryMonitorEnter)},
1639 {CC"throwException", CC"("THR")V", FN_PTR(Unsafe_ThrowException)}, 1639 {CC "throwException", CC "(" THR ")V", FN_PTR(Unsafe_ThrowException)},
1640 {CC"compareAndSwapObject", CC"("OBJ"J"OBJ""OBJ")Z", FN_PTR(Unsafe_CompareAndSwapObject)}, 1640 {CC "compareAndSwapObject", CC "(" OBJ "J" OBJ "" OBJ ")Z", FN_PTR(Unsafe_CompareAndSwapObject)},
1641 {CC"compareAndSwapInt", CC"("OBJ"J""I""I"")Z", FN_PTR(Unsafe_CompareAndSwapInt)}, 1641 {CC "compareAndSwapInt", CC "(" OBJ "J""I""I"")Z", FN_PTR(Unsafe_CompareAndSwapInt)},
1642 {CC"compareAndSwapLong", CC"("OBJ"J""J""J"")Z", FN_PTR(Unsafe_CompareAndSwapLong)}, 1642 {CC "compareAndSwapLong", CC "(" OBJ "J""J""J"")Z", FN_PTR(Unsafe_CompareAndSwapLong)},
1643 {CC"putOrderedObject", CC"("OBJ"J"OBJ")V", FN_PTR(Unsafe_SetOrderedObject)}, 1643 {CC "putOrderedObject", CC "(" OBJ "J" OBJ ")V", FN_PTR(Unsafe_SetOrderedObject)},
1644 {CC"putOrderedInt", CC"("OBJ"JI)V", FN_PTR(Unsafe_SetOrderedInt)}, 1644 {CC "putOrderedInt", CC "(" OBJ "JI)V", FN_PTR(Unsafe_SetOrderedInt)},
1645 {CC"putOrderedLong", CC"("OBJ"JJ)V", FN_PTR(Unsafe_SetOrderedLong)}, 1645 {CC "putOrderedLong", CC "(" OBJ "JJ)V", FN_PTR(Unsafe_SetOrderedLong)},
1646 {CC"park", CC"(ZJ)V", FN_PTR(Unsafe_Park)}, 1646 {CC "park", CC "(ZJ)V", FN_PTR(Unsafe_Park)},
1647 {CC"unpark", CC"("OBJ")V", FN_PTR(Unsafe_Unpark)} 1647 {CC "unpark", CC "(" OBJ ")V", FN_PTR(Unsafe_Unpark)}
1648 }; 1648 };
1649 1649
1650 JNINativeMethod loadavg_method[] = { 1650 JNINativeMethod loadavg_method[] = {
1651 {CC"getLoadAverage", CC"([DI)I", FN_PTR(Unsafe_Loadavg)} 1651 {CC "getLoadAverage", CC "([DI)I", FN_PTR(Unsafe_Loadavg)}
1652 }; 1652 };
1653 1653
1654 JNINativeMethod prefetch_methods[] = { 1654 JNINativeMethod prefetch_methods[] = {
1655 {CC"prefetchRead", CC"("OBJ"J)V", FN_PTR(Unsafe_PrefetchRead)}, 1655 {CC "prefetchRead", CC "(" OBJ "J)V", FN_PTR(Unsafe_PrefetchRead)},
1656 {CC"prefetchWrite", CC"("OBJ"J)V", FN_PTR(Unsafe_PrefetchWrite)}, 1656 {CC "prefetchWrite", CC "(" OBJ "J)V", FN_PTR(Unsafe_PrefetchWrite)},
1657 {CC"prefetchReadStatic", CC"("OBJ"J)V", FN_PTR(Unsafe_PrefetchRead)}, 1657 {CC "prefetchReadStatic", CC "(" OBJ "J)V", FN_PTR(Unsafe_PrefetchRead)},
1658 {CC"prefetchWriteStatic",CC"("OBJ"J)V", FN_PTR(Unsafe_PrefetchWrite)} 1658 {CC "prefetchWriteStatic",CC "(" OBJ "J)V", FN_PTR(Unsafe_PrefetchWrite)}
1659 }; 1659 };
1660 1660
1661 JNINativeMethod memcopy_methods_17[] = { 1661 JNINativeMethod memcopy_methods_17[] = {
1662 {CC"copyMemory", CC"("OBJ"J"OBJ"JJ)V", FN_PTR(Unsafe_CopyMemory2)}, 1662 {CC "copyMemory", CC "(" OBJ "J" OBJ "JJ)V", FN_PTR(Unsafe_CopyMemory2)},
1663 {CC"setMemory", CC"("OBJ"JJB)V", FN_PTR(Unsafe_SetMemory2)} 1663 {CC "setMemory", CC "(" OBJ "JJB)V", FN_PTR(Unsafe_SetMemory2)}
1664 }; 1664 };
1665 1665
1666 JNINativeMethod memcopy_methods_15[] = { 1666 JNINativeMethod memcopy_methods_15[] = {
1667 {CC"setMemory", CC"("ADR"JB)V", FN_PTR(Unsafe_SetMemory)}, 1667 {CC "setMemory", CC "(" ADR "JB)V", FN_PTR(Unsafe_SetMemory)},
1668 {CC"copyMemory", CC"("ADR ADR"J)V", FN_PTR(Unsafe_CopyMemory)} 1668 {CC "copyMemory", CC "(" ADR ADR "J)V", FN_PTR(Unsafe_CopyMemory)}
1669 }; 1669 };
1670 1670
1671 JNINativeMethod anonk_methods[] = { 1671 JNINativeMethod anonk_methods[] = {
1672 {CC"defineAnonymousClass", CC"("DAC_Args")"CLS, FN_PTR(Unsafe_DefineAnonymousClass)}, 1672 {CC "defineAnonymousClass", CC "(" DAC_Args ")" CLS, FN_PTR(Unsafe_DefineAnonymousClass)},
1673 }; 1673 };
1674 1674
1675 JNINativeMethod lform_methods[] = { 1675 JNINativeMethod lform_methods[] = {
1676 {CC"shouldBeInitialized",CC"("CLS")Z", FN_PTR(Unsafe_ShouldBeInitialized)}, 1676 {CC "shouldBeInitialized",CC "(" CLS ")Z", FN_PTR(Unsafe_ShouldBeInitialized)},
1677 }; 1677 };
1678 1678
1679 JNINativeMethod fence_methods[] = { 1679 JNINativeMethod fence_methods[] = {
1680 {CC"loadFence", CC"()V", FN_PTR(Unsafe_LoadFence)}, 1680 {CC "loadFence", CC "()V", FN_PTR(Unsafe_LoadFence)},
1681 {CC"storeFence", CC"()V", FN_PTR(Unsafe_StoreFence)}, 1681 {CC "storeFence", CC "()V", FN_PTR(Unsafe_StoreFence)},
1682 {CC"fullFence", CC"()V", FN_PTR(Unsafe_FullFence)}, 1682 {CC "fullFence", CC "()V", FN_PTR(Unsafe_FullFence)},
1683 }; 1683 };
1684 1684
1685 #undef CC 1685 #undef CC
1686 #undef FN_PTR 1686 #undef FN_PTR
1687 1687

mercurial