IP Library Granted Patent US 12,423,409
Granted Patent B2
US 12,423,409 · App. 17/958,744 · Granted Sep 23, 2025

Method and system for executing applications using native code modules

Inventors: Evangelos Kokkevis (Mountain View, CA); Matthew Papakipos (Palo Alto, CA); David C. Sehr (Cupertino, CA)
Assignee: GOOGLE LLC
G06F21/53G06F9/44526G06F9/44589G06F21/51G06F21/572G06F2221/034H04L67/02H04L67/34
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,423,409
App. No.
17/958,744
Granted
Sep 23, 2025
Kind
B2
Abstract

Some embodiments provide a system that executes a web application. During operation, the system loads the web application in a web browser and loads a native code module associated with the web application into a secure runtime environment. Next, the system provides input data associated with the web application to the native code module and processes the input data using the native code module to obtain output data. Finally, the system provides the output data to the web application for use by the web application.

Claims (23)

1. A system comprising:

a three-dimensional (3D) application that executes in a web browser, the 3D application providing graphics rendering and animation capabilities to a user of the 3D application;

a first plugin to provide the 3D application with real-time animation of objects within the 3D application;

a central processing unit (CPU) in communication with the first plugin;

a second plugin configured to render graphics for the 3D application;

a graphics processing unit (GPU) in communication with the second plugin; and

a shared memory in communication with the first plugin and the second plugin, the shared memory including one or more inter-module communication (IMC) buffers.

2. The system of claim 1 , wherein the first plugin includes a physics engine including native code that executes on the CPU within a secure runtime environment provided by the first plugin.

3. The system of claim 2 , wherein the second plugin includes a rendering engine configured to communicate with the GPU to provide graphics hardware acceleration by performing calculations related to graphics rendering.

4. The system of claim 3 , wherein the physics engine corresponds to a native control module provided by the 3D application that is executed within a secure runtime environment provided by the first plugin within constraints set by the secure run time environment.

5. The system of claim 3 , wherein data passes between the first plugin and the second plugin using the shared memory.

6. The system of claim 3 , wherein the first plugin and the second plugin interface directly with one another to synchronize animation and rendering of a graphics model.

7. The system of claim 6 , wherein the physics engine is configured to read from the IMC buffers to create a physics model corresponding to the graphics model.

8. The system of claim 7 , wherein the physics engine is further configured to perform a series of physics simulation calculations that update the physics model.

9. The system of claim 1 , wherein the 3D application is a 3D computer game or a computer-aided design (CAD) application.

10. A system comprising:

a first plugin to provide a three-dimensional (3D) application with real-time animation of objects within the 3D application;

a second plugin configured to render graphics for the 3D application;

a shared memory in communication with the first plugin and the second plugin, wherein, the shared memory includes one or more inter-module communication (IMC) buffers;

a central processing unit (CPU) in communication with the first plugin; and

a graphics processing unit (GPU) in communication with the second plugin.

11. The system of claim 10 , wherein the first plugin includes a physics engine including native code that executes on the CPU within a secure runtime environment provided by the first plugin.

