IP Library Granted Patent US 9,645,795
Granted Patent B1
US 9,645,795 · App. 14/457,734 · Granted May 9, 2017

Accelerated class check

Inventors: Gil Tene (Los Altos Hills, CA); Murali Sundaresan (Sunnyvale, CA); Michael A. Wolf (San Francisco, CA)
Assignee: Azul Systems, Inc.
G06F8/315
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 9,645,795
App. No.
14/457,734
Granted
May 9, 2017
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 (37)

1. A system, including:

a set of one or more processors configured to:

obtain a pointer of an object, wherein the pointer includes a set of address bits and a set of header bits;

extract from the obtained pointer a subset of the header bits, wherein the extracted subset of the header bits comprise non-address bits;

interpret the subset of header bits extracted from the pointer as an identifier of a class of the object; and

determine the class of the object to correspond to the identifier, including comparing the extracted subset of header bits to a predetermined value, and in the event that the extracted subset of header bits does not match the predetermined value, obtain a class structure pointer associated with the object to determine a class associated with the pointer; and

a memory coupled to the set of one or more processors and configured to provide the set of one or more processors with instructions.

2. The system of claim 1 wherein a number of extracted bits is less than a number of bits used to represent a class structure.

3. The system of claim 1 wherein a number of extracted bits is less than a total number of bits not implemented as address bits in the pointer.

4. The system of claim 1 wherein a number of bits extracted is either preconfigured or dynamically configured.

5. The system of claim 1 wherein a number of bits of the pointer implemented as address bits is associated with a maximum amount of memory that can physically exist on a system.

6. The system of claim 1 wherein the identifier of the class of the object is associated with at least one class structure pointer.

7. The system of claim 1 wherein the identifier of the class of the object uniquely identifies a class.

8. The system of claim 1 wherein the identifier of the class of the object is associated with more than one class.

9. The system of 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.

10. The system of claim 9 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 a class structure associated with the object.

11. The system of claim 9 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.

12. The system of claim 11 wherein the set of one or more processors is further configured to handle a virtual method call at least in part by using the extracted subset of header bits to locate a virtual method table containing an address of a method associated with the virtual method call.

13. The system of claim 1 , wherein extracting includes using a mask, a bit wise operation, or a shifting operation.

14. The system of claim 1 wherein interpreting the extracted subset of header bits as an identifier of the class of the object includes performing processing required to use the extracted subset of header bits as an identifier associated with the pointer.

15. The system of claim 14 wherein the processing includes loading the extracted subset of header bits into an immediate field of a processor instruction or loading the extracted subset of header bits into a register.

16. The system of claim 1 wherein determining the class of the object to correspond to the identifier includes validating the extracted subset of header bits as a valid identifier.

17. The system of claim 1 wherein the set of one or more processors is further configured to handle a virtual method call at least in part by using the extracted subset of header bits to locate, in a virtual method table, an address of a method associated with the virtual method call.

18. The system of claim 1 wherein the set of one or more processors is further configured to handle a virtual method call at least in part by determining a prediction class and statically jumping execution to a determined address if the prediction class matches the class of the object.

19. The system of claim 18 wherein determining the prediction class and the determined address includes using a class and an address associated with a previous virtual call.

20. The system of claim 19 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.

21. The system of claim 1 wherein the determining of the class of the object to correspond to the identifier includes comparing the extracted bits with a comparison class identifier.

22. A method, comprising:

obtaining a pointer of an object, wherein the pointer includes a set of address bits and a set of header bits;

extracting from the obtained pointer a subset of the header bits, wherein the extracted subset of the header bits comprise non-address bits;

interpreting the subset of header bits extracted from the pointer as an identifier of a class of the object; and

determining, using a set of one or more processors, the class of the object to correspond to the identifier, including comparing the extracted subset of header bits to a predetermined value, and in the event that the extracted subset of header bits does not match the predetermined value, obtaining a class structure pointer associated with the object to determine a class associated with the pointer.

23. A computer program product embodied in a non-transitory computer readable medium and comprising computer instructions for:

obtaining a pointer of an object, wherein the pointer includes a set of address bits and a set of header bits;

extracting from the obtained pointer a subset of the header bits, wherein the extracted subset of the header bits comprise non-address bits;

interpreting the subset of header bits extracted from the pointer as an identifier of a class of the object; and

determining the class of the object to correspond to the identifier, including comparing the extracted subset of header bits to a predetermined value, and in the event that the extracted subset of header bits does not match the predetermined value, obtaining a class structure pointer associated with the object to determine a class associated with the pointer.

Assignments (4)
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 Apr 2, 2020
From: AZUL SYSTEMS, INC.
To: GOLUB CAPITAL LLC, AS COLLATERAL AGENT
Reel/Frame 052293/0121 →
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 →
Continuity (3)
Continuation 13157170 · Jun 9, 2011
Continuation 11227419 · Sep 14, 2005
Provisional Application 60610028 · Sep 14, 2004