]> git.buserror.net Git - polintos/scott/priv.git/blobdiff - lib/c++/orb.cc
fixes/cleanup
[polintos/scott/priv.git] / lib / c++ / orb.cc
index 31f5cf3cfba2a82d824c8ae55f32c8bf5e8ab7fc..8533f52347146f677a142a539cca850b675819e3 100644 (file)
@@ -7,9 +7,7 @@ namespace RunTime {
 
        // This function could be made to do a binary search if we can
        // manage to somehow sort the IFaceTables...
-
-       uintptr_t downcast(::System::_i_Object *obj,
-                          const unsigned long *new_guid)
+       uintptr_t downcast(::System::_i_Object *obj, const GUID *new_guid)
        {
                if (!obj)
                        return 0;
@@ -20,7 +18,7 @@ namespace RunTime {
                        unsupported_long_size();
 
                IFaceTable *tbl = obj->info->concrete_IFaceTable;
-               unsigned long new_guid_first = *new_guid;
+               unsigned long new_guid_first = new_guid->l[0];
                
                // This doesn't use guids_equal(), as that would eliminate the
                // ability to cache the first word of new_guid.  The compiler
@@ -30,15 +28,15 @@ namespace RunTime {
                // behaves.
                
                while (true) {
-                       if (tbl->info->guid[0] == new_guid_first &&
-                           tbl->info->guid[1] == new_guid[1] &&
+                       if (tbl->info->guid->l[0] == new_guid_first &&
+                           tbl->info->guid->l[1] == new_guid->l[1] &&
                            (sizeof(long) == 8 ||
-                            (tbl->info->guid[2] == new_guid[2] &&
-                             tbl->info->guid[3] == new_guid[3])))
+                            (tbl->info->guid->l[2] == new_guid->l[2] &&
+                             tbl->info->guid->l[3] == new_guid->l[3])))
                                break;                          
 
                        tbl++;
-                       if (__builtin_expect(!tbl->info->guid, 0))
+                       if (__builtin_expect(!tbl->info->guid->l[0], 0))
                                return 0;
                }
        
@@ -49,7 +47,6 @@ namespace RunTime {
                
                return ptr;
        };
-       
 
        namespace Priv {
                typedef void (*MethodEntry)(ParamInfoBlock *pib);
@@ -59,8 +56,8 @@ namespace RunTime {
                        void *ptr; // pointer to the class interface
                };
 
-               typedef Util::RadixTree<Object, ID, 6> ObjTable;
-               ObjTable objtable;
+               typedef ::Util::RadixTree<Object, ID, 6> ObjTable;
+//             ObjTable objtable;
 
                unsigned long get_pc()
                {
@@ -69,9 +66,7 @@ namespace RunTime {
 
                void exception_to_array(::System::VStruct *ex, Array<uint8_t> *ar)
                {
-                       // FIXME
-//                     ar->ptr = reinterpret_cast<uint8_t *>(ex);
-//                     ar->count = ex->_infoptr->structlen;
+                       // FIXME: marshall struct
                }
                
                void handle_message(ParamInfoBlock *pib)
@@ -84,9 +79,7 @@ namespace RunTime {
                                                throw_idl(ShortMessage, 0, pib->segments[0].len,
                                                          sizeof(InvokeMethod));
        
-               //                      ID obj = pib->objlist[0];
-                                       
-                                       
+//                                     ID obj = pib->objlist[0];
                                        break;
                                }
                                
@@ -106,8 +99,8 @@ extern "C" void handle_message(::System::RunTime::ParamInfoBlock *pib,
                ::System::RunTime::Priv::handle_message(pib);
        }
        
-       catch (::System::Exceptions::Exception *ex) {
-               ::System::RunTime::Priv::exception_to_array(ex, ex_arr);
+       catch (::System::Exceptions::Exception &ex) {
+               ::System::RunTime::Priv::exception_to_array(&ex, ex_arr);
        }
        
        catch (...) {