IP Library Granted Patent US 8,037,482
Granted Patent B1
US 8,037,482 · App. 11/296,652 · Granted Oct 11, 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 8,037,482
App. No.
11/296,652
Granted
Oct 11, 2011
Kind
B1
Abstract

Reaching a determination associated with a class of an object is disclosed. An identifier associated with the class of the object is extracted from a pointer to the object. The extracted identifier is compared to a comparison value. At least in part using a result of the comparison a determination is reached.

Claims (53)

1. A method for reaching a determination associated with a class of an object, comprising:

extracting, from a pointer to the object, an identifier associated with the class of the object;

comparing the extracted identifier to a dynamically determined comparison value, wherein the comparison value is a predicted object class identifier for the object; and

reaching a determination associated with the class of the object at least in part using a result of the comparison;

wherein reaching the determination includes:

determining that the extracted identifier does not match the comparison value during the comparison;

using the extracted identifier to locate a table entry in a table that includes a plurality of table entries mapping a plurality of class identifiers to a corresponding plurality of class data;

using the located table entry to locate a virtual method table;

identifying an address associated with a code section; and

jumping to the identified address.

2. A method as recited in claim 1 , wherein the pointer to the object is associated with a first group of one or more bits included in an instruction.

3. A method as recited in claim 2 , wherein the comparison value is associated with a second group of one or more bits included in the instruction.

4. A method as recited in claim 1 , wherein reaching the determination includes performing a trap when the extracted identifier does not match the comparison value.

5. A method as recited in claim 1 , wherein extracting the class identifier includes extracting from the pointer one or more bits that are not implemented as address bits.

6. A method as recited in claim 1 , wherein reaching the determination is at least a portion of preparing, handling, or executing an invocation associated with a method of the object.

7. A method as recited in claim 6 , wherein preparing the invocation includes modifying data associated with a stack frame.

8. A method as recited in claim 6 , wherein the invocation includes a virtual method invocation.

9. A method as recited in claim 1 , wherein the comparison value is associated with a virtual method invocation of the predicted object class.

10. A method as recited in claim 1 , wherein the comparison value is associated with a previous virtual call.

11. A method as recited in claim 1 , wherein when the extracted identifier matches the comparison value during the comparison, reaching the determination includes jumping to a comparison address of a program code section.

12. A method as recited in claim 1 , wherein when the extracted identifier does not match the comparison value during the comparison, reaching the determination includes obtaining a class structure pointer associated with the object.

13. A method as recited in claim 1 , wherein the object is not loaded.

14. A method as recited in claim 1 , wherein the identifier consists of a less number of bits than a number of bits used to represent a class structure associated with the object.

15. A method as recited in claim 1 , wherein the identifier consists of a less number of bits than a total number of bits not implemented as address bits in the pointer to the object.

16. A method as recited in claim 1 , further comprising validating the identifier as a valid identifier.

17. A computer program product comprising instruction at least in part used to reach a determination associated with a class of an object, the computer program product comprising instruction being embodied in a computer readable storage medium, the instruction comprising:

a first set of one or more bits identifying the instruction;

a second set of one or more bits associated with a pointer to the object, wherein the pointer includes an identifier associated with the class of the object; and

a third set of one or more bits associated with a dynamically determined comparison value used in a comparison with the identifier, wherein the comparison value is a predicted object class identifier for the object;

wherein in the event that the identifier associated with the class of the object does not match the comparison value:

the identifier is used to locate a table entry in a table that includes a plurality of table entries mapping a plurality of class identifiers to a corresponding plurality of class data;

the located table entry is used to locate a virtual method table, identify an address associated with a code section, and direct a processor to jump to the identified address.

18. The computer program product comprising instruction as recited in claim 17 , wherein the second set and the third set includes one or more of the following: an immediate value to be directly used in the comparison, memory address associated with a value to be used in the comparison, and an identifier of a register containing a value to be used in the comparison.

19. The computer program product comprising instruction as recited in claim 17 , wherein the instruction includes a group of one or more bits specifying one or more of the following: an instruction format specification, a format of an instruction field, and a configuration associated with an operation of the instruction.

20. The computer program product comprising instruction as recited in claim 17 , wherein the first set of one or more bits is at least in part used to determine one or more operations associated with the instruction.

21. The computer program product comprising instruction as recited in claim 17 , wherein when the extracted identifier does not match the comparison value during the comparison, a trap is performed.

22. The computer program product comprising instruction as recited in claim 17 , wherein the comparison is associated with preparing, handling, or executing an invocation associated with a method of the object.

23. A system for reaching a determination associated with a class of an object, comprising:

a processor configured to:

extract, from a pointer to the object, an identifier associated with the class of the object;

compare the extracted identifier to a dynamically determined comparison value, wherein the comparison value is a predicted object class identifier for the object; and

reach a determination associated with the class of the object at least in part using a result of the comparison;

wherein reaching the determination includes:

determining that the extracted identifier does not match the comparison value during the comparison;

using the extracted identifier to locate a table entry in a table that includes a plurality of table entries mapping a plurality of class identifiers to a corresponding plurality of class data;

using the located table entry to locate a virtual method table;

identifying an address associated with a code section; and

jumping to the identified address; and

a memory coupled to the processor.

24. A system as recited in claim 23 , wherein the pointer to the object is associated with a first group of one or more bits included in an instruction used by the processor.

25. A system as recited in claim 24 , wherein the comparison value is associated with a second group of one or more bits included in the instruction used by the processor.

26. A system as recited in claim 23 , wherein the processor is further configured to perform a trap when the extracted identifier does not match the comparison value.

27. A system as recited in claim 23 , wherein the determination associated with the class of an object is at least a portion of preparing, handling, or executing an invocation associated with a method of the object.

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 Mar 13, 2006
From: TENE, GIL; CLICK JR., CLIFF N.; SUNDARESAN, MURALI; WOLF, MICHAEL A.
To: AZUL SYSTEMS, INC.
Reel/Frame 017332/0730 →
Continuity (2)
Continuation In Part 11227419 · Sep 14, 2005
Provisional Application 60610028 · Sep 14, 2004