| United States Patent | 7,096,466 |
| Sokolov , et al. | August 22, 2006 |
Improved techniques for loading class files into virtual computing machines are disclosed. The techniques seek to provide a mechanism that will generally improve the efficiency of virtual machines by selectively loading information into a virtual machine. A new class attribute ("load-attribute") is defined and implemented for class files. This can be, for example, implemented as a "load-attribute" table that lists the components that have been selected for loading into the virtual machine. In addition, the load-attribute may provide references to the selected components in the class file. Accordingly, various components of the class file can be marked for loading and selectively loaded.
| Inventors: | Sokolov; Stepan (Fremont, CA), Wallman; David (Sunnyvale, CA) |
| Assignee: |
Sun Microsystems, Inc.
(Santa Clara,
CA)
|
| Appl. No.: | 09/818,096 |
| Filed: | March 26, 2001 |
| Current U.S. Class: | 718/1 ; 712/206; 718/100; 718/102 |
| Current International Class: | G06F 9/44 (20060101); G06F 9/46 (20060101) |
| Field of Search: | 718/100-102,103-104,1 712/208,213 |
| 4086626 | April 1978 | Chung |
| 4199811 | April 1980 | Borgerson et al. |
| 4667290 | May 1987 | Goss et al. |
| 4910731 | March 1990 | Sakurai et al. |
| 5418964 | May 1995 | Conner et al. |
| 5815718 | September 1998 | Tock |
| 5838980 | November 1998 | Guillen et al. |
| 5848274 | December 1998 | Hamby et al. |
| 5872978 | February 1999 | Hoskins |
| 5878430 | March 1999 | Lafuse |
| 5893084 | April 1999 | Morgan et al. |
| 5893118 | April 1999 | Sonderegger |
| 5899997 | May 1999 | Ellacott |
| 5903761 | May 1999 | Tyma |
| 5920720 | July 1999 | Toutonghi et al. |
| 5970242 | October 1999 | O'Connor et al. |
| 5978585 | November 1999 | Crelier |
| 6003038 | December 1999 | Chen |
| 6026237 | February 2000 | Berry et al. |
| 6026485 | February 2000 | O'Connor et al. |
| 6047125 | April 2000 | Agesen et al. |
| 6061743 | May 2000 | Thatcher et al. |
| 6072951 | June 2000 | Donovan et al. |
| 6072953 | June 2000 | Cohen et al. |
| 6081665 | June 2000 | Nilsen et al. |
| 6083279 | July 2000 | Cuomo et al. |
| 6096095 | August 2000 | Halstead |
| 6101580 | August 2000 | Agesen et al. |
| 6118940 | September 2000 | Alexander, III et al. |
| 6151618 | November 2000 | Wahbe et al. |
| 6151703 | November 2000 | Crelier |
| 6158048 | December 2000 | Lueh et al. |
| 6163780 | December 2000 | Ross |
| 6182202 | January 2001 | Muthukkaruppan |
| 6202208 | March 2001 | Holiday, Jr. |
| 6205578 | March 2001 | Grove |
| 6209018 | March 2001 | Ben-Shachar et al. |
| 6223202 | April 2001 | Bayeh |
| 6237135 | May 2001 | Timbol |
| 6260187 | July 2001 | Cirne |
| 6292883 | September 2001 | Augusteijn et al. |
| 6295638 | September 2001 | Brown et al. |
| 6317872 | November 2001 | Gee et al. |
| 6324685 | November 2001 | Balassanian |
| 6330709 | December 2001 | Johnson et al. |
| 6332215 | December 2001 | Patel et al. |
| 6336213 | January 2002 | Beadle et al. |
| 6338160 | January 2002 | Patel et al. |
| 6339841 | January 2002 | Merrick et al. |
| 6349377 | February 2002 | Lindwer |
| 6358769 | March 2002 | Vigna et al. |
| 6372286 | April 2002 | Azuma et al. |
| 6374286 | April 2002 | Gee et al. |
| 6412107 | June 2002 | Cyran et al. |
| 6412108 | June 2002 | Blandy et al. |
| 6427228 | July 2002 | Wigger |
| 6429860 | August 2002 | Hughes |
| 6434625 | August 2002 | Loen |
| 6434694 | August 2002 | Slaughter et al. |
| 6442558 | August 2002 | Brown et al. |
| 6442753 | August 2002 | Gerard et al. |
| 6446084 | September 2002 | Shaylor et al. |
| 6446254 | September 2002 | Chapman et al. |
| 6453342 | September 2002 | Himmel et al. |
| 6463578 | October 2002 | Johnson |
| 6467037 | October 2002 | Griesemer |
| 6477702 | November 2002 | Yellin et al. |
| 6496871 | December 2002 | Jagannathan et al. |
| 6510551 | January 2003 | Miller |
| 6523168 | February 2003 | Arnold et al. |
| 6553565 | April 2003 | Click, Jr. et al. |
| 6557023 | April 2003 | Taivalsaari |
| 6557054 | April 2003 | Reisman |
| 6571388 | May 2003 | Venkatraman et al. |
| 6581077 | June 2003 | Sololov et al. |
| 6584612 | June 2003 | Mueller et al. |
| 6643711 | November 2003 | Bracha et al. |
| 6658421 | December 2003 | Seshadri |
| 6658573 | December 2003 | Bischof et al. |
| 6675371 | January 2004 | York et al. |
| 6684394 | January 2004 | Shann |
| 6704746 | March 2004 | Sokolov et al. |
| 6704803 | March 2004 | Wilson et al. |
| 6704923 | March 2004 | Gosling |
| 6704927 | March 2004 | Bak et al. |
| 6721740 | April 2004 | Skinner et al. |
| 6738977 | May 2004 | Berry et al. |
| 6742109 | May 2004 | Sokolov et al. |
| 6769015 | July 2004 | Bates et al. |
| 6851108 | February 2005 | Syme et al. |
| 6851111 | February 2005 | McGuire et al. |
| 6901591 | May 2005 | Sokolov |
| 6978456 | December 2005 | Sokolov et al. |
| 6996813 | February 2006 | Sokolov et al. |
| 7020874 | March 2006 | Sokolov et al. |
| 2002/0046298 | April 2002 | Bak et al. |
| 2002/0087589 | July 2002 | Wallman |
| 2002/0170041 | November 2002 | Shann |
| 2002/0170043 | November 2002 | Bagley et al. |
| 2002/0188726 | December 2002 | Schick et al. |
| 2004/0172619 | September 2004 | Woolen et al. |
| 0810522 | Dec., 1997 | EP | |||
| 0943989 | Sep., 1999 | EP | |||
| 0 996 059 | Apr., 2000 | EP | |||
| 1076301 | Feb., 2001 | EP | |||
| 1124183 | Aug., 2001 | EP | |||
| WO99/31576 | Jun., 1999 | WO | |||
| WO01/22213 | Mar., 2001 | WO | |||
| WO02/41145 | May., 2002 | WO | |||
| WO02/077807 | Oct., 2002 | WO | |||
| WO03/104980 | Dec., 2003 | WO | |||
Robert Griesemer, entitled "Utilizing a Program Counter With One or More Data Counters for Executing Instructions," U.S. Appl. No. 09/107,939, filed Jun. 30, 1998. cited by other . Pominville, Patrice, "Annotating Java Bytecode", 2000, Project Report, McGill University, pp. 1-7. XP-002254149. cited by other . Yourst, Matt T., "Inside Java Class Files", 1998, Dr. Dobb's Journal, pp. 46-52. cited by other . Hummel, Joseph et al., "Annotating the Java bytecodes in support of optimization", 1997, Concurrency: Practice and Experience, vol. 9, No. 11, pp. 1003-1016. cited by other . Lindholm, T. et al., "The Java Virtual Machine Specification--Second Edition", 1999, Addison-Wesley, pp. 117-132. XP-002254151. cited by other . Lambright H D, "Java Bytecode Optimizations" Proceedings of IEEE Compcon '97. San Jose, Feb. 23-26, 1997, pp. 206-210, XP-000751784. cited by other . Accomazzo E et al., "Integrating intermediate Code Optimization with Retargetable Code Generation" Microprocessing and Microprogramming, Elsevier Science Publishers, BV. Amsterdam, NL, vol. 30, No. 1/5, Aug. 1, 1990, pp. 475-481, XP000141684. cited by other . Tim Ritchey, "Java!" 1995, New Riders Publishing, p. 326-343. cited by other . Microsoft Press Computer Dictionary Third Edition, p. 294-295. cited by other . Piumarta et al., "Optimizing Direct Threaded Code by Selective Inlining," Association for Computing Machinery, vol. 33, No. 5, p. 291-300, May 1, 1998. XP-000766278. cited by other . Tommesani, "Programming models". cited by other . Goldberg, "A specification of java loading and bytecode verification," ACM, p. 49-58, 1998. cited by other . Chang et al. "Type based verification of assembly language for compiler degugging," ACM TLDI, p. 91-102, Jan. 2005. cited by other . Qian et al., "A formal specification of Java class loading," ACM OOPSLA, p. 325-336, 2000. cited by other . Krintz et al., "Reducing transfer delay using java class file splitting and prefetching," ACM OOPSLA, pp. 276-291 Nov. 1999. cited by other . Clausen et al., "Java Bytecode Compression for Low-End Embedded Systems," May 2000, ACM. cited by other . Chilimbi et al., "Cache-Conscious Structure Definition", p. 13-24, 1999 ACM. cited by other . Nicol et al., "Empirical Study of parallel Trace-Driven LRU Cache Simulators," p. 166-169, 1995 IEEE. cited by other . Office Actions dated Mar. 13, 2003, Jul. 31, 2003 and Feb. 5, 2004 respectively by Examiner Charles Rones for U.S. Appl. No. 09/852,463, entitled "Frameworks for Accessing Java Class Files." cited by other . Examination Report dated Aug. 2, 2005 from the corresponding EP Application No.:02813888.2-2211, 6 pages. cited by other . Case B: "Implementing The Java Virtual Machine Java's Complex Instruction Set Can Be Built in Software or Hardware," Microprocessor Report, vol. 10, No. 4, Mar. 25, 1996, pp. 12-17. XP-000987276. cited by other . McNeley KJ et al., "Emulating a Complex Instruction Set Computer With a Reduced Instruction Set Computer," IEEE Micro, IEEE Inc. New York, US, vol. 7, No. 1, Feb. 1987, pp. 60-71. XP-000827611. cited by other . Jean-Paul Billon, "JEFFWEG4 (J Executable File Format), Release 1.0 Achievements, Sep. 29, 2000," J Consortium Jeff Working Group, Online! Feb. 22, 2001, pp. 1-24. XP-002208358. cited by other . Jean-Paul Billon, "J Executable File Format (JEFF) Specification, Draft," J Consortium Jeff Working Group, 'Online! Feb. 22, 2001, p. 1-43. XP-002208357. cited by other . Chang et al., "EJVM: an economic Java run-time environment for embedded devices," Software Practice & Experience, 2001, John Wiley & Sons, Ltd., vol. 31, pp. 129-146. XP-000987539. cited by other . Gosling et al., "The Java.TM. Language Specification", Aug. 1, 1996, pp. 215-236. XP 002042923. cited by other . Zhenyu Qian, "A Formal Specification of Java.TM. Virtual Machine Instructions," Technical Report, University Bremen; Nov. 1997, pp. 1-32. XP-002255760. cited by other . Markus Dahm, "Byte Code Engineering" Freie University Berlin, 1999. XP-002262007. cited by other . Meyer et al., "Java Virtual Machine" O'Reilly & Associates, Inc., 1997. XP-002262008. cited by other . Bill Venners, "How the Java virtual machine handles method invocation and return" Java World, Jun. 1997, pp. 1-10. cited by other . Sun Microsystems: "Java Card 2.1.1 Virtual Machine Specification" May 18, 2000, XP002290969. cited by other . Info-Zip: "Info-Zip application note" Mar. 11, 1997, XP002290913. cited by other . TIS Committee: "Executable and linking format (ELF) specification" May 1995, XP002290914. cited by other . Prominville et al. "A framework for optimizing java using attributes", Proc. of the 2000 conf. of the center of advance studies on collaborative research, Nov. 2000, pp. 1-17. cited by other . Krintz et al. "Reducing transfer delay using java class file splitting and prefetching", ACM OOPSLA, pp. 276-291. cited by other . Kazi et al. "Techniques for obtaining high performance in java programs", ACM Computing Surveys, vol. 32, No. 3, Sep. 2000, pp. 213-240. cited by other . Benton et al. "Compiling standard ML to java bytecodes", ACM ICFP 1998, pp. 129-140. cited by other . Alpern et al., "Implementing Jalapeno in Java", ACM OOPSLA, pp. 314-324. cited by other . Stephenson et al. "A quantitative analysis of the performance impact of specialized bytecodes in Java", Proc. Of the 2004 conference of the enter for advance studies on collaborative Research, Oct. 2004, pp. 267-281. cited by other . Office Actions dated Jul. 13, 2004 and Mar. 3, 2005 respectively by Examiner Anil Khatri for U.S. Appl. No. 09/886,440, entitled "Customization of Java Runtime Environments." cited by other . Lindholm et al., "The Java Virtual Machine Specification", Sep. 1996. cited by other. |