Patents by Inventor Mads Torgersen
Mads Torgersen has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).
-
Patent number: 8549506Abstract: APIs are provided, that are external to a programming language but that provide functionality that can be plugged into a language compiler. The provided APIs tailor functionality associated with asynchronous programming, iterators or writing symmetric co-routines using a generalized pattern-based approach. Several types of resumable methods are provided in the APIs which can be applied to method bodies written in traditional program code. Syntactically distinguishable control points in method bodies written in traditional program code invoke transformation of the code by the compiler using the external APIs. The transformed code enables the pausing and resumption of the code sandwiched between control points in the transformed code. The source code contained within a method having control points in it is transformed so that code within the method can be executed in discrete parts, each part starting and ending at a control point in the transformed code.Type: GrantFiled: April 27, 2010Date of Patent: October 1, 2013Assignee: Microsoft CorporationInventors: Henricus Johannes Maria Meijer, Mads Torgersen, Neal M. Gafter, Niklas Gustafsson
-
Patent number: 8490115Abstract: A method of providing asynchronous programming support at run time for scope-based ambient state at a method call is disclosed. In response to the method call, an asynchronous method stack frame is created along with ambient state for the asynchronous method call. In one example of the method, a current frame of a method stack is captured. A new frame is instantiated by setting a previous reference of the new frame to the current frame and moving data from the previous frame into the current frame. One example of instantiating the new frame includes pushing the current frame onto the stack. In another example, the new frame is lazily created when changes have been made. A state machine used to transform the synchronously-created method into an asynchronous method is moved from a current state to a next state. The captured frame is restored.Type: GrantFiled: October 20, 2011Date of Patent: July 16, 2013Assignee: Microsoft CorporationInventors: Mads Torgersen, Stephen H. Toub, Eric L. Eilebrecht
-
Publication number: 20130104148Abstract: A method of providing asynchronous programming support at run time for scope-based ambient state at a method call is disclosed. In response to the method call, an asynchronous method stack frame is created along with ambient state for the asynchronous method call. In one example of the method, a current frame of a method stack is captured. A new frame is instantiated by setting a previous reference of the new frame to the current frame and moving data from the previous frame into the current frame. One example of instantiating the new frame includes pushing the current frame onto the stack. In another example, the new frame is lazily created when changes have been made. A state machine used to transform the synchronously-created method into an asynchronous method is moved from a current state to a next state. The captured frame is restored.Type: ApplicationFiled: October 20, 2011Publication date: April 25, 2013Applicant: Microsoft CorporationInventors: Mads Torgersen, Stephen H. Toub, Eric L. Eilebrecht
-
Patent number: 8364750Abstract: The utilization of data services (such as web services) may involve the invocation of services, which may reduce performance and overburden the server. In some scenarios, the invocation may be specified in a language that does not support batch invocation, but it may not be feasible to re-code the invocations in a language that supports batching. Instead, the service invocations may be automatically translated into a batch logic specified in a batch-capable language and sent to the service as a batch. For example, a local proxy may receive a language-integrated query having two or more service invocations, compile the query into an expression tree including the two or more invocations, and send the expression tree to the service host to achieve the batch processing of the service invocations.Type: GrantFiled: June 24, 2008Date of Patent: January 29, 2013Assignee: Microsoft CorporationInventors: Luca Bolognese, Lucas James Hoban, Erik Meijer, Anders Hejlsberg, Matthew J. Warren, Dinesh Chandrakant Kulkarni, Mads Torgersen, John W. Dyer
-
Publication number: 20120324431Abstract: The present invention extends to methods, systems, and computer program products for transforming source code to await execution of asynchronous operations. Embodiments of the invention simplify authoring and use of asynchronous methods, by generating statements that use well-defined awaitable objects to await completion of asynchronous operations. For example, a computer system can transform a statement that requests to await the completion of an asynchronous operation into a plurality of statements that use a predefined pattern of members of an awaitable object corresponding the asynchronous operation. The pattern can include one or more members configured to return a completion status of the asynchronous operation, one or more members configured to resume execution of the asynchronous method at a resumption point when the asynchronous operation completes, and one or more members configured to retrieve completion results.Type: ApplicationFiled: June 16, 2011Publication date: December 20, 2012Applicant: Microsoft CorporationInventors: Stephen Harris Toub, Mads Torgersen, Lucian Jules Wischik, Anders Hejlsberg, Niklas Gustafsson, Dmitry Lomov, Matthew J. Warren
-
Publication number: 20120324457Abstract: The present invention extends to methods, systems, and computer program products for representing various programming elements with compiler-generated tasks. Embodiments of the invention enable access to the future state of a method through a handle to a single and composable task object. For example, an asynchronous method is rewritten to generate and return a handle to an instance of a builder object, which represents one or more future states of the asynchronous method. Information about operation of the asynchronous method is then passed through the handle. Accordingly, state of the asynchronous method is trackable prior to and after completing.Type: ApplicationFiled: June 16, 2011Publication date: December 20, 2012Applicant: Microsoft CorporationInventors: Stephen Harris Toub, Mads Torgersen, Lucian Jules Wischik, Anders Hejlsberg, Dmitry Lomov, Matthew J. Warren, Robert Eric Lippert
-
Patent number: 8245210Abstract: Compile-time context information is captured and provided to a runtime binder for dynamic features in programming languages. For example, a C# run-time binder uses the information to perform a run-time bind with semantics matching the compiler's binding behavior. Dynamic programming language features supported relate to compound operations, events, delegates, member accessibility, dynamic-typed objects, structs passed by ref, arguments passed by name rather than position, extension methods, conditionally compiled methods, literal arguments, overflow checking, dynamic indexed properties, dynamic method groups, and static method groups.Type: GrantFiled: May 22, 2009Date of Patent: August 14, 2012Assignee: Microsoft CorporationInventors: Samuel Ng, Mads Torgersen, Martin Maly, Christopher Joseph Burrows, James Hugunin
-
Patent number: 8060868Abstract: Providing for read/write access to captured free variables expressed as environment data objects is disclosed herein. By way of example, free variables can be rewritten as a field of a private class, and accessed via an instance of the private class captured within the environment data object. In such a manner, no need of a placeholder or proxy function is required to access the free variable. Consequently, the subject innovation provides a simplified method for capturing free variables within expression trees and providing read/write access to such variables.Type: GrantFiled: June 21, 2007Date of Patent: November 15, 2011Assignee: Microsoft CorporationInventors: Henricus Johannes Maria Meijer, Anders Hejlsberg, Mads Torgersen, Peter A. Hallam, Matthew J. Warren, Dinesh C. Kulkarni, Clemens Alden Szyperski
-
Publication number: 20110265070Abstract: APIs are provided, that are external to a programming language but that provide functionality that can be plugged into a language compiler. The provided APIs tailor functionality associated with asynchronous programming, iterators or writing symmetric co-routines using a generalized pattern-based approach. Several types of resumable methods are provided in the APIs which can be applied to method bodies written in traditional program code. Syntactically distinguishable control points in method bodies written in traditional program code invoke transformation of the code by the compiler using the external APIs. The transformed code enables the pausing and resumption of the code sandwiched between control points in the transformed code. The source code contained within a method having control points in it is transformed so that code within the method can be executed in discrete parts, each part starting and ending at a control point in the transformed code.Type: ApplicationFiled: April 27, 2010Publication date: October 27, 2011Applicant: Microsoft CorporationInventors: Henricus Johannes Maria Meijer, Mads Torgersen, Neal M. Gafter, Niklas Gustafsson
-
Publication number: 20110167088Abstract: Efficient immutable syntax representation with parent pointers under incremental change is enabled by creating a data structure comprising at least one tree structure that allows both upward and downward references in the tree and a tree structure that is immutable (read-only), and allows parts of itself to be re-used in other data structures. The data structure described enables tools to search and target particular sub trees. The fragment of the tree representing the targeted sub tree is produced as it is used. The rest of the tree is not produced. The read-only tree retains relative information, allowing it to be reassembled and shared.Type: ApplicationFiled: January 7, 2010Publication date: July 7, 2011Applicant: Microsoft CorporationInventors: Matthew J. Warren, Avner Y. Aharoni, Mads Torgersen, Renaud Paquay, Neal M. Gafter, Jared Parsons, David N. Schach, Aleksey V. Tsingauz, Peter Golde, Kevin Pilch-Bisson, Karen Liu
-
Publication number: 20110167248Abstract: Unsuspended co-routines are handled by the machine call stack mechanism in which the stack grows and shrinks as recursive calls are made and returned from. When a co-routine is suspended, however, additional call stack processing is performed. A suspension message is issued, and the entire resume-able part of the call stack is removed, and is copied to the heap. A frame that returns control to a driver method (a resumer) is copied to the call stack so that resumption of the co-routine does not recursively reactivate the whole call stack. Instead the resumer reactivates only the topmost or most current frame called the leaf frame. When a co-routine is suspended, it does not return to its caller, but instead returns to the resumer that has reactivated it.Type: ApplicationFiled: January 7, 2010Publication date: July 7, 2011Applicant: Microsoft CorporationInventors: Neal M. Gafter, Mads Torgersen, Henricus Johannes Maria Meijer, Niklas Gustafsson
-
Publication number: 20110154295Abstract: A design time debugging tool provides debugging information available from the compiler during design time, as if a user were debugging code that provided the debugging information, by exposing information available from the compiler without initiation of a debugging session and without executing the program being debugged.Type: ApplicationFiled: December 23, 2009Publication date: June 23, 2011Applicant: Microsoft CorporationInventors: Avner Y. Aharoni, Mads Torgersen
-
Patent number: 7899840Abstract: A group join query facilitates navigation of relationships (e.g., one-to-many or many-to-one) across a plurality of data collections. Such a query operator produces nested or hierarchical results that capture the arguments passed thereto. If desired, the nested results can be flattened to simulate conventional relational database results.Type: GrantFiled: March 29, 2007Date of Patent: March 1, 2011Assignee: Microsoft CorporationInventors: Henricus Johannes Maria Meijer, Anders Hejlsberg, Dinesh Chandrakant Kulkarni, Matthew J. Warren, Mads Torgersen
-
Patent number: 7890939Abstract: Partial methods enable separation of method declaration and/or calls from method implementation. A partial method specifies a signature of a join or hook point in a class. Calls to a partial method specify a join or hook point in code that can optionally be linked with an actual method implementation of the same signature. Separate method implementations or other code related to a partial method are injected into a single program prior to execution. Unimplemented partial methods are treated as no operation instructions or otherwise ignored.Type: GrantFiled: February 13, 2007Date of Patent: February 15, 2011Assignee: Microsoft CorporationInventors: Dinesh C. Kulkarni, Mads Torgersen, Henricus Johannes Maria Meijer, Anders Hejlsberg, Matthew J. Warren, Peter A. Hallam
-
Patent number: 7873592Abstract: Systems and methods facilitate type inference in a computer-programming environment. Type inference can be applied to generic method or function invocation in object-oriented languages to determine a type argument list left implicit by a programmer. One or more type arguments can be identified as a parameter type to which all other types in a set of associated parameter types can be converted.Type: GrantFiled: April 20, 2007Date of Patent: January 18, 2011Assignee: Microsoft CorporationInventors: Henricus Johannes Maria Meijer, Gavin Bierman, Mads Torgersen, Anders Hejlsberg, Danny Van Velzen, Peter A. Hallam, Robert Eric Lippert, Matthew J. Warren, Paul A. Vick, Amanda Silver
-
Patent number: 7860823Abstract: The claimed subject matter provides a system and/or a method that facilitates querying data utilizing an explicit representation of an embedded language. An IEnumberable component can receive a data operation that can be employed on a collection of data utilizing at least one of an IEnumerable interface and an IEnumerable<T> interface. A mirror component can provide a generic interface to query the collection of data by representing the collection of data as an expression tree utilizing at least one function that mirrors the at least one IEnumerable interface and the IEnumerable<T> interface.Type: GrantFiled: August 16, 2006Date of Patent: December 28, 2010Assignee: Microsoft CorporationInventors: Anders Hejlsberg, Matthew J. Warren, Henricus Johannes Maria Meijer, Dinesh C. Kulkarni, Mads Torgersen
-
Publication number: 20100299658Abstract: Compile-time context information is captured and provided to a runtime binder for dynamic features in programming languages. For example, a C# run-time binder uses the information to perform a run-time bind with semantics matching the compiler's binding behavior. Dynamic programming language features supported relate to compound operations, events, delegates, member accessibility, dynamic-typed objects, structs passed by ref, arguments passed by name rather than position, extension methods, conditionally compiled methods, literal arguments, overflow checking, dynamic indexed properties, dynamic method groups, and static method groups.Type: ApplicationFiled: May 22, 2009Publication date: November 25, 2010Applicant: Microsoft CorporationInventors: Samuel Ng, Mads Torgersen, Martin Maly, Christopher Joseph Burrows, James Hugunin
-
Publication number: 20100299660Abstract: A static type, called “dynamic”, is introduced into a statically bound programming language. An expression or subexpression that is defined as a static type called “dynamic” in the source code of a program written in the statically bound programming language, is bound based on its runtime type instead of on its compile time type. Binding can be performed based on a mixture of compile time and runtime types that are based on the specification of types of expressions in source code. This type of binding is called hybrid binding. Operations are bound using the runtime type of constituent expressions (i.e., the runtime type of a receiver, an argument, or an operand) typed as dynamic and the compile time type of static constituents. If any constituent expression of an operation is dynamic, binding occurs at runtime instead of at compile time.Type: ApplicationFiled: May 21, 2009Publication date: November 25, 2010Applicant: Microsoft CorporationInventors: Mads Torgersen, Anders Hejlsberg, James J. Hugunin, Matthew J. Warren, Neal Gafter, Lucian Jules Wischik, Robert Eric Lippert, Samuel Y. Ng, Christopher Joseph Burrows, Alex C. Turner
-
Patent number: 7657505Abstract: The subject disclosure pertains to systems and methods that facilitate retrieval of data. In particular, an application defined data shape can regulate loading of data for use in an object relational mapping system, enabling the object-oriented application to access data in a relational data base system. Data shapes define policies that control data retrieval, enabling efficient data loading. A data shape allows users to declaratively specify a set of policies to be applied to all queries associated with the data shape. In particular, data shapes can include policies that control eager loading. In addition, data shapes can also include filtering policies intended to reduce or limit data retrieved from a relational database.Type: GrantFiled: January 19, 2007Date of Patent: February 2, 2010Assignee: Microsoft CorporationInventors: Anders Hejlsberg, Matthew J. Warren, Dinesh C. Kulkarni, Henricus Johannes Maria Meijer, Terry A. Adams, Jomo Ahab Fisher, Daigo Hamura, Mads Torgersen
-
Publication number: 20090328016Abstract: Expression tree versatility and applicability are enhanced to facilitate programming across various program languages and execution contexts. An expression tree can represent programmatic code as data in a representation common to multiple process mechanisms. As a result, entire programs or portions thereof can be captured and processed by a numerous common language components. Further, language specific concepts can be reduced to the common representation to enable language independent employment.Type: ApplicationFiled: June 27, 2008Publication date: December 31, 2009Applicant: MICROSOFT CORPORATIONInventors: Timothy Yat Tim Ng, Robert Elliott Viehland, James Hugunin, Samuel Y. Ng, Matthew J. Warren, Anders Hejlsberg, Henricus Johannes Maria Meijer, John Wesley Dyer, Avner Y. Aharoni, John Benjamin Messerly, Martin Maly, William P. Chiles, Mads Torgersen