Efficient resumption of co-routines on a linear stack
    1.
    发明授权
    Efficient resumption of co-routines on a linear stack 有权
    在线性堆栈上有效恢复协同程序

    公开(公告)号:US09003377B2

    公开(公告)日:2015-04-07

    申请号:US12683447

    申请日:2010-01-07

    IPC分类号: G06F9/44

    摘要: 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.

    摘要翻译: 未挂起的共同例程由机器调用堆栈机制处理,其中堆栈随着递归调用并从中返回而增长和收缩。 然而,当暂停协同程序时,执行额外的呼叫栈处理。 发出暂停消息,并且删除调用堆栈的整个可恢复部分,并将其复制到堆中。 将控制权返回到驱动程序方法(resumer)的一个框架将被复制到调用堆栈,以便恢复协同程序不会递归地重新激活整个调用堆栈。 相反,resumer仅重新激活称为叶子框架的最前面或最近的帧。 当一个共同程序被暂停时,它不会返回到其调用者,而是返回已重新激活它的resumer。

    RESUMABLE METHODS
    2.
    发明申请
    RESUMABLE METHODS 有权
    可恢复的方法

    公开(公告)号:US20110265070A1

    公开(公告)日:2011-10-27

    申请号:US12767811

    申请日:2010-04-27

    IPC分类号: G06F9/45

    CPC分类号: G06F8/314

    摘要: 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.

    摘要翻译: 提供API,它们是编程语言外部的,但是提供可以插入到语言编译器中的功能。 提供的API定制与异步编程相关的功能,迭代器或使用广义的基于模式的方法来编写对称协同程序。 API中提供了几种类型的可恢复方法,可以将其应用于以传统程序代码编写的方法体。 以传统程序代码编写的方法体中的语法上可区分的控制点通过外部API调用编译器对代码的转换。 转换的代码使得能够暂停和恢复被转换代码中的控制点之间的代码。 包含在其中具有控制点的方法中的源代码被变换,使得该方法中的代码可以以离散部分执行,每个部分开始并在变换代码的控制点结束。

    Resumable methods
    3.
    发明授权
    Resumable methods 有权
    可读方法

    公开(公告)号:US08549506B2

    公开(公告)日:2013-10-01

    申请号:US12767811

    申请日:2010-04-27

    IPC分类号: G06F9/45

    CPC分类号: G06F8/314

    摘要: 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.

    摘要翻译: 提供API,它们是编程语言外部的,但是提供可以插入到语言编译器中的功能。 提供的API定制与异步编程相关的功能,迭代器或使用广义的基于模式的方法来编写对称协同程序。 API中提供了几种类型的可恢复方法,可以将其应用于以传统程序代码编写的方法体。 以传统程序代码编写的方法体中的语法上可区分的控制点通过外部API调用编译器对代码的转换。 转换的代码使得能够暂停和恢复被转换代码中的控制点之间的代码。 包含在具有其中的控制点的方法中的源代码被变换,使得该方法中的代码可以以离散部分执行,每个部分开始并在变换代码的控制点结束。

    EFFICIENT RESUMPTION OF CO-ROUTINES ON A LINEAR STACK
    4.
    发明申请
    EFFICIENT RESUMPTION OF CO-ROUTINES ON A LINEAR STACK 有权
    在线性堆栈上的有效恢复

    公开(公告)号:US20110167248A1

    公开(公告)日:2011-07-07

    申请号:US12683447

    申请日:2010-01-07

    IPC分类号: G06F9/40 G06F9/44

    摘要: 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.

    摘要翻译: 未挂起的共同例程由机器调用堆栈机制处理,其中堆栈随着递归调用并从中返回而增长和收缩。 然而,当暂停协同程序时,执行额外的呼叫栈处理。 发出暂停消息,并且删除调用堆栈的整个可恢复部分,并将其复制到堆中。 将控制权返回到驱动程序方法(resumer)的一个框架将被复制到调用堆栈,以便恢复协同程序不会递归地重新激活整个调用堆栈。 相反,resumer仅重新激活称为叶子框架的最前面或最近的帧。 当一个共同程序被暂停时,它不会返回到其调用者,而是返回已重新激活它的resumer。

    A GENERIC INTERFACE FOR DEEP EMBEDDING OF EXPRESSION TREES IN PROGRAMMING LANGUAGES
    8.
    发明申请
    A GENERIC INTERFACE FOR DEEP EMBEDDING OF EXPRESSION TREES IN PROGRAMMING LANGUAGES 有权
    编程语言深度嵌入表达式的一般界面

    公开(公告)号:US20070271233A1

    公开(公告)日:2007-11-22

    申请号:US11464874

    申请日:2006-08-16

    IPC分类号: G06F17/30

    CPC分类号: G06F17/3041 G06F8/41

    摘要: 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 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 interface.

    摘要翻译: 所要求保护的主题提供了利用嵌入式语言的显式表示来促进查询数据的系统和/或方法。 IEnumberable组件可以使用IEnumerable接口和IEnumerable 接口中的至少一个来接收可用于数据集合的数据操作。 镜像组件可以提供通用接口来通过使用至少一个映射至少一个IEnumerable接口和IEnumerable接口的功能来表示数据的集合来查询数据的集合。

    Generic interface for deep embedding of expression trees in programming languages
    9.
    发明授权
    Generic interface for deep embedding of expression trees in programming languages 有权
    用于在编程语言中深入嵌入表达式树的通用接口

    公开(公告)号:US07860823B2

    公开(公告)日:2010-12-28

    申请号:US11464874

    申请日:2006-08-16

    IPC分类号: G06F7/00

    CPC分类号: G06F17/3041 G06F8/41

    摘要: 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 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 interface.

    摘要翻译: 所要求保护的主题提供了利用嵌入式语言的显式表示来促进查询数据的系统和/或方法。 IEnumberable组件可以使用IEnumerable接口和IEnumerable 接口中的至少一个来接收可用于数据集合的数据操作。 镜像组件可以提供通用接口来通过使用至少一个映射至少一个IEnumerable接口和IEnumerable接口的功能来表示数据的集合来查询数据的集合。