12. The system of claim 10 , wherein the second plugin includes a rendering engine configured to communicate with the GPU to provide graphics hardware acceleration by performing calculations related to graphics rendering.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2022
From: KOKKEVIS, EVANGELOS; PAPAKIPOS, MATTHEW; SEHR, DAVID
To: GOOGLE INC.
Reel/Frame 061316/0971 →
CHANGE OF NAME Recorded Oct 5, 2022
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 061607/0344 →
Continuity (4)
Continuation 14925413 · Oct 28, 2015
Continuation 12266602 · Nov 7, 2008
Provisional Application 61081327 · Jul 16, 2008
Related Publication 20230024083A1 · Jan 26, 2023
References Cited (118)
US 5974549A · Golan · 1999 [cited by applicant]
US 5987245A · Gish · 1999 [cited by applicant]
US 5987247A · Lau · 1999 [cited by examiner]
US 6128774A · Necula et al. · 2000 [cited by applicant]
US 6275938B1 · Bond et al. · 2001 [cited by applicant]
US 6282702B1 · Ungar · 2001 [cited by applicant]
US 6697971B1 · Dwyer · 2004 [cited by applicant]
US 6738469B1 · Peirce et al. · 2004 [cited by applicant]
US 7076042B1 · Praturi et al. · 2006 [cited by applicant]
US 7188282B2 · Walmsley · 2007 [cited by applicant]
US 7257615B2 · Eilers et al. · 2007 [cited by applicant]
US 7581103B2 · Horne et al. · 2009 [cited by applicant]
US 7596694B1 · Karp · 2009 [cited by applicant]
US 7647589B1 · Dobrovolskiy · 2010 [cited by examiner]
US 8151349B1 · Yee et al. · 2012 [cited by applicant]
US 8443358B1 · Larkin · 2013 [cited by examiner]
US 8510756B1 · Koryakin et al. · 2013 [cited by applicant]
US 8745361B2 · Shah · 2014 [cited by examiner]
US 9058483B2 · Chen et al. · 2015 [cited by applicant]
US 9361453B2 · Chen et al. · 2016 [cited by applicant]
US 9710654B2 · Chen et al. · 2017 [cited by applicant]
US 10685123B2 · Chen et al. · 2020 [cited by applicant]
US 20020188930A1 · Moser et al. · 2002 [cited by applicant]
US 20030005048A1 · Risalvato · 2003 [cited by examiner]
US 20030018834A1 · Eilers et al. · 2003 [cited by applicant]
US 20030126311A1 · Kushnirskiy et al. · 2003 [cited by applicant]
US 20040123117A1 · Berger · 2004 [cited by applicant]
US 20040158813A1 · Xia · 2004 [cited by examiner]
US 20040172530A1 · Birk et al. · 2004 [cited by applicant]
US 20040193679A1 · Tecco et al. · 2004 [cited by applicant]
US 20040230949A1 · Talwar et al. · 2004 [cited by applicant]
US 20050193380A1 · Vitanov · 2005 [cited by applicant]
US 20050273605A1 · Saha et al. · 2005 [cited by applicant]
US 20050283770A1 · Karp et al. · 2005 [cited by applicant]
US 20060123279A1 · Cardinell · 2006 [cited by applicant]
US 20060143689A1 · Yu et al. · 2006 [cited by applicant]
US 20060174077A1 · Abadi et al. · 2006 [cited by applicant]
US 20070016949A1 · Dunagan et al. · 2007 [cited by applicant]
US 20070074169A1 · Chess et al. · 2007 [cited by applicant]
US 20070107057A1 · Chander et al. · 2007 [cited by applicant]
US 20070157298A1 · Dingwall et al. · 2007 [cited by applicant]
US 20070169110A1 · Gupta et al. · 2007 [cited by applicant]
US 20070261124A1 · Centonze et al. · 2007 [cited by applicant]
US 20070266373A1 · Liu · 2007 [cited by applicant]
US 20080016339A1 · Shukla · 2008 [cited by applicant]
US 20080028388A1 · Burtscher · 2008 [cited by applicant]
US 20080047023A1 · Lam et al. · 2008 [cited by applicant]
US 20080071884A1 · Heithcock et al. · 2008 [cited by applicant]
US 20080072323A1 · Yu · 2008 [cited by applicant]
US 20080134147A1 · McCullough et al. · 2008 [cited by applicant]
US 20080155679A1 · Sebot et al. · 2008 [cited by applicant]
US 20080163366A1 · Chinya et al. · 2008 [cited by applicant]
US 20080172661A1 · Chatterjee et al. · 2008 [cited by applicant]
US 20080320436A1 · Hughes · 2008 [cited by applicant]
US 20090007223A1 · Centonze et al. · 2009 [cited by applicant]
US 20090077544A1 · Wu · 2009 [cited by applicant]
US 20090183155A1 · Praitis et al. · 2009 [cited by applicant]
US 20090210347A1 · Sarcanin · 2009 [cited by applicant]
US 20090210874A1 · Wilson et al. · 2009 [cited by applicant]
US 20090216963A1 · Greiner et al. · 2009 [cited by applicant]
US 20090271501A1 · Shenfield et al. · 2009 [cited by applicant]
US 20090282474A1 · Chen et al. · 2009 [cited by applicant]
US 20090282477A1 · Chen et al. · 2009 [cited by applicant]
US 20100013842A1 · Green et al. · 2010 [cited by applicant]
US 20140026214A1 · Adams et al. · 2014 [cited by applicant]
US 20170262657A1 · Salmon-Legagneur et al. · 2017 [cited by applicant]
CN 1834906A · 2006 [cited by applicant]
WO 9910795A1 · 1999 [cited by applicant]
“ARM Discloses Technical Details Of The Next Version Of The ARM Architecture” (Press release) ARM Holdings. Oct. 27, 2011. [cited by applicant]
“Foundational proof-carrying code”; Andrew W. Appel; 10 pages, 16th Annual IEEE Symposium on Logic in computer science; 2001. [cited by applicant]
“Proof-carrying code, design and implementation”, Necula et al; School of computer science; UC Berkeley; p. 261-288 2002; 28 pages. [cited by applicant]
Apap, F. et al., “Detecting Malicious Software by Monitoring Anomalous Windows Registry Access”, Recent advances in intrusion detection, Springer, 2002, DD. 36-53. [cited by applicant]
Australian Office Action issued in Australian Application No. 2009271181 on Jan. 15, 2014, 3 pages. [cited by applicant]
Authorized Officer Ji Myong Nho, International Search Report and Written Opinion dated Jan. 26, 2010 for International Application No. PCT/US2009/049679, filed Jul. 6, 2009. 8 Pages. [cited by applicant]
Authorized Officer Nora Lindner, International Preliminary Report on Patentability dated Jan. 18, 2011 for International Application No. PCT/US2009/049679. [cited by applicant]
B. Ford, VXA: A virtual architecture for durable compressed archives. In USENIX File and Storage Technologies, Dec. 2005. [cited by applicant]
Canadian Office Action issued in Canadian Application No. 2,730,128 on Apr. 30, 2014, 5 pages. [cited by applicant]
Canadian Office Action issued in Canadian Application No. 2,730,128 on Apr. 7, 2015, 8 pages. [cited by applicant]
Chinese Office Action issued in Chinese Application No. 200980127703.8 on Jan. 13, 2014, 21 pages (with English translation). [cited by applicant]
Chinese Office Action issued in Chinese Application No. 200980127703.8 on Jan. 20, 2015, 17 pages (with English translation). [cited by applicant]
Erlingsson et al. XFI: Software Guards for System Address Spaces. OSDI '06: 7th USENIX Symposium on Operation Systems Design and Implementation. USENIX Association. Seattle, WA, Nov. 2006. pp. 75-88. [cited by applicant]
European Search Report issued in European Application No. 09743550.7 on Feb. 7, 2014, 8 pages. [cited by applicant]
EXCELSIOR LLC, Excelsior JET for Microsoft Windows version 6.0 User's Guide, 2007, http://www.excelsior-usa.com/download/jet60x/jet-600-doc-w-in32-pdg.zip, See pp. 5-6, and 99-105. [cited by applicant]
Extended European Search Report for European Patent Application No. EP 18179497.5, dated Sep. 25, 2018. 9 pages. [cited by applicant]
Franz et al., “Slim Binaries”, Communications of the ACM, 40 No. 12, Dec. 1, 1997, pp. 87-94. [cited by applicant]
G. Necula, Proof carrying code. In Principles of Programming Languages, pp. 1-14, 1997. [cited by applicant]
Goldberg, Ian et al. A Secure Environment for Untrusted Helper Applications, Jul. 22, 1996, Retrieved from the internet: http://www.cs.berkelev.edu/daw/papers/janus--usenix96.ps.Retrieved Apr. 19, 2006. 13 pages. [cited by applicant]
Holzammer, Andreas. Security Issues about Web Browser Add-ons, Jun. 6, 2008, Retrieved from the internet: https://www.net.t-labs.tu-berlin.de/teaching/ss08/IS_seminar/PDF/A.1.pdf. Retrieved Jun. 19, 2012. 10 pages. [cited by applicant]
International Search Report and Written Opinion in International Application No. PCT/US2009/042962, mailed Dec. 30, 2009, 7 pages. [cited by applicant]
International Search Report and Written Opinion in International Application No. PCT/US2009/042965, mailed Jul. 30, 2009, 12 pages. [cited by applicant]
Klinkoff et al. Extending . NET security to unmanaged code Jul. 17, 2007 Springer-Verlag (Year: 2007). [cited by applicant]
Liang, “The Java™ Native Interface Programmer's Guide and Specification”, Jan. 1, 1999, 318 pages, Part 1, 145 pages. [cited by applicant]
Liang, “The Java™ Native Interface Programmer's Guide and Specification”, Jan. 1, 1999, 318 pages, Part 2, 173 pages. [cited by applicant]
Necula et al. “Proof-carrying code,” School of computer science, Carnegie Mello University, Nov. 1996, 62 pages. [cited by applicant]
Notice of Allowance issued in U.S. Appl. No. 12/266,602 on Jul. 2, 2015, 13 pages. [cited by applicant]
Office Action for European Patent Application No. 09798562.6, dated Nov. 22, 2018. 8 pages. [cited by applicant]
Office Action issued in Canadian Application No. 2,730,128 on Apr. 11, 2016, 12 pages. [cited by applicant]
Office Action issued in Chinese Application No. 201510689339.1, mailed on Apr. 23, 2018, 7 pages (with English translation). [cited by applicant]
Office Action issued in Chinese Application No. 201510689339.1, mailed on Aug. 14, 2017, 15 pages (English Translation). [cited by applicant]
Office Action issued in European Application No. 09798562.6, mailed on Jan. 25, 2018, 12 pages. [cited by applicant]
Office Action issued in Korean Application No. 10-2011-7000770 on Sep. 18, 2015, 9 pages (with English translation). [cited by applicant]
Office Action issued in U.S. Appl. No. 12/266,602 on Apr. 15, 2015, 51 pages. [cited by applicant]
Office Action issued in U.S. Appl. No. 12/266,602 on Aug. 17, 2012, 40 pages. [cited by applicant]
Office Action issued in U.S. Appl. No. 12/266,602 on Dec. 2, 2010, 37 pages. [cited by applicant]
Office Action issued in U.S. Appl. No. 12/266,602 on Jun. 25, 2010, 36 pages. [cited by applicant]
Office Action issued in U.S. Appl. No. 12/266,602 on Mar. 28, 2012, 36 pages. [cited by applicant]
Office Action issued in U.S. Appl. No. 12/266,602 on Nov. 24, 2014, 54 pages. [cited by applicant]
Robert Wahbe, Steven Lucco, Thomas E. Anderson, and Susan L. Graham, Efficient software-based fault isolation, ACM SIGOPS Operating Systems Review, 27(5): 203-216, Dec. 1993. [cited by applicant]
S. Mccamant and G. Morrisett, Evaluating SFI for a CISC architecture. In 15th USENIX Security Symposium, pp. 1-16, Aug. 2006. [cited by applicant]
Schafter, Andreas. Extended European Search Report dated Jul. 3, 2012 for European Application No. 09798562.6, filed Jul. 6, 2009. 7 pages. [cited by applicant]
Silberschatz, A., et al. Interprocess Communication. Dec. 14, 2004. Operating System Concepts, John Wiley & Sons. Retrieved from the internet: http://proquest.safaribooksonline.com/print?xmlid=9780471694663/int.html . R… [cited by applicant]
Small et al. “MiSFIT: A tool for constructing safe extensible C++ systems,” Conference on Object Oriented Technologies and Systems, Jun. 16, 1997, 9 pages. [cited by applicant]
Stephen, Mark. First Office Action for Canadian Patent Application No. 2,730,128, filed Jul. 6, 2009, 4 pages. [cited by applicant]
U. Erlingsson, M. Abadi, M. Veable, M. Budiu, and G. Necula, XFI: Software guards for system address spaces. In OSDI '06: 7th Symposium on Operating Systems Design and Implementation, pp. 75-88, Nov. 2006. [cited by applicant]
V. Prasad, W. Cohen, FC Eigler, M. Hunt, J. Keniston, and JB Chen, Locating system problems using dynamic instrumentation, In 2005 Ottawa Linux Symposium, pp. 49-64, Jul. 2005. [cited by applicant]
Wang, Maohua. Translation of the Notification of the first Office Action dated Aug. 22, 2012 for Chinese Patent Application No. 200980127703.8. 7 pages. [cited by applicant]
Weber, M. et al., “A toolkit for detecting and analyzing malicious software”, Proceedings on 18th Annual Computer Security Applications Conference, Dec. 9-13, 2002, pp. 423-431. [cited by applicant]
Wikipedia, “Fat Binary,” Last modified May 25, 2015, [retrieved on May 26, 2015], Retrieved from the Internet<http://en.wikipedia.org/wiki/Fat_binary>, 5 pages. [cited by applicant]