18. An apparatus comprising: one or more processors; and memory storing executable instruction that, when executed by the one or more processors, cause the apparatus to: execute software that (a) is written in a first programming language (b) calls one or more native interpretive functions that interpret one or more non-native functions written in a second programming language different from the first programming language to enable the apparatus to execute the one or more non-native functions, and (c) calls one or more native functions written in the first programming language for execution by the apparatus, wherein each of the one or more native interpretive functions is written in the first programming language; and profile execution of the software by: identifying, based on execution of the one or more native interpretive functions, which of the one or more non-native functions is interpreted by the one or more native interpretive functions, resulting in an identified non-native function, obtaining profile information that describes one or more characteristics of how the identified non-native function executed on the apparatus, identifying which of the one or more native functions is being executed, resulting in an identified native function, and obtaining additional profile information that describes one or more characteristics of how the identified native function executed on the apparatus.
20. The apparatus recited in claim 18 , wherein the executable instructions, when executed by the one or more processors, cause the apparatus to profile the execution of the software by identifying the execution of the one or more native interpretive functions based on an examination of program stack logs after execution of the software is complete.