IP Library Granted Patent US 9,459,847
Granted Patent B2
US 9,459,847 · App. 14/936,546 · Granted Oct 4, 2016

Multi-sized data types for managed code

Inventors: Miguel de Icaza (Boston, MA); Rodrigo Kumpera (Boston, MA); Sebastien Pouliot (Quebec City, CA); Rolf Bjarne Kvinge (Madrid, ES); Aaron Dean Bockover (Raleigh, NC); Zoltan Varga (Budapest, HU)
Assignee: Xamarin Inc.
G06F8/41G06F9/455G06F9/4552G06F8/437
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,459,847
App. No.
14/936,546
Granted
Oct 4, 2016
Kind
B2
Abstract

Embodiments are directed towards generating applications that include multi-sized types running in managed code. During the compilation of an intermediate language version of an application, if a multi-size type is encountered, a runtime engine may perform actions to process the multi-size types. Accordingly, architecture information associated with the target computer may be determined. Data types corresponding to the architecture of the target computer and the multi-sized types may be determined based on the architecture information. Native code calls associated with an intermediate language code calls may be determined such that the parameters of the native code calls match the architecture dependent data types. And, a machine code version of the intermediate language code call may be generated. The generated machine code version of the intermediate language code may be executed with the data types specific to the target computer.

Claims (48)

1. A method for providing an application using a computer that performs actions, comprising:

when a multi-size type is provided during compilation of the application into a machine code version of the application, performing actions, including:

employing architecture information of a target computer to identify one or more data types associated with the target computer that correspond to the multi-sized type;

employing parameters of one or more native code calls associated with an intermediate language code call to identify matching of the one or more native code calls with the one or more data types;

providing a machine code version of the intermediate language code call that corresponds to the architecture information and also corresponds to the one or more native code calls;

when the target computer provides for just-in-time compiling, employing a run time engine to execute, on the target computer, a machine code version of the intermediate language code call having one or more values that correspond to the multi-size type and the one or more data types, wherein the one or more native code calls are executed using the one or more data types that correspond to the architecture information; and

when the target computer provides for disabling just-in-time compiling, inserting the machine code version of the intermediate language code call in the machine code version of the application.

2. The method of claim 1 , further comprising:

when the target computer provides for ahead of time compiling, inserting the machine code version of the intermediate language code call into the machine code version of the application, wherein the machine code version of the intermediate language code call includes one or more instructions to execute the one or more native code calls using the one or more data types; and

providing the machine code version of the application to the target computer for execution, wherein the executing of the machine code version of the application includes executing the inserted machine code version of the intermediate language code call.

3. The method of claim 1 , wherein the architecture information includes at least a word size of the target computer.

4. The method of claim 1 , wherein compilation of the application into the machine code version of the application, further comprises encountering the multi-size type during compilation of an intermediate language version of the application into the machine code version of the application, wherein the intermediate language code is based on one or more source code files.

5. The method of claim 1 , wherein the machine code version of the intermediate language code call, further comprises, a portion of machine code that corresponds to a calling convention supported by the target computer.

6. The method of claim 1 , wherein identifying the one or more native code calls is based on a pattern match that includes the one or more data types and a name of the one or more native code calls.

7. The method of claim 1 , wherein the multi-size type comprises one or more of: an integer, an unsigned integer, or a floating point value.

8. The method of claim 1 , wherein the runtime engine enables just-in-time compilation of the machine code version of the application.

9. A system for generating an application, comprising:

a computer, including:

a transceiver for communicating over the network;

a memory for storing at least instructions; and

a processor device that executes instructions that perform actions, including:

when a multi-size type is provided during compilation of the application into a machine code version of the application, performing actions, including:

employing architecture information of the computer to identify one or more data types associated with the computer that correspond to the multi-sized type;

employing parameters of one or more native code calls associated with an intermediate language code call to identify matching of the one or more native code calls with the one or more data types;

