% cd /usr/local/ilu/src % patch -p < /usr/local/ilu/src/this-patch [...various output from the patch program...] %
*** examples/test1/load-lisp-example.lisp.dist 1997/01/29 01:33:09 --- 1.3 1997/05/08 22:38:46 *************** *** 26,28 **** --- 26,31 ---- #+aclpc (setf *default-pathname-defaults* *saved-default-pathname-defaults*) + + #+ilu-batch-compile + (exit)
*** runtime/kernel/object.c 1997/04/26 07:30:00 --- 1.156 1997/05/09 23:02:31 *************** *** 559,591 **** "on server <%s> (%p).\n", o, ih, s->sr_id, s)); if (mstid == NIL || !tidfound) { ilu_ExitServer(s, static_type); #ifdef IIOP_PROTOCOL ! if ((strncmp(s->sr_id, "CORBA:", 6) == 0) && ! ih[0] == '$' && ih[1] == 0) ! /* ! * non-ILU object; use "-is-a" instead of "ILUGetTypes"; ! * less efficient but works with non-ILU orbs ! */ ! cl = _ilu_IIOP_FindClassViaRPC(o); ! else #endif ! cl = _ilu_FindClassViaRPC(o); ! if (cl != NIL) { ! object_class(o) = cl; ilu_EnterServer(s, static_type); ! } else { ! ILU_NOTE(OBJECT_DEBUG, ! ("_ilu_FindOrCreateObject: Couldn't determine" ! " type for object %p, given mstid \"%s\".\n", ! o, mstid)); ! UncreateObject(o); ! o = NIL; ! (void) ILU_ERR_CONS1(inv_objref, err, minor, ! ilu_iom_mstid_fail, 6); } } ! if (o != NIL) { if (s->sr_closing == TRUE) { ILU_NOTE(OBJECT_DEBUG, ("_ilu_FindOrCreateObject: %s (ih %s) %s %s.\n", --- 559,596 ---- "on server <%s> (%p).\n", o, ih, s->sr_id, s)); if (mstid == NIL || !tidfound) { + ilu_DeltaServerHolds(s, +1, err); ilu_ExitServer(s, static_type); + if (ILU_ERROK(*err)) { #ifdef IIOP_PROTOCOL ! if ((strncmp(s->sr_id, "CORBA:", 6) == 0) && ! ih[0] == '$' && ih[1] == 0) ! /* ! * non-ILU object; use "-is-a" instead of "ILUGetTypes"; ! * less efficient but works with non-ILU orbs ! */ ! cl = _ilu_IIOP_FindClassViaRPC(o); ! else #endif ! cl = _ilu_FindClassViaRPC(o); ilu_EnterServer(s, static_type); ! ilu_DeltaServerHolds(s, -1, err); ! if (cl != NIL) { ! object_class(o) = cl; ! } else { ! ILU_NOTE(OBJECT_DEBUG, ! ("_ilu_FindOrCreateObject: Couldn't determine" ! " type for object %p, given mstid \"%s\".\n", ! o, mstid)); ! UncreateObject(o); ! o = NIL; ! ilu_ExitServer(s, static_type); ! (void) ILU_ERR_CONS1(inv_objref, err, minor, ! ilu_iom_mstid_fail, 6); ! } } } ! if (ILU_ERROK(*err)) { if (s->sr_closing == TRUE) { ILU_NOTE(OBJECT_DEBUG, ("_ilu_FindOrCreateObject: %s (ih %s) %s %s.\n",
*** stubbers/lisp/type-basics.c 1997/05/05 04:59:41 --- 1.31 1997/05/09 23:47:24 *************** *** 84,90 **** (val->val.i.sign < 0) ? "-" : "", val->val.i.value); break; case shortcharacter_Type: ! fprintf (context->file, "%s", val->val.s); break; case boolean_Type: fprintf (context->file, "%s", val->val.b ? "cl:t" : "cl:nil"); --- 84,94 ---- (val->val.i.sign < 0) ? "-" : "", val->val.i.value); break; case shortcharacter_Type: ! { ! char *fixed_up = lisp_string(val->val.s); ! fprintf (context->file, "%s", fixed_up); ! iluparser_Free(fixed_up); ! } break; case boolean_Type: fprintf (context->file, "%s", val->val.b ? "cl:t" : "cl:nil");
*** stubbers/c/cheaders.c 1997/04/21 17:07:37 --- 1.106 1997/05/10 00:17:12 *************** *** 486,493 **** --- 486,495 ---- fprintf (context->file, "#define %s__CreateTrue %s__CreateTrue\n", c_type_name(t), c_type_name(ut)); fprintf (context->file, "#define %s__OTCreateTrue %s__OTCreateTrue\n", c_type_name(t), c_type_name(ut)); fprintf (context->file, "#define %s__CreateFromSBH %s__CreateFromSBH\n", c_type_name(t), c_type_name(ut)); + fprintf (context->file, "#define %s__CreateFromURL %s__CreateFromURL\n", c_type_name(t), c_type_name(ut)); fprintf (context->file, "#define %s__SetUserData %s__SetUserData\n", c_type_name(t), c_type_name(ut)); fprintf (context->file, "#define %s__GetUserData %s__GetUserData\n", c_type_name(t), c_type_name(ut)); + fprintf (context->file, "#define _%s__ILUType _%s__ILUType\n", c_type_name(t), c_type_name(ut)); fprintf (context->file, "#define %s__MSType _%s__ILUType\n", c_type_name(t), (TypeIsJustAlias(t) ? c_type_name(ut) : c_type_name(t))); fprintf (context->file, "#define %s__Free %s__Free\n", c_type_name(t), c_type_name(ut));
*** runtime/python/iluPrmodule.c 1997/05/10 02:41:08 --- 1.184 1997/05/13 04:17:34 *************** *** 1603,1609 **** return 0; } kobj = getKobjFromOtObject((PyInstanceObject *) inst, otr->kserver); - Py_DECREF(inst); return kobj; } --- 1603,1608 ----
*** runtime/kernel/iluxport.h Thu May 8 14:25:56 1997 --- iluxport.h Tue May 13 13:53:24 1997 *************** *** 34,42 **** --- 34,44 ---- #define ILU_PUBLIC __declspec(dllimport) extern #define ILU_PUBLIC_CLASS class __declspec(dllimport) #endif /* defined(ILU_BUILDING_KERNEL) */ + #define ILU_STDCALL __stdcall #else #define ILU_PUBLIC extern #define ILU_PUBLIC_CLASS class + #define ILU_STDCALL #endif /* defined(WIN32) */ #if (defined(WIN32)||defined(WIN16)) *************** *** 149,156 **** typedef ilu_refany ilu_Lock; /* slot for lock implementation's use */ ! typedef int (*ilu_RecvProc)(int,char*,int,int); ! typedef int (*ilu_SendProc)(int,const char*,int,int); typedef struct _ilu_IdentityInfo_s * ilu_IdentityInfo; typedef struct _ilu_IdentityType_s * ilu_IdentityType; --- 151,158 ---- typedef ilu_refany ilu_Lock; /* slot for lock implementation's use */ ! typedef int (ILU_STDCALL *ilu_RecvProc)(int,char*,int,int); ! typedef int (ILU_STDCALL *ilu_SendProc)(int,const char*,int,int); typedef struct _ilu_IdentityInfo_s * ilu_IdentityInfo; typedef struct _ilu_IdentityType_s * ilu_IdentityType;
*** stubbers/c/server.c 1997/04/02 08:26:08 --- 1.91 1997/05/14 00:49:59 *************** *** 592,601 **** fprintf(file, "#include \n\n"); fprintf(file, "#include \"%s.h\"\n\n", pc_interfacename); - - fprintf(file, "#ifdef ADD_VARIANT_SUPPORT\n"); - fprintf(file, "struct CORBA_any_s { CORBA_TypeCode _type; void *_value; ilu_Pickle _pickle; };\n\n"); - fprintf(file, "#endif /* ADD_VARIANT_SUPPORT */\n"); list_enumerate(parse->classes, generateServerClassTable, &context); --- 592,597 ---- *** runtime/c/iluchdrs.h 1997/04/26 07:29:15 --- 1.122 1997/05/14 00:53:11 *************** *** 121,134 **** typedef ilu_Exception ILU_C_ExceptionCode; - #ifdef ADD_VARIANT_SUPPORT - - typedef struct CORBA_any_s CORBA_any; - - #define ilu_any CORBA_any - - #endif /* ADD_VARIANT_SUPPORT */ - ILU_RUNTIME_PUBLIC void _ILU_C_InitializeCRuntime(void); /* called to do any runtime registration of types and/or other things --- 121,126 ---- *************** *** 284,289 **** --- 276,289 ---- type indicated by the TypeCode, and also free any internal pointers it holds */ /* CORBA any operations */ + + typedef struct CORBA_any_s { + CORBA_TypeCode _type; + void *_value; + ilu_Pickle _pickle; + } CORBA_any; + + #define ilu_any CORBA_any ILU_RUNTIME_PUBLIC CORBA_any * /* OPTIONAL, PASS */ ILU_C_Any_Create (CORBA_TypeCode, /* RETAIN */ *** runtime/c/ilu.c 1997/04/26 07:29:15 --- 1.170 1997/05/14 00:53:05 *************** *** 572,583 **** } #ifdef ADD_VARIANT_SUPPORT - - struct CORBA_any_s { - CORBA_TypeCode _type; /* NIL to indicate valid pickle instead of any */ - void * _value; /* if _type is non-NIL, points to LSR value; otherwise undefined */ - ilu_Pickle _pickle; /* if _type is NIL, contains ILU pickle; otherwise undefined */ - }; ilu_string CORBA_TypeCode_id (CORBA_TypeCode tc, ILU_C_ENVIRONMENT *env) { --- 572,577 ----
*** runtime/python/iluPrmodule.c 1997/05/13 19:58:17 1.2 --- iluPrmodule.c 1997/05/15 13:25:31 *************** *** 22,27 **** --- 22,29 ---- /* from ILU */ #include + #include + /* local */ #include "python.h" #include "ilualobject.h" *************** *** 2253,2259 **** return ilu_FALSE; stat = BOOLEAN((result != Py_None)); Py_DECREF(result); ! printf ("registerHandler, refcount on arg is %d\n", arg->ob_refcnt); return stat; } --- 2255,2262 ---- return ilu_FALSE; stat = BOOLEAN((result != Py_None)); Py_DECREF(result); ! /* ILU_NOTE(OBJECT_DEBUG, ! ("registerHandler, refcount on arg is %d\n", arg->ob_refcnt)); */ return stat; }
*** runtime/c/ilu.c 1997/05/14 00:53:05 --- 1.172 1997/05/17 03:57:40 *************** *** 4051,4057 **** found: ! #define GENERIC_ESIZE(type,fn) argSize = fn (call, *((type *) status->ptr), err); break if (ilu_CallNeedsSizing(call)) { argSize = ilu_BeginSizingException(call, eindex+1, err); --- 4051,4057 ---- found: ! #define GENERIC_ESIZE(type,fn) argSize += fn (call, *((type *) status->ptr), err); break if (ilu_CallNeedsSizing(call)) { argSize = ilu_BeginSizingException(call, eindex+1, err); *************** *** 4114,4134 **** /* Objects */ case 'p': ! argSize = _ILU_C_SizeOfObject (call, (ILU_C_Object *) status->ptr, *(evec[eindex].ed_class), ilu_FALSE, err); break; /* C String */ case 'q': ! argSize = ilu_SizeOfString (call, *((ilu_string *)(status->ptr)), strlen(*((ilu_string *)(status->ptr))), 0xFFFF, err); case 'z': ! argSize = (*evec[eindex].sizeFn)(call, status->ptr, err); break; default: ! argSize = 0; } if (ILU_ERRNOK(*err)) return; } --- 4114,4135 ---- /* Objects */ case 'p': ! argSize += _ILU_C_SizeOfObject (call, (ILU_C_Object *) status->ptr, *(evec[eindex].ed_class), ilu_FALSE, err); break; /* C String */ case 'q': ! argSize += ilu_SizeOfString (call, *((ilu_string *)(status->ptr)), strlen(*((ilu_string *)(status->ptr))), 0xFFFF, err); + break; case 'z': ! argSize += (*evec[eindex].sizeFn)(call, status->ptr, err); break; default: ! argSize += 0; } if (ILU_ERRNOK(*err)) return; } *************** *** 4202,4207 **** --- 4203,4209 ---- ilu_OutputString (call, *((ilu_string *) (status->ptr)), strlen(*((ilu_string *) (status->ptr))), 0xFFFF, err); + break; case 'z': (*evec[eindex].outFn)(call, status->ptr, err);
*** runtime/lisp/ilu-lisp-skin.c 1997/05/18 06:56:35 --- 1.5 1997/05/18 23:21:19 *************** *** 947,953 **** /* make sure all modules from libilu.a are included by referencing some routines */ ! #if !(defined(WIN32) || defined(linux)) void ______ilulisp_NeverCalled(void) { ilu_MXAClear(NULL, NULL); /* alarmux.c */ --- 947,953 ---- /* make sure all modules from libilu.a are included by referencing some routines */ ! #if !(defined(WIN32)) void ______ilulisp_NeverCalled(void) { ilu_MXAClear(NULL, NULL); /* alarmux.c */
*** runtime/java/IluJava_JMon.h.alter Thu May 8 14:26:15 1997 --- Fri May 16 16:04:45 1997 *************** *** 191,198 **** --- 191,204 ---- typedef struct sys_thread java_sys_thread_t; typedef java_sys_thread_t* ILUJAVA_SYSTHREAD_stPtr; + #ifdef WIN32 + #include #define ILUJAVA_SYSTHREAD_sysThreadSelf() \ + (ILUJAVA_SYSTHREAD_stPtr) threadSelf() + #else + #define ILUJAVA_SYSTHREAD_sysThreadSelf() \ (ILUJAVA_SYSTHREAD_stPtr) java_lang_Thread_currentThread(0) + #endif #define ILUJAVA_SYSTHREAD_javaThreadFromSysThread(sysThread) \ (void *) (sysThread) *** runtime/java/IluJava_IluInit.c Thu May 8 14:26:09 1997 --- Fri May 16 16:06:10 1997 *************** *** 79,84 **** --- 79,85 ---- } #else + #ifndef WIN32 extern int _read(int,char*,int); extern int _write(int,const char*,int); *************** *** 102,107 **** --- 103,109 ---- } #endif + #endif EXPORTJAVA void *************** *** 109,115 **** --- 111,119 ---- struct Hxerox_ilu_IluInit2 * unused ) { + #ifndef WIN32 fixIO(); + #endif DEBUGPRINT("start"); _ilujava_LockTechInit(); /*ilu wants this early*/ DEBUGPRINT("did LT"); *** runtime/java/IluJava_JOps.c Thu May 8 14:26:07 1997 --- Fri May 16 16:06:20 1997 *************** *** 151,157 **** */ { while (len) { ! *dst++ = *src++; len--; } } --- 151,157 ---- */ { while (len) { ! *dst++ = (char) *src++; len--; } } *** runtime/java/IluJava_selectwt.c Thu May 8 14:26:09 1997 --- Fri May 16 16:06:24 1997 *************** *** 58,59 **** --- 58,60 ---- { + #ifndef WIN32 if (fd >= FD_SETSIZE) { *************** *** 61,62 **** --- 62,64 ---- } + #endif if (debug) {
*** stubbers/idl2isl/idl2isl.mak Thu May 15 09:03:21 1997 --- Mon May 19 14:43:30 1997 *************** *** 145,151 **** # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"$(ILUHOME)\bin\idl2isl.exe" LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ ! odbccp32.lib /nologo /subsystem:console /incremental:no\ /pdb:"$(OUTDIR)/idl2isl.pdb" /machine:I386 /out:"$(ILUHOME)\bin\idl2isl.exe" LINK32_OBJS= \ "$(INTDIR)\ast_argument.obj" \ --- 145,151 ---- # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"$(ILUHOME)\bin\idl2isl.exe" LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ ! odbccp32.lib /nologo /subsystem:console /incremental:no /opt:noicf\ /pdb:"$(OUTDIR)/idl2isl.pdb" /machine:I386 /out:"$(ILUHOME)\bin\idl2isl.exe" LINK32_OBJS= \ "$(INTDIR)\ast_argument.obj" \
*** runtime/kernel/iluwin.h Thu May 8 14:25:57 1997 --- Thu May 22 10:29:33 1997 *************** *** 265,269 **** --- 265,272 ---- /* boost default winsock number of fds from the default of 64 */ #define FD_SETSIZE 256 + /* Define this if the idl2isl parser has been built */ + #define ADD_IDL_SUPPORT 1 + #endif /* _ilu_win_h_ */
*** 1.1 1997/05/29 01:37:46 --- runtime/lisp/ilu-macros.lisp 1997/05/29 01:38:35 *************** *** 896,911 **** (watch-outgoing-connection ,new-conn)) (ilu_start-request ,call ! (+ ,@(remove-nils (mapcar #'(lambda (dir type name) (if (or (eq dir :in) (eq dir :inout)) (make-size-form call type name))) other-arg-dirs other-arg-types other-arg-names)) ! ,(if singleton-p ! 0 ! `(object-id-size ! ,call (kernel-obj ,self) 1 ,class-record nil)))) ,@(unless singleton-p ;; At this point we are Inside the server of the ;; object, so we can just use the cached kernel object, --- 896,912 ---- (watch-outgoing-connection ,new-conn)) (ilu_start-request ,call ! (+ ,(if singleton-p ! 0 ! `(object-id-size ! ,call (kernel-obj ,self) 1 ,class-record nil)) ! ,@(remove-nils (mapcar #'(lambda (dir type name) (if (or (eq dir :in) (eq dir :inout)) (make-size-form call type name))) other-arg-dirs other-arg-types other-arg-names)) ! )) ,@(unless singleton-p ;; At this point we are Inside the server of the ;; object, so we can just use the cached kernel object,
*** 1.108 1997/05/14 01:09:12 --- stubbers/c/cheaders.c 1997/05/23 07:56:58 *************** *** 967,972 **** --- 967,974 ---- list_enumerate (m->arguments, (iluparser_EnumProc) sortArgTypes, sorted); } + static boolean sortingForTypedef; + static void sortTypesForDeclaration (Type type, list sorted) { enum PrimitiveTypes t; *************** *** 1001,1007 **** switch (t) { case record_Type: ! list_enumerate (type_description (type)->structuredDes.record, (iluparser_EnumProc) sortArgTypes, sorted); break; case alias_Type: --- 1003,1010 ---- switch (t) { case record_Type: ! if (!sortingForTypedef) ! list_enumerate (type_description (type)->structuredDes.record, (iluparser_EnumProc) sortArgTypes, sorted); break; case alias_Type: *************** *** 1046,1051 **** --- 1049,1058 ---- } } + static void printSortedTypes (Type t, void * junk) + { + fprintf (stderr, "%s\n", type_name(t)); + } void generateCHeaders (Interface interface, FILE *file) { *************** *** 1101,1117 **** } SortContextInterface = interface; list_enumerate (interface->types, (iluparser_EnumProc) sortTypesForDeclaration, sorted); ! /* list_enumerate (sorted, (iluparser_EnumProc) printSortedTypes, NULL); fprintf (file, "\n"); - */ if (list_size(sorted) > 0) { fprintf (file, "/*======================================================================*/\n"); fprintf (file, "/*========================= typedefs ===================================*/\n\n"); list_enumerate (sorted, (iluparser_EnumProc) typedefType, &context); fprintf (file, "\n\n"); fprintf (file, "/*======================================================================*/\n"); fprintf (file, "/*=============== non-object type declarations =========================*/\n\n"); list_enumerate (sorted, (iluparser_EnumProc) declareType, &context); --- 1108,1135 ---- } SortContextInterface = interface; + sortingForTypedef = 1; list_enumerate (interface->types, (iluparser_EnumProc) sortTypesForDeclaration, sorted); ! /* list_enumerate (sorted, (iluparser_EnumProc) printSortedTypes, NULL); + */ fprintf (file, "\n"); if (list_size(sorted) > 0) { fprintf (file, "/*======================================================================*/\n"); fprintf (file, "/*========================= typedefs ===================================*/\n\n"); list_enumerate (sorted, (iluparser_EnumProc) typedefType, &context); fprintf (file, "\n\n"); + list_clear(sorted, FALSE); + }; + SortContextInterface = interface; + sortingForTypedef = 0; + list_enumerate (interface->types, (iluparser_EnumProc) sortTypesForDeclaration, sorted); + /* + list_enumerate (sorted, (iluparser_EnumProc) printSortedTypes, NULL); + */ + fprintf (file, "\n"); + if (list_size(sorted) > 0) { fprintf (file, "/*======================================================================*/\n"); fprintf (file, "/*=============== non-object type declarations =========================*/\n\n"); list_enumerate (sorted, (iluparser_EnumProc) declareType, &context);
*** 2.0alpha10 Thu May 8 14:25:59 1997 --- runtime/kernel/types.c Thu May 22 15:57:16 1997 *************** *** 675,682 **** n->desc.Union.arms[arm_index].base.name = ilu_StrdupE(arm_name, err); if (ILU_ERRNOK(*err)) return ilu_FALSE; n->desc.Union.arms[arm_index].n_values = n_values; ! n->desc.Union.arms[arm_index].values = ! (ilu_ConstantValue_s *) ilu_MallocE(sizeof(ilu_ConstantValue_s) * n_values, err); if (ILU_ERRNOK(*err)) { ilu_free(n->desc.Union.arms[arm_index].base.name); return ilu_FALSE; }; AssignTypeForUID (arm_type_uid, &(n->desc.Union.arms[arm_index].base.type), err); if (ILU_ERRNOK(*err)) { --- 675,685 ---- n->desc.Union.arms[arm_index].base.name = ilu_StrdupE(arm_name, err); if (ILU_ERRNOK(*err)) return ilu_FALSE; n->desc.Union.arms[arm_index].n_values = n_values; ! if (n_values > 0) ! n->desc.Union.arms[arm_index].values = ! (ilu_ConstantValue_s *) ilu_MallocE(sizeof(ilu_ConstantValue_s) * n_values, err); ! else ! n->desc.Union.arms[arm_index].values = NIL; if (ILU_ERRNOK(*err)) { ilu_free(n->desc.Union.arms[arm_index].base.name); return ilu_FALSE; }; AssignTypeForUID (arm_type_uid, &(n->desc.Union.arms[arm_index].base.type), err); if (ILU_ERRNOK(*err)) {
*** 2.22 1997/05/20 22:37:30 --- stubbers/idl2isl/isl_be/be_gen_isl.cc 1997/07/01 03:45:03 *************** *** 2639,2643 **** dst = stringCopy(dst, iterator.item()->get_string()); } *dst = 0; ! return translatedName(newString(buffer)); } --- 2639,2643 ---- dst = stringCopy(dst, iterator.item()->get_string()); } *dst = 0; ! return newString(buffer); }
*** runtime/python/iluRt.py Tue Jul 1 20:24:53 1997 --- new Tue Jul 1 20:26:40 1997 *************** *** 304,310 **** print "ILU runtime caught exception in `" + where + "':" traceback.print_exc() ! SetCalloutExceptionHandler (DefaultCalloutExceptionHandler) # define the built-in class ilu.CORBA-Object for OMG IDL support --- 304,310 ---- print "ILU runtime caught exception in `" + where + "':" traceback.print_exc() ! # SetCalloutExceptionHandler (DefaultCalloutExceptionHandler) # define the built-in class ilu.CORBA-Object for OMG IDL support
*** 1.63 1997/04/26 07:30:00 --- runtime/kernel/port.c 1997/07/10 01:10:39 *************** *** 189,195 **** ilu_Error lerr; ilu_string peerinfo = NIL; ilu_Passport pp; - ilu_boolean keepPP = FALSE; *closed = FALSE; pp = ilu_CreatePassport(NIL, err); --- 189,194 ---- *************** *** 219,224 **** --- 218,225 ---- ILU_NOTE(CONNECTION_DEBUG, ("HandleNewConnection: FD budget exhausted.\n")); _ilu_ReleaseMutex(ilu_cmu); + ilu_DestroyPassport(pp,&lerr); + ILU_HANDLED(lerr); return NIL; } _ilu_AcquireServerMutex(s); *************** *** 240,251 **** transport_close(t, &cdfd, err); ilu_DeltaFD(-cdfd); } ! if (ILU_ERROK(*err)) ! ilu_DestroyPassport(pp, err); ! } else if (t == NIL) { ! ilu_DestroyPassport(pp, err); ! } else { ! keepPP = TRUE; c = _ilu_CreateConnection(t, NIL, peerinfo, port_protocol(port), port->po_pinfo, port, port_server(port), pp, err); --- 241,247 ---- transport_close(t, &cdfd, err); ilu_DeltaFD(-cdfd); } ! } else if (t != NIL) { c = _ilu_CreateConnection(t, NIL, peerinfo, port_protocol(port), port->po_pinfo, port, port_server(port), pp, err); *************** *** 255,260 **** --- 251,258 ---- port, c, (peerinfo == NIL) ? "NIL peerinfo!" : peerinfo, server_id(s))); + if (ILU_ERRNOK(*err)) + c = NIL; } dun4: ilu_free(peerinfo); *************** *** 265,272 **** _ilu_ReleaseServerMutex(s); dun1: _ilu_ReleaseMutex(ilu_cmu); ! if (pp && !keepPP) { ! ilu_Error lerr; ilu_DestroyPassport(pp, &lerr); ILU_HANDLED(lerr); } --- 263,269 ---- _ilu_ReleaseServerMutex(s); dun1: _ilu_ReleaseMutex(ilu_cmu); ! if ((pp != NIL) && (c == NIL)) { ilu_DestroyPassport(pp, &lerr); ILU_HANDLED(lerr); }
*** runtime/kernel/newtcp.c 1997/04/26 07:30:00 --- 1.68 1997/06/11 07:56:58 *************** *** 362,373 **** ILU_ERRS((IoErrs)) * err) { ilu_cardinal rem = self->tr_outLimit - self->tr_outNext; - ilu_boolean direct; ! direct = (bufferSize >= DIRECT_THRESHOLD || flush && bufferSize > rem ! || self->tr_outBuff == NIL); ! if (direct) { if (self->tr_outNext > 0) { if (!Write(self, self->tr_outBuff, self->tr_outNext, err)) return FALSE; --- 362,378 ---- ILU_ERRS((IoErrs)) * err) { ilu_cardinal rem = self->tr_outLimit - self->tr_outNext; ! if ((bufferSize >= DIRECT_THRESHOLD) ! /* big enough that copy would take longer than write() system call */ ! || (flush && (bufferSize > rem)) ! || (!flush && (bufferSize > (rem + self->tr_outLimit - 16))) ! /* going to need two writes anyway, so avoid copy */ ! ! || (self->tr_outBuff == NIL) ! /* no internal buffer to copy into, so can't copy */ ! ) { if (self->tr_outNext > 0) { if (!Write(self, self->tr_outBuff, self->tr_outNext, err)) return FALSE; *************** *** 375,387 **** } if (!Write(self, b, bufferSize, err)) return FALSE; } else { ilu_cardinal l1 = MIN(rem, bufferSize); memcpy((void*)(self->tr_outBuff + self->tr_outNext), (void*)b, l1); b += l1; bufferSize -= l1; self->tr_outNext += l1; ! if (flush || self->tr_outNext == self->tr_outLimit) { if (!Write(self, self->tr_outBuff, self->tr_outNext, err)) return FALSE; self->tr_outNext = 0; --- 380,393 ---- } if (!Write(self, b, bufferSize, err)) return FALSE; + /* empty exposed buffer, so at least 16 bytes */ } else { ilu_cardinal l1 = MIN(rem, bufferSize); memcpy((void*)(self->tr_outBuff + self->tr_outNext), (void*)b, l1); b += l1; bufferSize -= l1; self->tr_outNext += l1; ! if (flush || ((self->tr_outNext + 16) > self->tr_outLimit)) { if (!Write(self, self->tr_outBuff, self->tr_outNext, err)) return FALSE; self->tr_outNext = 0; *************** *** 391,396 **** --- 397,405 ---- self->tr_outNext += bufferSize; } } + _ilu_Assert(((self->tr_outBuff == ILU_NIL)|| + ((self->tr_outLimit - self->tr_outNext) >= 16)), + "_tcp_WriteBytes returns with fewer than 16 free bytes in buffer"); return ILU_CLER(*err); }
*** runtime/kernel/object.c Tue Jul 15 12:07:29 1997 --- Tue Jul 15 11:55:12 1997 *************** *** 1175,1180 **** --- 1175,1182 ---- ilu_boolean status = FALSE; ILU_ERRS((IoErrs, bad_locks, inv_objref, no_resources)) lerr; + *new_conn = NIL; + if (class_singleton(pclass)) return (ilu_FALSE);
*** stubbers/c/cheaders.c Wed Jul 16 12:52:04 1997 --- new Wed Jul 16 12:50:50 1997 *************** *** 623,631 **** static void generateArrayTypedef (Type t, Context context, boolean slice) { TypeDescription d = type_description (t); ! Type et = d->structuredDes.array.type; fprintf (context->file, "typedef "); ! switch (type_ur_kind(et)) { case void_Type: case integer_Type: case cardinal_Type: --- 623,631 ---- static void generateArrayTypedef (Type t, Context context, boolean slice) { TypeDescription d = type_description (t); ! Type et = ur_type(d->structuredDes.array.type); fprintf (context->file, "typedef "); ! switch (type_kind(et)) { case void_Type: case integer_Type: case cardinal_Type:
*** stubbers/c/code.c Wed Jul 16 15:21:11 1997 --- Wed Jul 16 15:23:23 1997 *************** *** 401,414 **** DimStop = -1; } else ! { fprintf (context->file, " ilu_OutputArray (_call, %lu, _err); if (ILU_ERRNOK(*_err)) return;\n", size); DimStop = -1; DimCount = 0; list_enumerate(dims, dimHeader, context); sprintf(buf, "%s_val", ! ((etk == record_Type || etk == union_Type || etk == pickle_Type || ! (etk == sequence_Type && !TypeIsEitherString(et)))) ? "&" : ""); DimCount = 0; list_enumerate (dims, dimRef, buf); --- 401,415 ---- DimStop = -1; } else ! { ! TypeKind eurtk = type_ur_kind(et); fprintf (context->file, " ilu_OutputArray (_call, %lu, _err); if (ILU_ERRNOK(*_err)) return;\n", size); DimStop = -1; DimCount = 0; list_enumerate(dims, dimHeader, context); sprintf(buf, "%s_val", ! ((eurtk == record_Type || eurtk == union_Type || eurtk == pickle_Type || ! (eurtk == sequence_Type && !TypeIsEitherString(et)))) ? "&" : ""); DimCount = 0; list_enumerate (dims, dimRef, buf);
*** stubbers/c/common.c Wed Jul 16 15:29:40 1997 --- Wed Jul 16 15:33:44 1997 *************** *** 62,67 **** --- 62,68 ---- TypeDescription d = type_description(type); return (t == sequence_Type || (t == pickle_Type) || + (t == object_Type) || (t == array_Type && VariableLength(d->structuredDes.array.type)) || (t == record_Type && HasVarField(d->structuredDes.record)) || (t == union_Type && HasVarField(d->structuredDes.uniond.types)));
*** runtime/java/IluCall.java Thu May 8 14:26:07 1997 --- Mon Jul 21 22:17:55 1997 *************** *** 176,182 **** //a true object... IluClassRep iluClass = IluClassAccess.iluClassFromJavaClass(obj.getClass()); ! if (iluClass != null & staticClass.isA(iluClass)) { IluRT0.registerTrueObject( null, //ih obj, --- 176,182 ---- //a true object... IluClassRep iluClass = IluClassAccess.iluClassFromJavaClass(obj.getClass()); ! if (iluClass != null & iluClass.isA(staticClass)) { IluRT0.registerTrueObject( null, //ih obj, *** runtime/java/IluClassRep.java Thu May 8 14:26:08 1997 --- Mon Jul 21 22:22:55 1997 *************** *** 347,353 **** if (this == a) return true; if (a == IluRootClassObjects_stub.rootClass) return true; for (int i = 0; i Joachim Achtzehnter notes bug in sbilu.c PublishObject(). *** runtime/kernel/sbilu.c 1997/06/13 17:06:52 --- 1997/08/22 03:49:03 *************** *** 694,700 **** /* ILU_C_ENVIRONMENT env; */ char *proof; char *sbh; ! char *mstid; ilu_Error err; if (!InitializeSimpleBinding(obj)) --- 694,701 ---- /* ILU_C_ENVIRONMENT env; */ char *proof; char *sbh; ! ilu_Server server; ! ilu_Class type; ilu_Error err; if (!InitializeSimpleBinding(obj)) *************** *** 707,715 **** obj)); return (NIL); } else { ! ilu_ReleaseMutex(ilu_cmu); /* necessary for BeginCall */ proof = _ilu_Publish_stub(_sb, sbh, &err); - ilu_AcquireMutex(ilu_cmu); if (ILU_ERRNOK(err)) { ILU_NOTE(BINDING_DEBUG | EXPORT_DEBUG, --- 708,718 ---- obj)); return (NIL); } else { ! server = object_server(obj); ! type = object_class(obj); ! ilu_DHolds(obj, +1); ! ilu_ExitServer(server, type); proof = _ilu_Publish_stub(_sb, sbh, &err); if (ILU_ERRNOK(err)) { ILU_NOTE(BINDING_DEBUG | EXPORT_DEBUG, *************** *** 717,729 **** sbh, ILU_ERR_NAME(err))); ILU_HANDLED(err); } ! ilu_ExitServer(object_server(obj), object_class(obj)); return (proof); } } - - /*before: Inside(s, cl) after: L1 disjoint {cmu, s}; after: cl collectible => L1 not >= {gcmu}; --- 720,732 ---- sbh, ILU_ERR_NAME(err))); ILU_HANDLED(err); } ! ilu_EnterServer(server, type); ! ilu_DeltaHolds(obj, -1); ! ilu_ExitServer(server, type); return (proof); } } /*before: Inside(s, cl) after: L1 disjoint {cmu, s}; after: cl collectible => L1 not >= {gcmu}; *************** *** 732,746 **** (We don't really need to hold cmu for surrogate or non-collectible objects, but this is convenient because ilu_Enter/ExitServer can be used.)*/ - /* To make the stub call, cmu is released and reacquired. - (Out of order. Exit obj's server after getting the sbh, instead?) - */ ilu_boolean ilu_WithdrawObject(ilu_Object obj, PASS(char *) ownership_proof) { char *sbh; - char *oid; ilu_boolean result = ilu_FALSE; ilu_Error err; /* Get oid of published obj */ --- 735,747 ---- (We don't really need to hold cmu for surrogate or non-collectible objects, but this is convenient because ilu_Enter/ExitServer can be used.)*/ ilu_boolean ilu_WithdrawObject(ilu_Object obj, PASS(char *) ownership_proof) { char *sbh; ilu_boolean result = ilu_FALSE; + ilu_Server server; + ilu_Class type; ilu_Error err; /* Get oid of published obj */ *************** *** 750,759 **** obj)); return (ilu_FALSE); } else { ! ! ilu_ReleaseMutex(ilu_cmu); /* necessary for BeginCall */ result = _ilu_Withdraw_stub(_sb, sbh, ownership_proof, &err); - ilu_AcquireMutex(ilu_cmu); if (ILU_ERRNOK(err)) { ILU_NOTE(BINDING_DEBUG | EXPORT_DEBUG, --- 751,761 ---- obj)); return (ilu_FALSE); } else { ! server = object_server(obj); ! type = object_class(obj); ! ilu_DHolds(obj, +1); ! ilu_ExitServer(server, type); result = _ilu_Withdraw_stub(_sb, sbh, ownership_proof, &err); if (ILU_ERRNOK(err)) { ILU_NOTE(BINDING_DEBUG | EXPORT_DEBUG, *************** *** 763,769 **** return ilu_FALSE; } ilu_free(ownership_proof); ! ilu_ExitServer(object_server(obj), object_class(obj)); return result; } } --- 765,773 ---- return ilu_FALSE; } ilu_free(ownership_proof); ! ilu_EnterServer(server, type); ! ilu_DeltaHolds(obj, -1); ! ilu_ExitServer(server, type); return result; } }
*** runtime/kernel/sbilu.c 1997/06/13 17:06:52 --- 1997/08/22 03:49:03 *************** *** 694,700 **** /* ILU_C_ENVIRONMENT env; */ char *proof; char *sbh; ! char *mstid; ilu_Error err; if (!InitializeSimpleBinding(obj)) --- 694,701 ---- /* ILU_C_ENVIRONMENT env; */ char *proof; char *sbh; ! ilu_Server server; ! ilu_Class type; ilu_Error err; if (!InitializeSimpleBinding(obj)) *************** *** 707,715 **** obj)); return (NIL); } else { ! ilu_ReleaseMutex(ilu_cmu); /* necessary for BeginCall */ proof = _ilu_Publish_stub(_sb, sbh, &err); - ilu_AcquireMutex(ilu_cmu); if (ILU_ERRNOK(err)) { ILU_NOTE(BINDING_DEBUG | EXPORT_DEBUG, --- 708,718 ---- obj)); return (NIL); } else { ! server = object_server(obj); ! type = object_class(obj); ! ilu_DHolds(obj, +1); ! ilu_ExitServer(server, type); proof = _ilu_Publish_stub(_sb, sbh, &err); if (ILU_ERRNOK(err)) { ILU_NOTE(BINDING_DEBUG | EXPORT_DEBUG, *************** *** 717,729 **** sbh, ILU_ERR_NAME(err))); ILU_HANDLED(err); } ! ilu_ExitServer(object_server(obj), object_class(obj)); return (proof); } } - - /*before: Inside(s, cl) after: L1 disjoint {cmu, s}; after: cl collectible => L1 not >= {gcmu}; --- 720,732 ---- sbh, ILU_ERR_NAME(err))); ILU_HANDLED(err); } ! ilu_EnterServer(server, type); ! ilu_DeltaHolds(obj, -1); ! ilu_ExitServer(server, type); return (proof); } } /*before: Inside(s, cl) after: L1 disjoint {cmu, s}; after: cl collectible => L1 not >= {gcmu}; *************** *** 732,746 **** (We don't really need to hold cmu for surrogate or non-collectible objects, but this is convenient because ilu_Enter/ExitServer can be used.)*/ - /* To make the stub call, cmu is released and reacquired. - (Out of order. Exit obj's server after getting the sbh, instead?) - */ ilu_boolean ilu_WithdrawObject(ilu_Object obj, PASS(char *) ownership_proof) { char *sbh; - char *oid; ilu_boolean result = ilu_FALSE; ilu_Error err; /* Get oid of published obj */ --- 735,747 ---- (We don't really need to hold cmu for surrogate or non-collectible objects, but this is convenient because ilu_Enter/ExitServer can be used.)*/ ilu_boolean ilu_WithdrawObject(ilu_Object obj, PASS(char *) ownership_proof) { char *sbh; ilu_boolean result = ilu_FALSE; + ilu_Server server; + ilu_Class type; ilu_Error err; /* Get oid of published obj */ *************** *** 750,759 **** obj)); return (ilu_FALSE); } else { ! ! ilu_ReleaseMutex(ilu_cmu); /* necessary for BeginCall */ result = _ilu_Withdraw_stub(_sb, sbh, ownership_proof, &err); - ilu_AcquireMutex(ilu_cmu); if (ILU_ERRNOK(err)) { ILU_NOTE(BINDING_DEBUG | EXPORT_DEBUG, --- 751,761 ---- obj)); return (ilu_FALSE); } else { ! server = object_server(obj); ! type = object_class(obj); ! ilu_DHolds(obj, +1); ! ilu_ExitServer(server, type); result = _ilu_Withdraw_stub(_sb, sbh, ownership_proof, &err); if (ILU_ERRNOK(err)) { ILU_NOTE(BINDING_DEBUG | EXPORT_DEBUG, *************** *** 763,769 **** return ilu_FALSE; } ilu_free(ownership_proof); ! ilu_ExitServer(object_server(obj), object_class(obj)); return result; } } --- 765,773 ---- return ilu_FALSE; } ilu_free(ownership_proof); ! ilu_EnterServer(server, type); ! ilu_DeltaHolds(obj, -1); ! ilu_ExitServer(server, type); return result; } }