@@ -1307,9 +1307,7 @@ PikaObj* Obj_linkLibraryFile(PikaObj* self, char* input_file_name) {
13071307PikaObj * obj_linkLibrary (PikaObj * self , uint8_t * library_bytes ) {
13081308 obj_newMetaObj (self , "@lib" , New_LibObj );
13091309 LibObj * lib = obj_getObj (self , "@lib" );
1310- if (0 != LibObj_loadLibrary (lib , library_bytes )){
1311- __platform_printf ("VM Error: load bytecode library failed\r\n" );
1312- }
1310+ LibObj_loadLibrary (lib , library_bytes );
13131311 return self ;
13141312}
13151313
@@ -1428,20 +1426,11 @@ void pks_eventLisener_deinit(PikaEventListener** p_self) {
14281426 }
14291427}
14301428
1431- void pks_eventLisener_sendSignal (PikaEventListener * self ,
1432- uint32_t eventId ,
1433- int eventSignal ) {
1434- PikaObj * eventHandleObj = pks_eventLisener_getEventHandleObj (self , eventId );
1435- if (NULL == eventHandleObj ) {
1436- __platform_printf (
1437- "Error: can not find event handler by id: [0x%02x]\r\n" , eventId );
1438- return ;
1439- }
1440- obj_setInt (eventHandleObj , "eventSignal" , eventSignal );
1429+ void __eventLisener_runEvent (PikaObj * eventHandleObj ) {
14411430 /* clang-format off */
14421431 PIKA_PYTHON (
14431432 eventCallBack (eventSignal )
1444- )
1433+ )
14451434 /* clang-format on */
14461435 const uint8_t bytes [] = {
14471436 0x08 , 0x00 , 0x00 , 0x00 , /* instruct array size */
@@ -1454,6 +1443,31 @@ void pks_eventLisener_sendSignal(PikaEventListener* self,
14541443 pikaVM_runByteCode (eventHandleObj , (uint8_t * )bytes );
14551444}
14561445
1446+ void pks_eventLisener_sendSignal (PikaEventListener * self ,
1447+ uint32_t eventId ,
1448+ int eventSignal ) {
1449+ PikaObj * eventHandleObj = pks_eventLisener_getEventHandleObj (self , eventId );
1450+ if (NULL == eventHandleObj ) {
1451+ __platform_printf (
1452+ "Error: can not find event handler by id: [0x%02x]\r\n" , eventId );
1453+ return ;
1454+ }
1455+ obj_setInt (eventHandleObj , "eventSignal" , eventSignal );
1456+ if (0 == VMSignal_getVMCnt ()) {
1457+ /* no vm is running, run event handler directly */
1458+ __eventLisener_runEvent (eventHandleObj );
1459+ return ;
1460+ }
1461+ /* push event handler to vm event list */
1462+ if (PIKA_RES_OK != VMSignal_pushEvent (eventHandleObj )) {
1463+ __platform_printf (
1464+ "OverflowError: event list is full, please use bigger "
1465+ "PIKA_EVENT_LIST_SIZE\r\n" );
1466+ while (1 ) {
1467+ }
1468+ }
1469+ }
1470+
14571471/* print major version info */
14581472void pks_printVersion (void ) {
14591473 __platform_printf ("pikascript-core==v%d.%d.%d (%s)\r\n" , PIKA_VERSION_MAJOR ,
0 commit comments