providing a machine code version of the intermediate language code call that corresponds to the architecture information and also corresponds to the one or more native code calls;

when the target computer provides for just-in-time compiling, employing a run time engine to execute, on the target computer, a machine code version of the intermediate language code call having one or more values that correspond to the multi-size type and the one or more data types, wherein the one or more native code calls are executed using the one or more data types that correspond to the architecture information; and

when the target computer provides for disabling just-in-time compiling, inserting the machine code version of the intermediate language code call in the machine code version of the application.

10. The system of claim 9 , further comprising:

when the computer provides for ahead of time compiling, inserting the machine code version of the intermediate language code call into the machine code version of the application, wherein the machine code version of the intermediate language code call includes one or more instructions to execute the one or more native code calls using the one or more data types; and

providing the machine code version of the application to the computer for execution, wherein the executing of the machine code version of the application includes executing the inserted machine code version of the intermediate language code call.

11. The system of claim 9 , wherein the architecture information includes at least a word size of the computer.

12. The system of claim 9 , wherein compilation of the application into the machine code version of the application, further comprises encountering the multi-size type during compilation of an intermediate language version of the application into the machine code version of the application, wherein the intermediate language code is based on one or more source code files.

13. The system of claim 9 , wherein the machine code version of the intermediate language code call, further comprises, a portion of machine code that corresponds to a calling convention supported by the computer.

14. The system of claim 9 , wherein identifying the one or more native code calls is based on a pattern match that includes the one or more data types and a name of the one or more native code calls.

15. The system of claim 9 , wherein the multi-size type comprises one or more of: an integer, an unsigned integer, or a floating point value.

16. The system of claim 9 , wherein the runtime engine enables just-in-time compilation of the machine code version of the application.

17. A processor readable non-transitory storage media that includes instructions for generating an application, wherein a computer that executes at least a portion of the instructions performs actions, comprising:

when a multi-size type is provided during compilation of the application into a machine code version of the application, performing actions, including:

employing architecture information of the computer to identify one or more data types associated with the computer that correspond to the multi-sized type;

employing parameters of one or more native code calls associated with an intermediate language code call to identify matching of the one or more native code calls with the one or more data types;

providing a machine code version of the intermediate language code call that corresponds to the architecture information and also corresponds to the one or more native code calls;

when the target computer provides for just-in-time compiling, employing a run time engine to execute, on the target computer, a machine code version of the intermediate language code call having one or more values that correspond to the multi-size type and the one or more data types, wherein the one or more native code calls are executed using the one or more data types that correspond to the architecture information; and

when the target computer provides for disabling just-in-time compiling, inserting the machine code version of the intermediate language code call in the machine code version of the application.

18. The media of claim 17 , further comprising:

when the computer provides for ahead of time compiling, inserting the machine code version of the intermediate language code call into the machine code version of the application, wherein the machine code version of the intermediate language code call includes one or more instructions to execute the one or more native code calls using the one or more data types; and

providing the machine code version of the application to the computer for execution, wherein the executing of the machine code version of the application includes executing the inserted machine code version of the intermediate language code call.

19. The media of claim 17 , wherein compilation of the application into the machine code version of the application, further comprises encountering the multi-size type during compilation of an intermediate language version of the application into the machine code version of the application, wherein the intermediate language code is based on one or more source code files.

20. The media of claim 17 , wherein identifying the one or more native code calls is based on a pattern match that includes the one or more data types and a name of the one or more native code calls.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 1, 2020
From: XAMARIN INC.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 053103/0633 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2015
From: DE ICAZA, MIGUEL; KUMPERA, RODRIGO; POULIOT, SEBASTIEN; KVINGE, ROLF BJARNE; BOCKOVER, AARON DEAN; VARGA, ZOLTAN
To: XAMARIN INC.
Reel/Frame 036996/0929 →
Continuity (2)
Continuation 14537298 · Nov 10, 2014
Related Publication 20160132303A1 · May 12, 2016