]> git.buserror.net Git - polintos/scott/priv.git/commitdiff
build fixes
authorScott Wood <scott@buserror.net>
Tue, 26 Jun 2007 17:39:28 +0000 (13:39 -0400)
committerScott Wood <scott@buserror.net>
Tue, 26 Jun 2007 17:39:28 +0000 (13:39 -0400)
idlcomp/TODO
include/c++/orb.h
include/c++/util/radix.h
kernel/orb/invoke.cc
lib/c++/orb.cc

index 36123ad90309a669229a2bc299274dd31dffe1cf..fa745f281c2bda40c5b0f71534de2622b89d13e3 100644 (file)
@@ -30,8 +30,7 @@ Methods can be specified as read-only; a read-only version of the
 interface is then generated, and a secure read-only reference to an
 object can be generated that can only access read-only methods.  This
 would save effort declaring a separate interface and a separate
-class, and would allow the read-write interface to use the read-only
-methods without retreiving the read-only object.
+class.
 
 Implement marshalling/unmarshalling stubs.
 
@@ -51,5 +50,3 @@ Possibly implement out parameters on remote-only async methods that
 can only be used when invoked as a sync in-process method; the method
 implementation can check to see how it was invoked, and use the out
 parameters to avoid having to make a completion callback.
-
-Vstructs need a length field.
index 076f1ddea6e22aa4462ac40054ed6171bb08a7cb..23f0b72571ad07e544855e6d7c26748c2ccb456e 100644 (file)
@@ -254,16 +254,12 @@ namespace System {
                        // Length of inheritance chain; 1 for System.VStruct
                        
                        const int chainlen;
-                       
-                       // Size of concrete vstruct
-                       
-                       const int structlen;
                };
                
                uintptr_t downcast(::System::_i_Object *obj,
                                   const unsigned long *new_guid);
 
-               typedef u64 GUID[2];
+               typedef uint64_t GUID[2];
 
                // FIXME: use above typedef
                static inline bool guids_equal(const unsigned long *guid1,
@@ -343,15 +339,6 @@ namespace System {
                                return false;
 #endif
                        }
-
-                       typedef void (*MethodEntry)(ParamInfoBlock *pib);
-
-                       struct Object {
-                               MethodEntry entry;
-                               void *ptr; // pointer to the class interface
-                       };
-
-                       typedef Util::RadixTree<Object, ID, 6> ObjTable;
                }
        };
 }
