Patents by Inventor Jonathon Michael Stall

Jonathon Michael Stall 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).

  • Publication number: 20110314461
    Abstract: The present invention extends to methods, systems, and computer program products for implementing parallel loops with serial semantics. Embodiments of the invention provide a semantic transforms and codegen patterns that provide more efficient parallel loop implementations with serial loop semantics. Embodiments of the invention support assignments within for-loop bodies, support break/return constructs within for-loop bodies, and run transformations to covert serial constructs to parallel constructs.
    Type: Application
    Filed: June 17, 2010
    Publication date: December 22, 2011
    Applicant: Microsoft Corporation
    Inventors: Jonathon Michael Stall, Curt Oliver Hagenlocher, John Benjamin Messerly, James J. Hugunin
  • Publication number: 20110314365
    Abstract: The present invention extends to methods, systems, and computer program products for decompiling loops in a spreadsheet. Embodiments of the invention detect loops by walking a dependency graph on a spreadsheet. As nodes are encountered, sequences of the same formulas are looked for in a normalized representation of the spreadsheet (e.g., R1C1 notation). When the same formulas are identified, the formulas may represent a loop. The spatial structure of the cells is analyzed to determine which cells are to be stored in arrays and which cells can be loop carried dependencies.
    Type: Application
    Filed: June 17, 2010
    Publication date: December 22, 2011
    Applicant: Microsoft Corporation
    Inventors: John Benjamin Messerly, James J. Hugunin, Jonathon Michael Stall, Curt Oliver Hagenlocher
  • Publication number: 20110307874
    Abstract: The present invention extends to methods, systems, and computer program products for creating text functions form a spreadsheet. Embodiments of the invention extract functions from spreadsheets and represent the functions in textual form. Representation in textual form promotes code reuse, clarify, expressive power, and better performance. Text can be rendered in virtually any programming language, such as, for example, C#, C++, Visual Basic (“VB”), etc. In some embodiments, programming language extensibility to support spreadsheet compatible data types and functions is utilized.
    Type: Application
    Filed: June 15, 2010
    Publication date: December 15, 2011
    Applicant: Microsoft Corporation
    Inventors: John Benjamin Messerly, James J. Hugunin, Jonathon Michael Stall, Curt Oliver Hagenlocher
  • Publication number: 20110307872
    Abstract: The present invention extends to methods, systems, and computer program products for script debugging. Embodiments of the invention serve as a plug-in to an existing debugger. The plug-in leverages the debuggers user-interface and engine. The plug-in can be a controller that subscribes to common notifications and is guided by a state machine, which stitches together a script control channel with an existing debug channel.
    Type: Application
    Filed: June 15, 2010
    Publication date: December 15, 2011
    Applicant: Microsoft Corporation
    Inventor: Jonathon Michael Stall
  • Patent number: 7917909
    Abstract: A method and system for implementing detecting deadlocks in interop-debugging is described herein. One or more synchronization objects that an application program interface (API) could block on are identified. A canary thread that takes one or more of the synchronization objects is created. The canary thread is called to take the one or more synchronization objects. If the canary thread returns within a predetermined timeout period, then the one or more synchronization objects are available and safe to take. If the canary thread does not return within the predetermined timeout period, then the one or more synchronization objects may not be available.
    Type: Grant
    Filed: May 23, 2006
    Date of Patent: March 29, 2011
    Assignee: Microsoft Corporation
    Inventor: Jonathon Michael Stall
  • Publication number: 20100180269
    Abstract: Various domains may wish to specify different implementations of the type; e.g., a compilation domain may describe the type statically, an execution domain may instantiate objects of the given type, while a debugging execution domain may associate additional debugging information such as a symbol name. This may be achieved by specifying a type implementation of a particular type within respective domains which all implement a common type interface. A type binding instruction set may then select a type implementation for the type within the target instruction set according to the domain, and may bind type instances of the type within target instruction set to the selected type implementation for the current domain. This technique yields domain-specific variance in type implementation without having to reconfigure the target instruction set or perform domain-checking logic there-within.
    Type: Application
    Filed: January 9, 2009
    Publication date: July 15, 2010
    Applicant: c/o Microsoft Corporation
    Inventors: Jonathon Michael Stall, Renaud Paquay, Sonja Keserovic, Michael Gregory Montwill
  • Publication number: 20100161910
    Abstract: Instruction sets in computing environments may execute within one of several domains, such as a natively executing domain, an interpretively executing domain, and a debugging executing domain. These domains may store values in a shared region of memory in different ways. It may be difficult to perform operations on such values, particularly if a domain that generated a particular value cannot be identified or no longer exist, which may obstruct shared accessing of values and evaluative tasks such as stack walks. Instead, accessors may be associated with a stored value that perform various operations (such as low-level assembly instructions like Load, Store, and Compare) according to the standards of the value-generating domain, and domains may be configured to operate on the value through the accessors. This configuration may promote consistent accessing of values without having to identify or consult the value-generating domain or reconfiguring the instruction sets.
    Type: Application
    Filed: December 18, 2008
    Publication date: June 24, 2010
    Applicant: Microsoft Corporation
    Inventors: Jonathon Michael Stall, Gregg Bernard Miskelly, Richard Michael Byers, Eric H. Feiveson
  • Publication number: 20100162212
    Abstract: A debugging pipeline may be developed to create a debugging experience for computer code operating in an execution environment, using a debugging tool outside of the execution environment. A producer can publish a debugging pipeline, configured to link the producer to a consumer (e.g., a debugging tool) by exposing a debugging pipeline interface object to a consumer. The debugging pipeline can implement a set of debugging protocols, comprising: protocol for processing of debugging requests for computer code in at least one of at least two computer languages; a protocol configured for processing of computer code language types in respective signatures without exposing operating system specific constructs; and a protocol for a first debugging pipeline to be isolated from one or more second debugging pipelines. Additionally, a consumer component can provide debugging of the computer code in the execution environment.
    Type: Application
    Filed: December 23, 2008
    Publication date: June 24, 2010
    Applicant: Microsoft Corporation
    Inventors: Jonathon Michael Stall, Brian R. Crawford
  • Publication number: 20100162049
    Abstract: A low privilege debug pipeline publisher advertises a debugging pipeline. Instead of having a client to which a debugger on the server has been attached interrogate the server for debugging information, the client requests information from the server. Control is returned to the server which can refuse to provide the requested information to the client. A debuggee server executes client code being debugged in an isolated context so that pausing the code at a breakpoint does not block the server. The server can apply transforms to compiled code to make the code cooperate with debugging services so that a privileged component to inspect the debuggee code is not needed.
    Type: Application
    Filed: December 19, 2008
    Publication date: June 24, 2010
    Applicant: Microsoft Corporation
    Inventors: Jonathon Michael Stall, Charles P. Jazdzewski
  • Publication number: 20100153693
    Abstract: Within the field of computing, many scenarios involve the execution of an instruction set within a domain that is configured to support an execution context. However, various portions of the instruction set may be preferably executed in different domains, such as for promoting performance and for providing debugging features like the ability to simulate execution of a debuggee function without incurring side-effects in the debuggee. Portions of the instruction set may therefore be executed in different domains by inserting domain switch points in the instruction set specifying a target domain. The instruction set may then initiate execution in an initial domain, and upon reaching a domain switch point, may transition to the target domain. In some embodiments, the domain switch points may be automatically inserted into the target instruction set based on various domain switch criterion, such as performance, reliability, and affinity of an instruction with a particular domain.
    Type: Application
    Filed: December 17, 2008
    Publication date: June 17, 2010
    Applicant: Microsoft Corporation
    Inventors: Jonathon Michael Stall, Gregg Bernard Miskelly, Richard Michael Byers, Eric Hurwitz Feiveson
  • Publication number: 20100153939
    Abstract: User script code that has been developed for execution in a host application can be remapped to debuggable script code, based on explicit debugging gestures, allowing for appropriate debugging coverage for the code while mitigating execution (in)efficiency issues. Capabilities of an application virtual machine used for the host application can be determined, and the user script code can be instrumented with guards for detecting explicit debugging gestures based on a virtual machine's (VM?) capabilities. The instrumented user script code can be executed in a runtime environment, for example, by a just-in-time compilation service. If an explicit debugging gesture is detected, a function where the gesture was detected can be transformed into debuggable script code, in one embodiment, based on the debuggable gesture detected.
    Type: Application
    Filed: December 12, 2008
    Publication date: June 17, 2010
    Applicant: Microsoft Corporation
    Inventors: Jonathon Michael Stall, Anthony L. Crider, Igor A. Zinkovsky, James Hugunin
  • Publication number: 20100153927
    Abstract: User script code that is developed to be run in a host application, for example, as a macro can be transformed into debuggable code so that the host application may continue to operate during a debugging stop operation. Traceback methods can be created that call back into the host application to allow the host application to cooperatively operate and update its user-interface. The user script code can be transformed by injecting callbacks to the traceback methods at respective locations in the code where a stopping operation may be installed during debugging. Further, two or more debugging features can be combined into a single user script code transform using an iterator pattern function.
    Type: Application
    Filed: December 16, 2008
    Publication date: June 17, 2010
    Applicant: Microsoft Corporation
    Inventors: Jonathon Michael Stall, Anthony L. Crider, Igor A. Zinkovsky
  • Publication number: 20090328020
    Abstract: Interface optimization is provided using a closed system in which all the individual software components in the system are known to the compiler at a single point in time. This knowledge enables significant opportunities to optimize the implementation of interfaces on a set of implemented objects. When code is compiled, because the compiler knows the full list of interfaces and the objects which implement the interfaces, it can improve execution and working set (i.e., recently referenced pages in a program's virtual address space) when implementing the interfaces on objects. This improvement may be realized by reducing the size of interface lookup tables which map each interface to the object types which implement that particular interface.
    Type: Application
    Filed: June 28, 2008
    Publication date: December 31, 2009
    Applicant: Microsoft Corporation
    Inventors: Jeffrey E. Stall, Jonathon Michael Stall
  • Publication number: 20090319999
    Abstract: The present invention extends to methods, systems, and computer program products for simulating stepping through interpreted code. Embodiments of the present invention facilitate debugging interpreted code. Thus, existing debugger technologies (e.g., those configured for use with compiled code) can be utilized to debug interpreted code. More specifically, existing debugger technologies can be used to step through interpreted code, without stepping into the code of interpreter itself Accordingly, users developing interpreted code can be provided a stepping experience of relatively the same quality provided to developers developing compiled code, without having to reengineer debuggers to compensate for interpreted code.
    Type: Application
    Filed: June 19, 2008
    Publication date: December 24, 2009
    Applicant: Microsoft Corporation
    Inventors: Jonathon Michael Stall, Jeffrey E. Stall
  • Publication number: 20090307528
    Abstract: The present invention extends to methods, systems, and computer program products for simulating operations through out-of-process execution. When a diagnostic operation is to be performed for a target execution context, a separate execution context is created based on the same executable code used to create the target execution context. An execution boundary separates the target execution context and the separate execution context such that execution in the separate execution context does not influence the behavior of the target execution context. State data from the target execution context is marshaled and transferred to the separate execution context. The separate execution context reconstitutes the state data and uses the state data to perform the diagnostic operation. Accordingly, performance of the diagnostic operation is simulated in the separate execution context without influencing the behavior of the target execution context.
    Type: Application
    Filed: June 6, 2008
    Publication date: December 10, 2009
    Applicant: Microsoft Corporation
    Inventors: Richard M. Byers, Jonathon Michael Stall, Gregg B. Miskelly
  • Publication number: 20080301649
    Abstract: Various technologies and techniques are disclosed for testing intermediate language operations. A debugger harness is provided that instruments an intermediate language stream to replace intermediate language operations with equivalent virtual intermediate language operations. A particular intermediate language operation is intercepted from the intermediate language stream and the equivalent virtual intermediate language operation is determined. The virtual machine runs under a debugger harness so that one or more managed applications are executed using the equivalent virtual intermediate language operations. This allows a functionality of the debugger to be tested.
    Type: Application
    Filed: June 4, 2007
    Publication date: December 4, 2008
    Applicant: Microsoft Corporation
    Inventor: Jonathon Michael Stall
  • Patent number: 7401323
    Abstract: Systems and methods for Just-My-Code (JMC) debugging are described. In one aspect, debugging probes are automatically inserted into respective programming constructs representing interesting code. The debugging probes are inserted during computer computer-program compiling operations that generate native code. The native code is then executed as a process. The process includes one or more threads of execution that run-free through uninteresting code during a JMC step operation. A thread of the one or more threads is only halted in the interesting code when an active one of the debugging probes is encountered by the thread while the thread is JMC stepping through the process.
    Type: Grant
    Filed: April 21, 2003
    Date of Patent: July 15, 2008
    Assignee: Microsoft Corporation
    Inventors: Jonathon Michael Stall, Michael M. Magruder
  • Publication number: 20070288939
    Abstract: A method and system for implementing detecting deadlocks in interop-debugging is described herein. One or more synchronization objects that an application program interface (API) could block on are identified. A canary thread that takes one or more of the synchronization objects is created. The canary thread is called to take the one or more synchronization objects. If the canary thread returns within a predetermined timeout period, then the one or more synchronization objects are available and safe to take. If the canary thread does not return within the predetermined timeout period, then the one or more synchronization objects may not be available.
    Type: Application
    Filed: May 23, 2006
    Publication date: December 13, 2007
    Applicant: Microsoft Corporation
    Inventor: Jonathon Michael Stall
  • Publication number: 20070277165
    Abstract: A method and system to implement debugging interpreted input is described herein. One or more Intermediate Language (IL) islands are generated. Each IL island maps to one or more lines of source code. The interpreter reads a line of source code and parses the line of source code for a command. Before executing the command, the interpreter may call into the corresponding IL island. The IL island may include a breakpoint that corresponds to a set breakpoint in the mapped one or more lines of source code. The IL island may include a function. When calling the IL island, the interpreter may pass in a function pointer, one or more states of one or more variables, a representation of a call stack, or any other parameters. The IL islands enable a debug tool to do source-level debugging of languages executed by an interpreter without architectural changes to the interpreter.
    Type: Application
    Filed: May 23, 2006
    Publication date: November 29, 2007
    Applicant: Microsoft Corporation
    Inventors: Jonathon Michael Stall, Richard M. Byers, Steve J. Steiner
  • Publication number: 20040210876
    Abstract: Systems and methods for Just-My-Code (JMC) debugging are described. In one aspect, debugging probes are automatically inserted into respective programming constructs representing interesting code. The debugging probes are inserted during computer computer-program compiling operations that generate native code. The native code is then executed as a process. The process includes one or more threads of execution that run-free through uninteresting code during a JMC step operation. A thread of the one or more threads is only halted in the interesting code when an active one of the debugging probes is encountered by the thread while the thread is JMC stepping through the process.
    Type: Application
    Filed: April 21, 2003
    Publication date: October 21, 2004
    Inventors: Jonathon Michael Stall, Michael M. Magruder