Sensitive data structures, such as type data structures, can be used by
untrusted application programs without necessarily exposing the sensitive
data structures directly. For example, untrusted components, such as
application programs that may or may not be type safe, can be allowed to
operate in a lower-privilege mode. In addition, the application programs
can be associated with an address space with limited permissions (e.g.,
read-only) to a shared memory heap. Requests by the untrusted components
for sensitive data structures can then be handled by trusted components
operating in a higher-privilege mode, which may have broader permissions
to the shared memory heap. If the requests by the untrusted components
are deemed to be valid, the results of the requests can be shared with
the lower-privilege mode components through the shared memory heap.