@@ -393,7 +380,7 @@ inline void operator delete[](void *ptr, ::System::RunTime::ORBMM *orbmm,
        throw T(NULL, NULL, \
                new(::System::RunTime::orbmm) \
                   ::System::Exceptions::NativeCodeExceptionOriginInfo \
-                  (::System::RunTime::get_pc()), \
+                  (::System::RunTime::Priv::get_pc()), \
                ::System::RunTime::Priv::in_kernel(), ##args); \
 } while (0)
 
@@ -401,7 +388,7 @@ inline void operator delete[](void *ptr, ::System::RunTime::ORBMM *orbmm,
        throw T(new(::System::RunTime::orbmm) typeof(oldex)(oldex), NULL, \
                new(::System::RunTime::orbmm) \
                   ::System::Exceptions::NativeCodeExceptionOriginInfo \
-                  (::System::RunTime::get_pc()), \
+                  (::System::RunTime::Priv::get_pc()), \
                ::System::RunTime::Priv::in_kernel(), ##args); \
 } while (0)
 #endif
index 3dcaaaf993a156099a968b76517215449ac2d910..c3ab842c82748e710061a832fffaec2370d5a19c 100644 (file)
@@ -11,7 +11,6 @@
 #ifndef _UTIL_RADIX_H
 #define _UTIL_RADIX_H
 
-#include <assert.h>
 #include <stddef.h>
 #include <stdint.h>
 
@@ -65,7 +64,7 @@ namespace Util {
                        return (key >> shift) & (dir_size - 1);
                }
 
-               static uint key_to_offset(Key key)
+               static unsigned int key_to_offset(Key key)
                {
                        return key & (node_size - 1);
                }
index 8d4f3eb96370a03fab278e4edbd06eb29b49e9bb..7fffb61ef2fde1bb1b8c00e17abea2aec434bcf5 100644 (file)
@@ -158,7 +158,7 @@ namespace ORB {
                printf("invoke_method: pib %p\n", user_pib);
        
                ParamInfoBlock pib = Arch::copyin(user_pib);
-               printf("objlist len %lu\n", pib.objlist_len);
+               printf("objlist len %u\n", pib.objlist_len);
                
                if (pib.objlist_len == 0)
                        throw_idl(InvalidArgument, 0, countarray("no objects"));
@@ -194,7 +194,7 @@ namespace ORB {
                        u8 *copy = new(orbmm) u8[pib.copy_size];
                        ParamInfoBlock *dpib = reinterpret_cast<ParamInfoBlock *>
                                               (args + piboff);
-                       dpib->objlist = reinterpret_cast<uintptr_t *>(args + datalen);
+                       dpib->objlist = reinterpret_cast<ID *>(args + datalen);
                        
                        copy_ids_to_kern(dpib, &pib, ids);
                        copy_data(args, args, pib.buffer_size, dpib, &pib, ~0U, Segment::In);
index 26f3fc2731b4a74039a3fe84e1726b49b7925136..852919b6b8d8b50ba3be521473fc9423a090f8b4 100644 (file)
@@ -1,8 +1,9 @@
 #include <System.h>
+#include <util/radix.h>
 
 namespace System {
 namespace RunTime {
-       using ::System::Exceptions::Std;
+       using namespace ::System::Exceptions::Std;
 
        // This function could be made to do a binary search if we can
        // manage to somehow sort the IFaceTables...
@@ -51,6 +52,14 @@ namespace RunTime {
        
 
        namespace Priv {
+               typedef void (*MethodEntry)(ParamInfoBlock *pib);
+
+               struct Object {
+                       MethodEntry entry;
+                       void *ptr; // pointer to the class interface
+               };
+
+               typedef Util::RadixTree<Object, ID, 6> ObjTable;
                ObjTable objtable;
 
                unsigned long get_pc()
@@ -60,44 +69,48 @@ namespace RunTime {
 
                void exception_to_array(::System::VStruct *ex, Array<uint8_t> *ar)
                {
-                       ar->ptr = reinterpret_cast<uint8_t *>(ex);
-                       ar->count = ex->_infoptr->structlen;
+                       // FIXME
+//                     ar->ptr = reinterpret_cast<uint8_t *>(ex);
+//                     ar->count = ex->_infoptr->structlen;
                }
                
-               void handle_message(ParameterInfoBlock *pib)
+               void handle_message(ParamInfoBlock *pib)
                {
                        Message *msg = reinterpret_cast<Message *>(pib->segments[0].ptr);
                
-                       switch (seg0->opcode) {
+                       switch (msg->seg0.opcode) {
                                case Segment0::InvokeMethod: {
-                                       if (pib->segments[0].len < sizeof(InvokeMessage))
+                                       if (pib->segments[0].len < sizeof(InvokeMethod))
                                                throw_idl(ShortMessage, 0, pib->segments[0].len,
-                                                         sizeof(InvokeMessage));
+                                                         sizeof(InvokeMethod));
        
-                                       ID obj = pib->objlist[0];
+               //                      ID obj = pib->objlist[0];
                                        
                                        
                                        break;
                                }
                                
                                default:
-                                       throw_idl(InvalidOpcode, seg0->opcode);
+                                       throw_idl(InvalidOpcode, msg->seg0.opcode);
                        }
                }
        }
 }}
 
-extern "C" handle_message(ParameterInfoaBlock *pib, Array<uint8_t> *ex_arr)
+extern "C" void abort();
+
+extern "C" void handle_message(::System::RunTime::ParamInfoBlock *pib,
+                               ::System::RunTime::Array<uint8_t> *ex_arr)
 {
        try {
-               ::System::RunTime::handle_message(pib);
+               ::System::RunTime::Priv::handle_message(pib);
        }
        
-       catch (::System::Exception *ex) {
-               exception_to_array(ex, ex_arr);
+       catch (::System::Exceptions::Exception *ex) {
+               ::System::RunTime::Priv::exception_to_array(ex, ex_arr);
        }
        
        catch (...) {
-               assertl(0, Assert::Always);
+               abort();
        }
 }