diff --git a/src/main/java/org/redkale/util/Utility.java b/src/main/java/org/redkale/util/Utility.java index cf67cb8b2..347f36e74 100644 --- a/src/main/java/org/redkale/util/Utility.java +++ b/src/main/java/org/redkale/util/Utility.java @@ -63,7 +63,8 @@ public final class Utility { JAVA_RECORD_CLASS = clz; } - private static final String functionVirtualExecutorBinary = "cafebabeffff003f008d0a000200030700040c000500060100106a6176612f6c616e672f4f626a6563740100063c696e69743e0100032829560a0008000907000a0c000b000c0100106a6176612f6c616e672f5468726561640100096f665669727475616c01002628294c6a6176612f6c616e672f546872656164244275696c646572244f665669727475616c3b0b000e000f0700100c001100120100226a6176612f6c616e672f546872656164244275696c646572244f665669727475616c010007666163746f727901002628294c6a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f72793b0700140100296a6176612f7574696c2f636f6e63757272656e742f61746f6d69632f41746f6d6963496e74656765720a0013000312000000170c001800190100096e6577546872656164010087284c6a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f72793b4c6a6176612f7574696c2f636f6e63757272656e742f61746f6d69632f41746f6d6963496e74656765723b4c6a6176612f6c616e672f537472696e673b294c6a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f72793b0a001b001c07001d0c001e001f01001e6a6176612f7574696c2f636f6e63757272656e742f4578656375746f72730100186e65775468726561645065725461736b4578656375746f7201004c284c6a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f72793b294c6a6176612f7574696c2f636f6e63757272656e742f4578656375746f72536572766963653b0700210100106a6176612f6c616e672f537472696e670a002300240700250c002600270100296f72672f7265646b616c652f7574696c2f416e6f6e796d6f75735669727475616c4578656375746f720100056170706c7901003a284c6a6176612f6c616e672f537472696e673b294c6a6176612f7574696c2f636f6e63757272656e742f4578656375746f72536572766963653b0b0029002a07002b0c0018002c0100226a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f7279010028284c6a6176612f6c616e672f52756e6e61626c653b294c6a6176612f6c616e672f5468726561643b0a0013002e0c002f003001000f696e6372656d656e74416e6447657401000328294912000100320c003300340100176d616b65436f6e63617457697468436f6e7374616e74730100152849294c6a6176612f6c616e672f537472696e673b12000200320a003700380700390c003a003b0100116a6176612f6c616e672f496e746567657201000776616c75654f660100162849294c6a6176612f6c616e672f496e74656765723b0a0020003d0c003a003e010026284c6a6176612f6c616e672f4f626a6563743b294c6a6176612f6c616e672f537472696e673b12000300400c00330041010026284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f537472696e673b0a002000430c00440045010006666f726d6174010039284c6a6176612f6c616e672f537472696e673b5b4c6a6176612f6c616e672f4f626a6563743b294c6a6176612f6c616e672f537472696e673b0a000800470c004800490100077365744e616d65010015284c6a6176612f6c616e672f537472696e673b295607004b01001b6a6176612f7574696c2f66756e6374696f6e2f46756e6374696f6e010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c650100047468697301002b4c6f72672f7265646b616c652f7574696c2f416e6f6e796d6f75735669727475616c4578656375746f723b0100107468726561644e616d65466f726d61740100124c6a6176612f6c616e672f537472696e673b0100244c6a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f72793b010007636f756e74657201002b4c6a6176612f7574696c2f636f6e63757272656e742f61746f6d69632f41746f6d6963496e74656765723b0100104d6574686f64506172616d6574657273010026284c6a6176612f6c616e672f4f626a6563743b294c6a6176612f6c616e672f4f626a6563743b01000e6c616d626461246170706c792430010089284c6a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f72793b4c6a6176612f7574696c2f636f6e63757272656e742f61746f6d69632f41746f6d6963496e74656765723b4c6a6176612f6c616e672f537472696e673b4c6a6176612f6c616e672f52756e6e61626c653b294c6a6176612f6c616e672f5468726561643b010001720100144c6a6176612f6c616e672f52756e6e61626c653b010001740100124c6a6176612f6c616e672f5468726561643b010001630100014901000d537461636b4d61705461626c650700620100126a6176612f6c616e672f52756e6e61626c650700640100135b4c6a6176612f6c616e672f4f626a6563743b0700660100146a6176612f696f2f53657269616c697a61626c650100095369676e61747572650100694c6a6176612f6c616e672f4f626a6563743b4c6a6176612f7574696c2f66756e6374696f6e2f46756e6374696f6e3c4c6a6176612f6c616e672f537472696e673b4c6a6176612f7574696c2f636f6e63757272656e742f4578656375746f72536572766963653b3e3b01000a536f7572636546696c6501001d416e6f6e796d6f75735669727475616c4578656375746f722e6a617661010010426f6f7473747261704d6574686f64730f06006d0a006e006f0700700c007100720100226a6176612f6c616e672f696e766f6b652f4c616d6264614d657461666163746f727901000b6d657461666163746f72790100cc284c6a6176612f6c616e672f696e766f6b652f4d6574686f6448616e646c6573244c6f6f6b75703b4c6a6176612f6c616e672f537472696e673b4c6a6176612f6c616e672f696e766f6b652f4d6574686f64547970653b4c6a6176612f6c616e672f696e766f6b652f4d6574686f64547970653b4c6a6176612f6c616e672f696e766f6b652f4d6574686f6448616e646c653b4c6a6176612f6c616e672f696e766f6b652f4d6574686f64547970653b294c6a6176612f6c616e672f696e766f6b652f43616c6c536974653b10002c0f0600750a002300760c005800590f0600780a0079007a07007b0c0033007c0100246a6176612f6c616e672f696e766f6b652f537472696e67436f6e636174466163746f7279010098284c6a6176612f6c616e672f696e766f6b652f4d6574686f6448616e646c6573244c6f6f6b75703b4c6a6176612f6c616e672f537472696e673b4c6a6176612f6c616e672f696e766f6b652f4d6574686f64547970653b4c6a6176612f6c616e672f537472696e673b5b4c6a6176612f6c616e672f4f626a6563743b294c6a6176612f6c616e672f696e766f6b652f43616c6c536974653b08007e01000330300108008001000230010800820100095669727475616c2d0101000c496e6e6572436c61737365730700850100186a6176612f6c616e672f546872656164244275696c6465720100074275696c6465720100094f665669727475616c0700890100256a6176612f6c616e672f696e766f6b652f4d6574686f6448616e646c6573244c6f6f6b757007008b01001e6a6176612f6c616e672f696e766f6b652f4d6574686f6448616e646c65730100064c6f6f6b75700021002300020001004a000000040001000500060001004c0000002f00010001000000052ab70001b100000002004d0000000600010000000e004e0000000c000100000005004f005000000001002600270002004c0000006d000300040000001db80007b9000d01004dbb001359b700154e2c2d2bba00160000b8001ab000000002004d0000000e0003000000120009001300110014004e0000002a00040000001d004f005000000000001d005100520001000900140011005300020011000c00540055000300560000000501005100001041002600570002004c0000003300020002000000092a2bc00020b60022b000000002004d0000000600010000000e004e0000000c000100000009004f005000000056000000050100511000100a005800590001004c0000013000070006000000512a2db9002802003a042bb6002d360519042c04bd000259031505100aa2000d1505ba00310000a7001915051064a2000d1505ba00350000a700081505b80036b8003cba003f000053b80042b600461904b000000003004d0000001200040000001500090016000f0017004e0018004e0000003e000600000051001100530000000000510054005500010000005100510052000200000051005a005b000300090048005c005d0004000f0042005e005f00050060000000710003ff0029000607002907001307002007006107000801000507000807002007006307006301ff0010000607002907001307002007006107000801000507000807002007006307006301ff000400060700290700130700200700610700080100060700080700200700630700630107006500040067000000020068006900000002006a006b0000001e0004006c000300730074007300770001007d00770001007f00770001008100830000001a00030084000800860609000e0084008706090088008a008c0019"; + //org.redkale.util.AnonymousVirtualExecutor + private static final String functionVirtualExecutorBinary = "cafebabeffff0040008d0a000200030700040c000500060100106a6176612f6c616e672f4f626a6563740100063c696e69743e0100032829560a0008000907000a0c000b000c0100106a6176612f6c616e672f5468726561640100096f665669727475616c01002628294c6a6176612f6c616e672f546872656164244275696c646572244f665669727475616c3b0b000e000f0700100c001100120100226a6176612f6c616e672f546872656164244275696c646572244f665669727475616c010007666163746f727901002628294c6a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f72793b0700140100296a6176612f7574696c2f636f6e63757272656e742f61746f6d69632f41746f6d6963496e74656765720a0013000312000000170c001800190100096e6577546872656164010087284c6a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f72793b4c6a6176612f7574696c2f636f6e63757272656e742f61746f6d69632f41746f6d6963496e74656765723b4c6a6176612f6c616e672f537472696e673b294c6a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f72793b0a001b001c07001d0c001e001f01001e6a6176612f7574696c2f636f6e63757272656e742f4578656375746f72730100186e65775468726561645065725461736b4578656375746f7201004c284c6a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f72793b294c6a6176612f7574696c2f636f6e63757272656e742f4578656375746f72536572766963653b0700210100106a6176612f6c616e672f537472696e670a002300240700250c002600270100296f72672f7265646b616c652f7574696c2f416e6f6e796d6f75735669727475616c4578656375746f720100056170706c7901003a284c6a6176612f6c616e672f537472696e673b294c6a6176612f7574696c2f636f6e63757272656e742f4578656375746f72536572766963653b0b0029002a07002b0c0018002c0100226a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f7279010028284c6a6176612f6c616e672f52756e6e61626c653b294c6a6176612f6c616e672f5468726561643b0a0013002e0c002f003001000f696e6372656d656e74416e6447657401000328294912000100320c003300340100176d616b65436f6e63617457697468436f6e7374616e74730100152849294c6a6176612f6c616e672f537472696e673b12000200320a003700380700390c003a003b0100116a6176612f6c616e672f496e746567657201000776616c75654f660100162849294c6a6176612f6c616e672f496e74656765723b0a0020003d0c003a003e010026284c6a6176612f6c616e672f4f626a6563743b294c6a6176612f6c616e672f537472696e673b12000300400c00330041010026284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f537472696e673b0a002000430c00440045010006666f726d6174010039284c6a6176612f6c616e672f537472696e673b5b4c6a6176612f6c616e672f4f626a6563743b294c6a6176612f6c616e672f537472696e673b0a000800470c004800490100077365744e616d65010015284c6a6176612f6c616e672f537472696e673b295607004b01001b6a6176612f7574696c2f66756e6374696f6e2f46756e6374696f6e010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c650100047468697301002b4c6f72672f7265646b616c652f7574696c2f416e6f6e796d6f75735669727475616c4578656375746f723b0100107468726561644e616d65466f726d61740100124c6a6176612f6c616e672f537472696e673b0100244c6a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f72793b010007636f756e74657201002b4c6a6176612f7574696c2f636f6e63757272656e742f61746f6d69632f41746f6d6963496e74656765723b0100104d6574686f64506172616d6574657273010026284c6a6176612f6c616e672f4f626a6563743b294c6a6176612f6c616e672f4f626a6563743b01000e6c616d626461246170706c792430010089284c6a6176612f7574696c2f636f6e63757272656e742f546872656164466163746f72793b4c6a6176612f7574696c2f636f6e63757272656e742f61746f6d69632f41746f6d6963496e74656765723b4c6a6176612f6c616e672f537472696e673b4c6a6176612f6c616e672f52756e6e61626c653b294c6a6176612f6c616e672f5468726561643b010001720100144c6a6176612f6c616e672f52756e6e61626c653b010001740100124c6a6176612f6c616e672f5468726561643b010001630100014901000d537461636b4d61705461626c650700620100126a6176612f6c616e672f52756e6e61626c650700640100135b4c6a6176612f6c616e672f4f626a6563743b0700660100146a6176612f696f2f53657269616c697a61626c650100095369676e61747572650100694c6a6176612f6c616e672f4f626a6563743b4c6a6176612f7574696c2f66756e6374696f6e2f46756e6374696f6e3c4c6a6176612f6c616e672f537472696e673b4c6a6176612f7574696c2f636f6e63757272656e742f4578656375746f72536572766963653b3e3b01000a536f7572636546696c6501001d416e6f6e796d6f75735669727475616c4578656375746f722e6a617661010010426f6f7473747261704d6574686f64730f06006d0a006e006f0700700c007100720100226a6176612f6c616e672f696e766f6b652f4c616d6264614d657461666163746f727901000b6d657461666163746f72790100cc284c6a6176612f6c616e672f696e766f6b652f4d6574686f6448616e646c6573244c6f6f6b75703b4c6a6176612f6c616e672f537472696e673b4c6a6176612f6c616e672f696e766f6b652f4d6574686f64547970653b4c6a6176612f6c616e672f696e766f6b652f4d6574686f64547970653b4c6a6176612f6c616e672f696e766f6b652f4d6574686f6448616e646c653b4c6a6176612f6c616e672f696e766f6b652f4d6574686f64547970653b294c6a6176612f6c616e672f696e766f6b652f43616c6c536974653b10002c0f0600750a002300760c005800590f0600780a0079007a07007b0c0033007c0100246a6176612f6c616e672f696e766f6b652f537472696e67436f6e636174466163746f7279010098284c6a6176612f6c616e672f696e766f6b652f4d6574686f6448616e646c6573244c6f6f6b75703b4c6a6176612f6c616e672f537472696e673b4c6a6176612f6c616e672f696e766f6b652f4d6574686f64547970653b4c6a6176612f6c616e672f537472696e673b5b4c6a6176612f6c616e672f4f626a6563743b294c6a6176612f6c616e672f696e766f6b652f43616c6c536974653b08007e01000330300108008001000230010800820100095669727475616c2d0101000c496e6e6572436c61737365730700850100186a6176612f6c616e672f546872656164244275696c6465720100074275696c6465720100094f665669727475616c0700890100256a6176612f6c616e672f696e766f6b652f4d6574686f6448616e646c6573244c6f6f6b757007008b01001e6a6176612f6c616e672f696e766f6b652f4d6574686f6448616e646c65730100064c6f6f6b75700021002300020001004a000000040001000500060001004c0000002f00010001000000052ab70001b100000002004d0000000600010000000e004e0000000c000100000005004f005000000001002600270002004c0000006d000300040000001db80007b9000d01004dbb001359b700154e2c2d2bba00160000b8001ab000000002004d0000000e0003000000120009001300110014004e0000002a00040000001d004f005000000000001d005100520001000900140011005300020011000c00540055000300560000000501005100001041002600570002004c0000003300020002000000092a2bc00020b60022b000000002004d0000000600010000000e004e0000000c000100000009004f005000000056000000050100511000100a005800590001004c0000013000070006000000512a2db9002802003a042bb6002d360519042c04bd000259031505100aa2000d1505ba00310000a7001915051064a2000d1505ba00350000a700081505b80036b8003cba003f000053b80042b600461904b000000003004d0000001200040000001500090016000f0017004e0018004e0000003e000600000051001100530000000000510054005500010000005100510052000200000051005a005b000300090048005c005d0004000f0042005e005f00050060000000710003ff0029000607002907001307002007006107000801000507000807002007006307006301ff0010000607002907001307002007006107000801000507000807002007006307006301ff000400060700290700130700200700610700080100060700080700200700630700630107006500040067000000020068006900000002006a006b0000001e0004006c000300730074007300770001007d00770001007f00770001008100830000001a00030084000800860609000e0084008706090088008a008c0019"; private static final Function virtualExecutorFunction; @@ -113,23 +114,23 @@ public final class Utility { final ClassLoader loader = Thread.currentThread().getContextClassLoader(); { //virtualExecutorFunction Class> virtualClazz1 = null; - boolean virtual = false; try { - Thread.currentThread().getContextClassLoader().loadClass("java.lang.Thread.Builder.OfVirtual"); - virtual = true; virtualClazz1 = (Class) loader.loadClass("org.redkale.util.AnonymousVirtualExecutor"); } catch (Throwable t) { } - if (virtual && virtualClazz1 == null) { + if (virtualClazz1 == null) { byte[] classBytes = hexToBin(functionVirtualExecutorBinary); - virtualClazz1 = (Class>) new ClassLoader(loader) { - public final Class loadClass(String name, byte[] b) { - return defineClass(name, b, 0, b.length); - } - }.loadClass("org.redkale.util.AnonymousVirtualExecutor", classBytes); - RedkaleClassLoader.putDynClass(virtualClazz1.getName(), classBytes, virtualClazz1); - RedkaleClassLoader.putReflectionDeclaredConstructors(virtualClazz1, virtualClazz1.getName()); - virtualExecutorFunction0 = virtualClazz1.getConstructor().newInstance(); + try { + virtualClazz1 = (Class>) new ClassLoader(loader) { + public final Class loadClass(String name, byte[] b) { + return defineClass(name, b, 0, b.length); + } + }.loadClass("org.redkale.util.AnonymousVirtualExecutor", classBytes); + RedkaleClassLoader.putDynClass(virtualClazz1.getName(), classBytes, virtualClazz1); + RedkaleClassLoader.putReflectionDeclaredConstructors(virtualClazz1, virtualClazz1.getName()); + virtualExecutorFunction0 = virtualClazz1.getConstructor().newInstance(); + } catch (Throwable t) { + } } } { //unsafe