1. A method for processing a function with a plurality of execution spaces comprising: creating an internal compiler representation for said function, wherein said creating comprises: copying substantially all lexical tokens corresponding to a body of said function; and inserting said lexical tokens into a plurality of conditional if-statements, wherein a conditional if-statement is generated for each corresponding execution space of said plurality of execution spaces, and wherein each conditional if-statement determines which execution space said function is executing in; and during compilation, performing overload resolution at a call site of an overloaded function by checking for compatibility with a first execution space specified by one of said plurality of conditional if-statements, wherein said overloaded function is called within said body of said function.
1. A method for processing a function with a plurality of execution spaces comprising: creating an internal compiler representation for said function, wherein said creating comprises: copying substantially all lexical tokens corresponding to a body of said function; and inserting said lexical tokens into a plurality of conditional if-statements, wherein a conditional if-statement is generated for each corresponding execution space of said plurality of execution spaces, and wherein each conditional if-statement determines which execution space said function is executing in; and during compilation, performing overload resolution at a call site of an overloaded function by checking for compatibility with a first execution space specified by one of said plurality of conditional if-statements, wherein said overloaded function is called within said body of said function. 6. The method of claim 1 , further comprising: during said compilation, performing overload resolution at a call site of said overloaded function by checking for compatibility with a second execution space specified by one of said plurality of conditional if-statements.