| Index: mojo/nacl/nonsfi/irt_mojo_nonsfi.cc | 
| diff --git a/mojo/nacl/nonsfi/irt_mojo_nonsfi.cc b/mojo/nacl/nonsfi/irt_mojo_nonsfi.cc | 
| index 4fed496dda4c831685e0759dcf5b0b5efc30f5ad..2c34e45c33d8306696415797b106585f68916309 100644 | 
| --- a/mojo/nacl/nonsfi/irt_mojo_nonsfi.cc | 
| +++ b/mojo/nacl/nonsfi/irt_mojo_nonsfi.cc | 
| @@ -8,15 +8,12 @@ | 
| #include "mojo/public/platform/nacl/mgl_irt.h" | 
| #include "mojo/public/platform/nacl/mojo_irt.h" | 
| #include "native_client/src/public/irt_core.h" | 
| +#include "native_client/src/untrusted/irt/irt_dev.h" | 
|  | 
| namespace { | 
|  | 
| MojoHandle g_mojo_handle = MOJO_HANDLE_INVALID; | 
| - | 
| -MojoResult _MojoGetInitialHandle(MojoHandle* handle) { | 
| -  *handle = g_mojo_handle; | 
| -  return MOJO_RESULT_OK; | 
| -} | 
| +bool g_running_translator = false; | 
|  | 
| const struct nacl_irt_mojo kIrtMojo = { | 
| MojoCreateSharedBuffer, | 
| @@ -37,7 +34,7 @@ const struct nacl_irt_mojo kIrtMojo = { | 
| MojoCreateMessagePipe, | 
| MojoWriteMessage, | 
| MojoReadMessage, | 
| -    _MojoGetInitialHandle, | 
| +    nacl::MojoGetInitialHandle, | 
| }; | 
|  | 
| const struct nacl_irt_mgl kIrtMGL = { | 
| @@ -57,23 +54,65 @@ const struct nacl_irt_mgl_signal_sync_point kIrtMGLSignalSyncPoint = { | 
| MGLSignalSyncPoint, | 
| }; | 
|  | 
| +int NotPNaClFilter() { | 
| +  return g_running_translator; | 
| +} | 
| + | 
| const struct nacl_irt_interface kIrtInterfaces[] = { | 
| -    {NACL_IRT_MOJO_v0_1, &kIrtMojo, sizeof(kIrtMojo), nullptr}, | 
| -    {NACL_IRT_MGL_v0_1, &kIrtMGL, sizeof(kIrtMGL), nullptr}, | 
| -    {NACL_IRT_MGL_ONSCREEN_v0_1, &kIrtMGLOnScreen, sizeof(kIrtMGLOnScreen), | 
| -      nullptr}, | 
| -    {NACL_IRT_MGL_SIGNAL_SYNC_POINT_v0_1, &kIrtMGLSignalSyncPoint, | 
| -      sizeof(kIrtMGLSignalSyncPoint), nullptr}, | 
| +    // Interface to call Mojo functions | 
| +    { NACL_IRT_MOJO_v0_1, | 
| +      &kIrtMojo, | 
| +      sizeof(kIrtMojo), | 
| +      nullptr }, | 
| +    // Interface to call PNaCl translation | 
| +    { NACL_IRT_PRIVATE_PNACL_TRANSLATOR_COMPILE_v0_1, | 
| +      &nacl::nacl_irt_private_pnacl_translator_compile, | 
| +      sizeof(nacl_irt_private_pnacl_translator_compile), | 
| +      NotPNaClFilter }, | 
| +    // Interface to call PNaCl linking | 
| +    { NACL_IRT_PRIVATE_PNACL_TRANSLATOR_LINK_v0_1, | 
| +      &nacl::nacl_irt_private_pnacl_translator_link, | 
| +      sizeof(nacl_irt_private_pnacl_translator_link), | 
| +      NotPNaClFilter }, | 
| +    // Adds mechanism for opening object files, like crtbegin.o | 
| +    { NACL_IRT_RESOURCE_OPEN_v0_1, | 
| +      &nacl::nacl_irt_resource_open, | 
| +      sizeof(nacl_irt_resource_open), | 
| +      NotPNaClFilter }, | 
| +    // GPU functions which give control over MGL context | 
| +    { NACL_IRT_MGL_v0_1, | 
| +      &kIrtMGL, | 
| +      sizeof(kIrtMGL), | 
| +      nullptr }, | 
| +    // GPU functions which update framebuffer with respect to the display | 
| +    { NACL_IRT_MGL_ONSCREEN_v0_1, | 
| +      &kIrtMGLOnScreen, | 
| +      sizeof(kIrtMGLOnScreen), | 
| +      nullptr }, | 
| +    // GPU functions to synchronize CPU and GPU services | 
| +    { NACL_IRT_MGL_SIGNAL_SYNC_POINT_v0_1, | 
| +      &kIrtMGLSignalSyncPoint, | 
| +      sizeof(kIrtMGLSignalSyncPoint), | 
| +      nullptr }, | 
| }; | 
|  | 
| }  // namespace | 
|  | 
| namespace nacl { | 
|  | 
| +MojoResult MojoGetInitialHandle(MojoHandle* handle) { | 
| +  *handle = g_mojo_handle; | 
| +  return MOJO_RESULT_OK; | 
| +} | 
| + | 
| void MojoSetInitialHandle(MojoHandle handle) { | 
| g_mojo_handle = handle; | 
| } | 
|  | 
| +void MojoPnaclTranslatorEnable() { | 
| +  g_running_translator = true; | 
| +} | 
| + | 
| size_t MojoIrtNonsfiQuery(const char* interface_ident, | 
| void* table, | 
| size_t tablesize) { | 
|  |