Method and apparatus for supporting efficient programming in...

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, C709S241000

Reexamination Certificate

active

06279148

ABSTRACT:

BACKGROUND
1. Field of the Invention
The present invention relates to “pointer-safe” computer programming languages, which prevent arbitrary references through pointers. More specifically, the present invention relates to a method and an apparatus for supporting efficient systems programming within a dynamic, pointer-safe programming language.
2. Related Art
Object-oriented programming languages with automatic memory management, such as the JAVA™ programming language of Sun Microsystems, Inc. of Palo Alto, Calif., are widely recognized for making software development easier. Unlike conventional programming languages such as C or C++ that require programmers to use pointers and explicit memory allocation operations to manage dynamic data structures, languages such as the Java programming language take care of memory management automatically. This eliminates the need for tedious and error-prone pointer manipulation. Languages such as the Java programming language are sometimes referred to as “pointer-safe” languages, because they largely eliminate errors that can arise during pointer manipulation. Pointer-safe programming languages are generally languages that do not allow programmers to manipulate pointers outside of the context of, or in violation of, a type system.
Sun, the Sun logo, Sun Microsystems, and Java are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.
Another important characteristic of the Java programming language is the dynamic nature of the language. Unlike C or C++, in which the source program is compiled directly into native, platform-specific machine code, a Java program is executed in an interpretive fashion. This allows programs to be extended dynamically at runtime, and makes them highly portable across different computing devices and platforms.
However, while dynamic, pointer-safe languages excel at making software development faster and less error-prone by relieving the programmer of the burden of explicitly allocating memory and manipulating pointers, they are not commonly used for “systems programming.” In systems programming, a programmer needs more explicit control of object allocation and deallocation in order to more efficiently map data structures onto low-level, machine-dependent structures, and to better manage performance issues related to memory management.
Programmers have traditionally recognized a trade-off between good programming style on one hand and control over memory management on the other. Programming languages with automatic memory management relieve the programmer of the responsibility of explicit memory management, and this generally leads to better programming style. However, at the same time these languages provide less control over memory allocation and pointer manipulation during execution, thus making the behavior of the program harder to understand. While languages with automatic memory management often provide reasonable performance in typical application programming tasks, in certain “systems programming” tasks (such as implementing efficient virtual machines for new programming languages or for real-time applications) the reduced control over memory management can cause performance problems, especially when implementing the system using a dynamic programming language.
Presently, programmers typically do not use dynamic programming languages with automatic memory management for systems programming tasks, but instead write systems programs using other, less elegant programming languages such as C or C++.
What is needed is a mechanism that allows efficient, systems programming tasks to be implemented in a higher-level, dynamic, pointer-safe language such as the Java programming language.
SUMMARY
One embodiment of the present invention facilitates low-level systems programming in “pointer-safe” programming languages, which disallow arbitrary references through pointers. It does so by avoiding the creation of object instances in the traditional fashion. Rather, a large heap is defined to store dynamically allocated data objects, and explicit memory management operations are implemented in order to allocate and deallocate memory from the heap. Traditional object pointers are replaced by indices to the heap (hereafter referred to as “object identifiers”) Thus, one embodiment of the present invention provides a system for facilitating efficient programming within a pointer-safe programming language. The system operates by defining a large array within the pointer-safe programming language. Next, the system receives a request to allocate a data object, the request including a specified size for the data object. In response to this request, the system allocates a space for the data object within the large array at a position specified by an array index within the large array, such that the space is large enough to accommodate the specified size for the data object. Next, the system receives a request to access the data object, which includes the array index. In response to this request, the system uses the array index to access the data object within the large array. The above-described technique bypasses traditional object allocation, thus making object allocation static from the viewpoint of the pointer-safe programming language—with the exception of the large array that is allocated to serve as the heap.


REFERENCES:
patent: 5088036 (1992-02-01), Ellis et al.
patent: 5845298 (1998-12-01), O'Connor et al.
patent: 5893121 (1999-04-01), Ebrahim et al.
patent: 5900001 (1999-05-01), Wolczko et al.
patent: 5903900 (1999-05-01), Knippel et al.
patent: 5911144 (1999-06-01), Schwartz et al.
patent: 5915255 (1999-06-01), Schwartz et al.
patent: 5920876 (1999-07-01), Ungar et al.
patent: 5930807 (1999-07-01), Ebrahim et al.
patent: 5953736 (1999-09-01), O'Connor et al.
patent: 6038572 (2000-03-01), Schwartz et al.
patent: 6049810 (2000-04-01), Schwartz et al.
patent: 6098089 (2000-08-01), O'Connor et al.
Schmidt et al.; “Performance of a hardware-assisted real-time garbage collector”. ACM Digital Library[online], Proceedings of the 6th international conference on Architectural support for programming languages and operating systems, p76(10), Oct. 1994.*
Allard et al.: “Real-time programming in Common Lisp”. ACM Digital Library[online], Communications of the ACM, v34, iss9, p64(6), Sep. 1994.*
Abdullahi, S.; “Garbage Collecting the INternet: A Survey of Distributed Garbage Collection”. ACM Digital Library[online], ACM Computing Surveys, v30, iss3, p330(44), Sep. 1998.*
Ju et al.; “On performance and space usage improvements for parallelized compiled APL code”. Proceedings of the international conference on APL 1991, p234(10), Aug. 1991.*
Gosling et al.;“The Java Language Environment: A White Paper”. Sun Microsystems Incorporated, Palo Alto, CA, Chapters 5-6, May 1996.*
Hoff, A.; “The Case for Java as a Programming Language”. IEEE Xplore[online], IEEE Internet Computing, vol. 1, iss 1, pp 51-56, Jan. 1997.*
Taivalsaari, A.; “Implementing a Java Virtual Machine in the Java Programming Language”. Sun Microsystems Incorporated, Accessed on 2000-08-27, Retrieved from the Internet: http://www.sun.com, Mar. 1998.*
Lindholm et al.; “The Java Virtual Machine Specification”. Sun Microsystems Incorporated, Palo Alto, CA, Chapters 3 and 7, Sep. 1996.*
Krall et al; “CACAO-A 64-bit Java VM just-in-time complier”. Concurrency: Practice and Experience, vol. 9(11), pp1017-1030, Nov. 1997.

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 and apparatus for supporting efficient programming in... 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 and apparatus for supporting efficient programming in..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and apparatus for supporting efficient programming in... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2437798

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