X-Git-Url: http://git.buserror.net/cgi-bin/gitweb.cgi?p=polintos%2Fscott%2Fpriv.git;a=blobdiff_plain;f=lib%2Fc%2B%2B%2Forb.cc;h=a6158bf9ebcf0c23824e28e6adcf34f671b55e10;hp=852919b6b8d8b50ba3be521473fc9423a090f8b4;hb=15d9baeca05f30f8564785c255fed765ede457ff;hpb=ccbffe7564a94661a4c970ce1241309710a6697e diff --git a/lib/c++/orb.cc b/lib/c++/orb.cc index 852919b..a6158bf 100644 --- a/lib/c++/orb.cc +++ b/lib/c++/orb.cc @@ -7,7 +7,6 @@ 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) { @@ -30,15 +29,15 @@ namespace RunTime { // behaves. while (true) { - if (tbl->guid[0] == new_guid_first && - tbl->guid[1] == new_guid[1] && + if (tbl->info->guid[0] == new_guid_first && + tbl->info->guid[1] == new_guid[1] && (sizeof(long) == 8 || - (tbl->guid[2] == new_guid[2] && - tbl->guid[3] == new_guid[3]))) + (tbl->info->guid[2] == new_guid[2] && + tbl->info->guid[3] == new_guid[3]))) break; tbl++; - if (__builtin_expect(!tbl->guid, 0)) + if (__builtin_expect(!tbl->info->guid, 0)) return 0; } @@ -49,7 +48,6 @@ namespace RunTime { return ptr; }; - namespace Priv { typedef void (*MethodEntry)(ParamInfoBlock *pib); @@ -59,7 +57,7 @@ namespace RunTime { void *ptr; // pointer to the class interface }; - typedef Util::RadixTree ObjTable; + typedef ::Util::RadixTree ObjTable; ObjTable objtable; unsigned long get_pc() @@ -69,9 +67,7 @@ namespace RunTime { void exception_to_array(::System::VStruct *ex, Array *ar) { - // FIXME -// ar->ptr = reinterpret_cast(ex); -// ar->count = ex->_infoptr->structlen; + // FIXME: marshall struct } void handle_message(ParamInfoBlock *pib) @@ -84,9 +80,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 +100,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 (...) {