Method of run-time tracking of object references in Java...

Data processing: software development – installation – and managem – Software program development tool – Translation of code

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S152000, C717S152000, C707S793000, C711S170000

Reexamination Certificate

active

06317869

ABSTRACT:

BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates to the field of computer software optimization. More particularly, the present invention relates to a method for run-time tracking of object references in computer code.
2. History of the Prior Art
Computer programs are generally created as source code. The source code is then compiled into object code for execution. Programs generally exist as compiled object code in computer systems. The compiled code is usually designed to operate on only one particular operating system or on only one particular computer processor architecture. In order to use a certain program on several different computer architectures, the original source code must be compiled into object code for each different operating system and each different computer processor architecture.
In recent years, the popularization of the World Wide Web has created a problem for software developers trying to build software for networked consumer devices. Millions of people around the world are surfing the Internet and browsing web pages with their computers. However, not all of the computers are of the same type. For instance, a person may be using a Macintosh, a PC, or a UNIX machine. Computer programs need to be designed to support multiple host architectures and to allow secure delivery of its software components. As a result, Sun Microsystems, Inc., introduced Java, a general purpose concurrent object oriented programming language. Java was designed such that Java code could survive transport across networks, operate on any client, and assure the client that it was safe to run.
Java is a strongly typed programming language. A program is created by compiling source code written in Java's well defined format into Java bytecodes. Compilation normally consists of translating Java programs into a machine independent bytecode representation. Bytecodes are executed by a runtime interpreter residing on the client computer. Run time activities include loading and linking the classes needed to execute a program, optional machine code generation and dynamic optimization of the program, and actual program execution.
Java bytecodes are designed to execute on a Java Virtual Machine. The Java Virtual Machine is an abstract computing machine that has an instruction set and uses various memory areas. A Java Virtual Machine is not an actual hardware platform, but rather a low level software emulator that can be implemented on many different computer processor architectures and under many different operating systems. The Java Virtual Machine reads and interprets each bytecode so that the instructions may be executed by the native microprocessor. Hence a compiled Java bytecode is capable of functioning on any platform that has a Java Virtual Machine implementation available. However, bytecode interpretation detracts from processor performance since the microprocessor has to spend some of its processing time interpreting bytecode instructions. “Just in Time” (JIT) compilers were introduced to improve the performance of Java Virtual Machines. A JIT compiler translates Java bytecodes into the processor's native machine code during runtime. The processor then executes the compiled native code like any other native program. Such compiled Java programs execute much faster than Java programs that are executed using a Java interpreter.
Java was derived from the C++ programming language. Java includes some other important features from garbage collected languages (e.g., Smalltalk and LISP)—including automatic memory storage management. Garbage collected languages, such as Java, allow the system (garbage collector) to take over the burden of memory management from the programmer. When a program runs low on heap space, the garbage collector (GC) determines the set of objects that that program may still access. This set of objects are known as live objects. The space used by objects that will no longer be accessed (“dead objects”) is freed by the garbage collector for future use.
There are many algorithms for performing garbage collection. One type of garbage collection is called conservative garbage collection. In conservative garbage collection, the garbage collector searches for a set of live objects, but does not move the objects it finds. The set of live objects (root set) includes live objects that exist in global variables, in registers, and on the runtime stack. The GC simply marks the objects as live without checking whether the objects are references. Another type of garbage collection is precise garbage collection. In precise garbage collection, the root set must all contain reference values or be initialized, or else memory errors will result. This is because precise garbage collection compacts the memory space by moving all the objects it finds to another memory region. The values in the root set must contain reference values since the garbage collector copies and moves the objects pointed to by references. If a value is mistakenly considered a reference value when it is not, a wrong piece of data will be moved and program errors may occur.
SUMMARY OF THE INVENTION
The present invention introduces a method for run-time tracking of object references in computer code. The method of the present invention first creates a bit vector in memory. The bit vector is then initialized. Second, each variable declared in the computer program that may be used to store a reference value is assigned a unique bit within this bit vector. Each bit is maintained to indicate whether the variable it is assigned to is currently storing a reference value. Specifically, when a variable is assigned a reference value, the corresponding bit in the bit vector is set. When a variable is assigned a non-reference value, the corresponding bit in the bit vector is cleared.
Other objects, features, and advantages of the present invention will be apparent from the accompanying drawings and from the detailed description that follows.


REFERENCES:
patent: 5787287 (1998-07-01), Bharadwaj
patent: 5845298 (1998-12-01), O'Conner et al.
patent: 5848423 (1998-12-01), Ebrahim et al.
patent: 5890169 (1999-03-01), Wong et al.
patent: 5893121 (1999-04-01), Ebrahim et al.
patent: 5903899 (1999-05-01), Steele, Jr.
patent: 5909579 (1999-06-01), Agesen et al.
James Gosling, et al.,The Java Language Specification, Published by Addison-Wesley, 1996, pp. 29-49.
Tim Lindholm, et al.,The Java Virtual Machine Specification, Published by Addison-Wesley, 1997, pp. 57-82.
Alfred V. Aho, et al.,Compilers-Principles, Techniques, and Tools, Published by Addison-Wesley, 1988, pp. 1-24, 440-442.
Steven S. Muchnick,Advanced Compiler Design&Implementation, Published by Morgan Kaufmann, 1997, pp. 1-18, 319-328.
Douglas Kramer,The Java Platform-A White Paper, Published by Javasoft, 1996, pp. 6-24.
Richard Jones, et al.,Garbage Collection-Algorithms For Automatic Dynamic Memory Management, Published by John Wiley & Sons, 1996, pp. 1-40, 75-95.
Hans-J. Boehm,Simple Garbage-Collector-Safety, Proceedings of the ACM SIGPLAN '96 conference on Programming language design and implementation, pp. 89-98.
Hans-J. Boehm,Mark-Sweep vs. Copying Collection and Asymptotic Complexity, 3-page [online], Presentation's paper at IWMM '95 [retrieved on Nov. 2, 1999]. Retrieved from the Internet: <URL:ftp://parcftp.xerox.com/pub/gc/complexity.html>.
Chang, et al.,Evaluation of an Object-Caching Coprocessor Design for Object-Oriented Systems, Proceedings of the ICCD '93 IEEE International Conference on Computer Design: VLSI in Computers and Processors, pp. 132-139.
Henry G. Baker,Efficient Implementation of Bit-Vector Operations in Common Lisp, 14-page [online], 1990 [retrieved on Nov. 4, 1999]. Retrieved from the Internet:<URL:ftp://ftp.netcom.com/pub/hb/hbaker/Bitvectors.html>.

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method of run-time tracking of object references in Java... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Method of run-time tracking of object references in Java..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method of run-time tracking of object references in Java... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2617652

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.