IP Library Granted Patent US 7,987,473
Granted Patent B1
US 7,987,473 · App. 11/227,419 · Granted Jul 26, 2011

Accelerated class check

Assignee: Azul Systems, Inc.
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 7,987,473
App. No.
11/227,419
Granted
Jul 26, 2011
Kind
B1
Abstract

Determining a class of an object is disclosed. A pointer of the object is obtained. One or more bits that are not implemented as address bits are extracted from the pointer. The one or more bits are interpreted as an identifier of the class of the object. The class of the object is determined to correspond to the identifier.

Claims (55)

1. A method of determining a class of an object, including:

obtaining a pointer of the object, where the pointer points to the object;

extracting from the pointer one or more bits that are not implemented as address bits;

interpreting the one or more bits as an identifier of the class of the object;

determining the class of the object to correspond to the identifier;

accessing information in a class structure of the class of the object without loading the object; and

handling a virtual method call by using inline caches;

wherein handling the virtual method call by using inline caches includes determining a prediction class that is a likely class of the object associated with the virtual method call and statically jumping execution to a determined address if the prediction class matches the class of the object;

wherein determining the prediction class and the determined address includes using a class and an address associated with a previous virtual call;

wherein if the prediction class is not the class of the object, using a virtual method table associated with the extracted bits to determine an address of a method associated with the virtual method call.

2. A method as recited in claim 1 , wherein the pointer is a 64 bit pointer.

3. A method as recited in claim 1 , wherein the number of extracted bits are less than the number of bits used to represent the class structure.

4. A method as recited in claim 1 , wherein the number of extracted bits are less than the total number of bits not implemented as address bits in the pointer.

5. A method as recited in claim 1 , wherein the number of bits extracted is preconfigured or dynamically configured.

6. A method as recited in claim 1 , wherein the number of bits of the pointer implemented as address bits is associated with the maximum amount of memory that can physically exist on a system.

7. A method as recited in claim 1 , wherein the identifier of the class of the object is associated with at least one class structure pointer.

8. A method as recited in claim 1 , wherein the identifier of the class of the object uniquely identifies a class.

9. A method as recited in claim 1 , wherein the identifier of the class of the object is associated with more than one class.

10. A method as recited in claim 1 , wherein an entry of a table associates the identifier of the class of the object with at least a portion of class data.

11. A method as recited in claim 10 , wherein the portion of the class data includes a class structure pointer associated with the object or at least a portion of data contained in the class structure associated with the object.

12. A method as recited in claim 10 , wherein the portion of the class data includes a virtual method table associated with the class of the object or a pointer to a virtual method table associated with the class of the object.

13. A method as recited in claim 12 , further comprising handling a virtual method call by using the bits to locate a virtual method table containing an address of a method associated with the virtual method call.

14. A method as recited in claim 1 , wherein extracting includes using a mask, a bit wise operation, or a shifting operation.

15. A method as recited in claim 1 , wherein interpreting the one or more bits as an identifier of the class of the object includes performing processing required to use the bits as an identifier associated with the pointer.

16. A method as recited in claim 15 , wherein processing includes loading the bits into an immediate field of a processor instruction or loading the bits into a register.

17. A method as recited in claim 1 , wherein determining the class of the object to correspond to the identifier includes validating the bits as a valid identifier.

18. A method as recited in claim 1 , wherein determining the class of the object to correspond to the identifier includes comparing the bits to a predetermined value.

19. A method as recited in claim 18 , wherein when the bits do not match the predetermined value, a class structure pointer associated with the object is obtained in determining a class associated with the pointer.

20. A method as recited in claim 1 , further comprising handling a virtual method call by using the bits to locate in a virtual method table, an address of a method associated with the virtual method call.

21. A system for determining a class of an object, including:

a processor configured to:

obtain a pointer of the object, where the pointer points to the object;

extract from the pointer one or more bits that are not implemented as address bits;

interpret the one or more bits as an identifier of the class of the object,

