diff options
author | neal <neal> | 2008-02-18 10:24:25 +0000 |
---|---|---|
committer | neal <neal> | 2008-02-18 10:24:25 +0000 |
commit | 9842d5c010544a3f08a82a4570ab3c73e0853375 (patch) | |
tree | bd277680fdbcf8ab6e8e9f663b5f3d86460a9708 | |
parent | 79b54addc00233d22e175fb85491f5d39492c709 (diff) |
2008-02-18 Neal H. Walfield <neal@gnu.org>
* cap-lookup.c (lookup) [RM_INTERN]: When generating a capability
to an object in a folio, don't lookup the object and then use
object_to_cap, just use folio_object_cap.
-rw-r--r-- | viengoos/ChangeLog | 6 | ||||
-rw-r--r-- | viengoos/cap-lookup.c | 32 |
2 files changed, 13 insertions, 25 deletions
diff --git a/viengoos/ChangeLog b/viengoos/ChangeLog index 84ae39d..563a886 100644 --- a/viengoos/ChangeLog +++ b/viengoos/ChangeLog @@ -1,3 +1,9 @@ +2008-02-18 Neal H. Walfield <neal@gnu.org> + + * cap-lookup.c (lookup) [RM_INTERN]: When generating a capability + to an object in a folio, don't lookup the object and then use + object_to_cap, just use folio_object_cap. + 2008-02-16 Neal H. Walfield <neal@gnu.org> * object.h (struct object_desc): Add fields mapped, shared and diff --git a/viengoos/cap-lookup.c b/viengoos/cap-lookup.c index 05bbabb..84b4438 100644 --- a/viengoos/cap-lookup.c +++ b/viengoos/cap-lookup.c @@ -201,39 +201,21 @@ lookup (activity_t activity, } struct object *object = cap_to_object (activity, root); -#ifdef RM_INTERN if (! object) - { - debug (1, "Failed to get object with OID " OID_FMT, - OID_PRINTF (root->oid)); - return false; - } -#else - assertx (object, ADDR_FMT "(%s) has no shadow object", - ADDR_PRINTF (addr_chop (address, remaining)), - cap_type_string (root->type)); + { +#ifdef RM_INTERN + debug (1, "Failed to get object with OID " OID_FMT, + OID_PRINTF (root->oid)); #endif + return false; + } struct folio *folio = (struct folio *) object; int i = extract_bits64_inv (addr, remaining - 1, FOLIO_OBJECTS_LOG2); #ifdef RM_INTERN root = &fake_slot; - if (folio_object_type (folio, i) == cap_void) - { - memset (root, 0, sizeof (*root)); - root->type = cap_void; - } - else - { - struct object_desc *fdesc; - fdesc = object_to_object_desc (object); - - object = object_find (activity, fdesc->oid + i + 1, - folio_object_policy (folio, i)); - assert (object); - *root = object_to_cap (object); - } + *root = folio_object_cap (folio, i); #else root = &folio->objects[i]; #endif |