determine the class of the object to correspond to the identifier;

access information in a class structure of the class of the object without loading the object; and

handle a virtual method call by using inline caches; and

a memory element coupled to the processor includes the object;

wherein the processor is configured to handle the virtual method call by using inline caches includes determining a prediction class that is a likely class of the object associated with the virtual method call and statically jumping execution to a determined address if the prediction class matches the class of the object;

wherein the processor is configured to determine the prediction class and the determined address includes using a class and an address associated with a previous virtual call;

wherein the processor is configured to use, if the prediction class is not the class of the object, a virtual method table associated with the extracted bits to determine an address of a method associated with the virtual method call.

22. A system as recited in claim 21 , wherein the memory element includes an entry of a table associates the identifier of the class of the object with at least a portion of class data.

23. A system as recited in claim 21 , wherein the processor determines the class of the object to correspond to the identifier by comparing the bits to a predetermined value.

24. A system as recited in claim 21 , wherein the processor is further configured to handle a virtual method call by using the bits to locate a virtual method table containing an address of a method associated with the virtual method call.

25. A system as recited in claim 21 , wherein the processor is further configured handle a virtual method call by determining a prediction class and statically jumping execution to a determined address if the prediction class matches the class of the object.

26. A computer program product for determining a class of an object, the computer program product being embodied in a computer readable storage medium and comprising computer instructions for:

obtaining a pointer of the object, where the pointer points to the object;

extracting from the pointer one or more bits that are not implemented as address bits;

interpreting the one or more bits as an identifier of the class of the object; and

determining the class of the object to correspond to the identifier;

accessing information in a class structure of the class of the object without loading the object and

handling a virtual method call by using inline caches;

wherein handling the virtual method call by using inline caches includes determining a prediction class that is a likely class of the object associated with the virtual method call and statically jumping execution to a determined address if the prediction class matches the class of the object;

wherein determining the prediction class and the determined address includes using a class and an address associated with a previous virtual call;

wherein if the prediction class is not the class of the object, using a virtual method table associated with the extracted bits to determine an address of a method associated with the virtual method call.

Assignments (8)
RELEASE OF SECURITY INTERESTS IN PATENTS RECORDED AT REEL/FRAME 052293/0121 Recorded Dec 3, 2025
From: GOLUB CAPITAL LLC, AS COLLATERAL AGENT
To: AZUL SYSTEMS, INC.
Reel/Frame 073466/0064 →
SECURITY INTEREST Recorded Dec 3, 2025
From: AZUL SYSTEMS, INC.
To: ARES CAPITAL CORPORATION, AS COLLATERAL AGENT
Reel/Frame 073828/0083 →
SECURITY INTEREST Recorded Apr 2, 2020
From: AZUL SYSTEMS, INC.
To: GOLUB CAPITAL LLC, AS COLLATERAL AGENT
Reel/Frame 052293/0121 →
RELEASE OF SECURITY INTEREST Recorded Apr 2, 2020
From: SILICON VALLEY BANK
To: AZUL SYSTEMS, INC.
Reel/Frame 052293/0869 →
RELEASE OF SECURITY INTEREST Recorded Feb 21, 2019
From: PARTNERS FOR GROWTH IV, L.P.
To: AZUL SYSTEMS, INC.
Reel/Frame 048411/0138 →
SECURITY INTEREST Recorded Mar 1, 2016
From: AZUL SYSTEMS, INC.
To: PARTNERS FOR GROWTH IV, L.P.
Reel/Frame 037959/0694 →
SECURITY INTEREST Recorded Feb 2, 2016
From: AZUL SYSTEMS, INC.
To: SILICON VALLEY BANK
Reel/Frame 037641/0665 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 2, 2005
From: TENE, GIL; SUNDARESAN, MURALI; WOLF, MICHAEL A.
To: AZUL SYSTEMS, INC.
Reel/Frame 017085/0939 →
Continuity (1)
Provisional Application 60610028 · Sep 14, 2004