EXPEDITED COMPLETION OF A TRANSACTION IN STM
    31.
    发明申请
    EXPEDITED COMPLETION OF A TRANSACTION IN STM 审中-公开
    在STM中进行交易的预期完成

    公开(公告)号:US20100228929A1

    公开(公告)日:2010-09-09

    申请号:US12400209

    申请日:2009-03-09

    IPC分类号: G06F12/02

    CPC分类号: G06F9/467

    摘要: A software transactional memory system is provided that provides privatization safety. The system identifies situations where the completion of a transaction may be expedited because a privatization artifact will not occur. The system determines whether a privatization artifact may occur using a read and write set intersection test, transactional variables, pessimistic locks, or declared privatizing transactions. If a privatization artifact will not occur for a transaction, then the system may allow the transaction to complete prior to one or more earlier transactions.

    摘要翻译: 提供了提供私有化安全性的软件事务内存系统。 系统识别事务的完成可能因为私有化工件不会发生而加快的情况。 系统使用读写集合交集测试,事务变量,悲观锁或已声明的私有化事务来确定私有化工件是否可能发生。 如果事务不会发生私有化工件,则系统可能允许事务在一个或多个较早的事务之前完成。

    Heuristic-based resumption of fully-young garbage collection intervals
    32.
    发明授权
    Heuristic-based resumption of fully-young garbage collection intervals 有权
    基于启发式的恢复全年垃圾收集间隔

    公开(公告)号:US07779054B1

    公开(公告)日:2010-08-17

    申请号:US11239992

    申请日:2005-09-30

    IPC分类号: G06F12/00 G06F17/30

    CPC分类号: G06F12/0276

    摘要: A method for heuristic-based resumption of fully-young garbage collection intervals comprises allocating memory to objects within one or more regions of a heap partitioned into a plurality of regions, and classifying each heap region as belonging to a category of a plurality of categories based at least in part on the recency of allocation of objects within the regions. The method may further comprise determining, using a garbage collection efficiency metric, whether regions belonging to a first category of the plurality of categories are to be excluded from a collection set of a particular garbage collection interval on the heap. In response to determining that the first category of regions is to be excluded, the method may comprise selecting a collection set that does not include any regions of the first category, and reclaiming memory from that collection set.

    摘要翻译: 一种用于基于启发式恢复全年垃圾收集间隔的方法包括:将存储器分配给划分成多个区域的堆的一个或多个区域内的对象,并将每个堆区域分类为属于多个类别的类别 至少部分地是区域内对象的分配情况。 该方法还可以包括:使用垃圾收集效率度量来确定属于多个类别的第一类别的区域是否将从堆上的特定垃圾收集间隔的集合集中排除。 响应于确定要排除第一类别的区域,该方法可以包括选择不包括第一类别的任何区域的收集集合,以及从该集合集合回收存储器。

    PRIMITIVES FOR SOFTWARE TRANSACTIONAL MEMORY
    33.
    发明申请
    PRIMITIVES FOR SOFTWARE TRANSACTIONAL MEMORY 有权
    软件交易记忆的原则

    公开(公告)号:US20090327291A1

    公开(公告)日:2009-12-31

    申请号:US12163402

    申请日:2008-06-27

    IPC分类号: G06F12/00 G06F17/30

    CPC分类号: G06F9/528

    摘要: Software transactional memory (STM) primitives are provided that allow the results of prior open calls to be used by subsequent open calls either as-is or through another STM primitive that consumes the results of the previous invocation. The STM primitives are configured to ensure that the address of a shadow copy representing a memory location will not changed across a wide range of operations and thereby enable re-use of the shadow copy.

    摘要翻译: 提供了软件事务存储器(STM)原语,其允许先前的打开调用的结果被按照原样或通过消耗先前调用的结果的另一个STM原语的后续打开调用来使用。 STM原语配置为确保表示内存位置的卷影副本的地址不会在广泛的操作范围内发生变化,从而可以重新使用卷影副本。

    Method and apparatus for reducing remembered set overhead in a generational garbage collector by constraining collection set choice
    34.
    发明授权
    Method and apparatus for reducing remembered set overhead in a generational garbage collector by constraining collection set choice 有权
    通过约束收集集选择减少代数垃圾收集器中记忆集开销的方法和装置

    公开(公告)号:US07539837B1

    公开(公告)日:2009-05-26

    申请号:US11128791

    申请日:2005-05-13

    IPC分类号: G06F12/00 G06F13/00 G06F13/28

    摘要: A remembered set for a memory heap region in a garbage-collected computer system is modified to classify reference locations stored therein by the heap region from which the references originate so that the number of references originating from a given region can be easily determined. If the number of remembered set entries for references from a second region to a first region reaches a predetermined threshold, the second region is constrained so that it will be collected at the same time as, or before, the first region. Then, all entries in the remembered set associated with the first region for references from the second region to the first region can be deleted, and no such entries need be entered in the future thereby reducing the size of that remembered set and the time required to scan it.

    摘要翻译: 对垃圾收集的计算机系统中的存储器堆区域的记忆集进行修改,以便通过引用源所在的堆区域对存储在其中的引用位置进行分类,从而可以容易地确定源自给定区域的引用数量。 如果用于从第二区域到第一区域的引用的记忆设置条目的数量达到预定阈值,则第二区域被约束,使得其将在与第一区域相同的时间或之前被收集。 然后,可以删除与第一区域相关联的用于从第二区域到第一区域的引用的记住集合中的所有条目,并且将来不需要输入这样的条目,从而减小该记忆集的大小以及所需的时间 扫描它

    Parallel non-contiguous allocation and card parsing
    35.
    发明授权
    Parallel non-contiguous allocation and card parsing 有权
    并行非连续分配和卡解析

    公开(公告)号:US07043509B2

    公开(公告)日:2006-05-09

    申请号:US10368970

    申请日:2003-02-19

    申请人: David L. Detlefs

    发明人: David L. Detlefs

    IPC分类号: G06F17/30

    CPC分类号: G06F12/0276 Y10S707/99957

    摘要: A garbage collector operates in multiple threads, and one thread can be parsing a region containing a free block while another thread is allocating space from that free block for an object being relocated to that region. The object being relocated may be an array object, for which the length determination is based on more than one word in the object; it may be based on a class-identifying word and a number-of-elements word. To prevent a parsing thread from parsing erroneously by reading both of those words between the relocating thread's writing one of them and writing the other, the relocating thread first writes into the classifying word a distinguished value from which a parsing thread can conclude that the values it reads in other fields of the block are not to be trusted. The relocating thread then completes writing the other fields before it writes the relocated object's classifying word, and any parsing thread repeats the size-determining routine until the uninitialized value is removed and it can therefore rely on other values in the block.

    摘要翻译: 垃圾收集器在多个线程中运行,一个线程可以解析包含空闲块的区域,而另一个线程从被重新定位到该区域的对象的空闲块分配空间。 重新定位的对象可以是数组对象,其长度确定基于对象中的多于一个字; 它可以基于类识别词和元数字词。 为了防止解析线程通过读取重定位线程写入其中一个并写入另一个之间的这两个字来解析错误,首先将重定位线程写入分类词中,分析线程可以从中解析出线程可以断定其值 对块的其他字段的读取不被信任。 然后,重定位线程在写入重定位对象的分类字之前完成写入其他字段,并且任何解析线程重复大小确定例程,直到未初始化的值被移除,并且因此可以依赖该块中的其他值。

    Method, apparatus, and article of manufacture for facilitating resource management for applications having two types of program code
    36.
    发明授权
    Method, apparatus, and article of manufacture for facilitating resource management for applications having two types of program code 有权
    用于促进具有两种类型的程序代码的应用程序的资源管理的方法,装置和制品

    公开(公告)号:US06253215B1

    公开(公告)日:2001-06-26

    申请号:US09134548

    申请日:1998-08-17

    IPC分类号: G06F1730

    CPC分类号: G06F12/0253 Y10S707/99957

    摘要: Methods, systems, and articles of manufacture consistent with the present invention provide a program component including a set of instructions native to the system, include in the set of native instructions an instruction to maintain information on use of a particular object, and permit reuse of memory resources corresponding to the particular object based on an indication from a source that the particular object is no longer being used, the source being different from any source used to provide information on use of objects associated with non-native instructions of the program component. Additionally, garbage collection is not permitted during native code operations to read or write data in object fields because during such operations an indication exists that such collection may be inaccurate and could possibly reclaim or relocate objects referenced by native code though not specified as such in the native code stack and global variables.

    摘要翻译: 与本发明一致的方法,系统和制品提供了包括本系统的一组指令的程序组件,在本组指令中包括维护关于使用特定对象的信息的指令,并允许重用 基于来自源的指示,特定对象不再被使用的指示,所述源与用于提供关于与所述程序组件的非本地指令相关联的对象的使用的信息的任何源不同。 此外,在本地代码操作期间,不允许在本地代码操作中读取或写入对象字段中的数据,因为在此类操作中存在这样的指示,即这样的集合可能不准确,并且可能会回收或重新定位由本机代码引用的对象,但在 本地代码堆栈和全局变量。

    Method for directly inlining virtual calls without on-stack replacement
    37.
    发明授权
    Method for directly inlining virtual calls without on-stack replacement 有权
    直接内联虚拟呼叫而不进行堆叠替换的方法

    公开(公告)号:US06223340B1

    公开(公告)日:2001-04-24

    申请号:US09169341

    申请日:1998-10-09

    申请人: David L. Detlefs

    发明人: David L. Detlefs

    IPC分类号: G06F945

    CPC分类号: G06F9/4491

    摘要: A dynamic compiler determines whether to inline methods in place of virtual method calls by inspecting such calls' receiver expressions. If a given call site meets other criteria for inlining, the method is inlined if its receiver expression can be proved to have a property called “pre-existence.” One kind of expression whose pre-existence is easily proved is a calling-procedure argument to which the body of the calling procedure makes no assignment. One of the other criteria is that the argument's static type is a class whose definition of the callee method has not been overridden, and the compiler employs a dependency data structure to record against both the caller and the callee that the caller contains code whose validity depends on the assumption that this criterion has been met. If the compiler thereafter compiles another implementation of the callee method, it inspects the dependency structures in which dependencies have been recorded against the callee method, and it recompiles the callers whose object code's validity is indicated by such structures to depend on that callee method's not having been overridden. The restriction of inlining to pre-existing receiver expression allows currently running invocations of the original compilation of the caller method to continue without fear of error.

    摘要翻译: 动态编译器通过检查这样的调用接收器表达式来确定是否内联方法代替虚方法调用。 如果给定的呼叫站点符合其他内联标准,则如果接收者表达式具有称为“pre-exist”的属性,则该方法是内联的。 一种容易证明其存在的表达式是调用过程参数,调用过程的正文不赋值。 其他标准之一是参数的静态类型是一个类,其被调用方法的定义尚未被覆盖,编译器使用依赖关系数据结构来记录调用者和被调用者,调用者包含其有效性依赖的代码 假设已经满足了这一标准。 如果编译器之后编译被叫方法的另一个实现,它将检查依赖关系已被记录在被叫方法中的依赖关系结构,并重新编译其对象代码的有效性由这样的结构指示的调用者,以依赖于被调用方法没有 被覆盖 内联到预先接收的表达式的限制允许当前正在调用调用方法的原始编译来继续,而不用担心错误。

    Primitives for software transactional memory
    38.
    发明授权
    Primitives for software transactional memory 有权
    软件事务内存的基本原理

    公开(公告)号:US09047139B2

    公开(公告)日:2015-06-02

    申请号:US12163402

    申请日:2008-06-27

    IPC分类号: G06F17/30 G06F9/52

    CPC分类号: G06F9/528

    摘要: Software transactional memory (STM) primitives are provided that allow the results of prior open calls to be used by subsequent open calls either as-is or through another STM primitive that consumes the results of the previous invocation. The STM primitives are configured to ensure that the address of a shadow copy representing a memory location will not changed across a wide range of operations and thereby enable re-use of the shadow copy.

    摘要翻译: 提供了软件事务存储器(STM)原语,其允许先前的打开调用的结果被按照原样或通过消耗先前调用的结果的另一个STM原语的后续打开调用来使用。 STM原语配置为确保表示内存位置的卷影副本的地址不会在广泛的操作范围内发生变化,从而可以重新使用卷影副本。

    Pre-compiling hosted managed code
    39.
    发明授权
    Pre-compiling hosted managed code 有权
    预编译托管托管代码

    公开(公告)号:US08924922B2

    公开(公告)日:2014-12-30

    申请号:US12814511

    申请日:2010-06-14

    IPC分类号: G06F9/44 G06F9/455

    CPC分类号: G06F9/45516

    摘要: A hosted pre-compilation system is described herein that provides a way to enable ahead-of-time compilation for managed code running inside a host. The host triggers ahead-of-time compilation at application runtime, after any configuration settings are available. The host can choose which modules to compile, when to compile them, and where to persist the generated images. Upon detecting a module load, the host can trigger pre-compilation, provide the loader an existing pre-compiled image of the module, or do nothing. The runtime/platform validates the integrity of any host-supplied pre-compiled image and provides application programming interfaces (APIs) to inform the host when an image becomes invalid and fails to load. The platform also provides APIs to let the host trigger compilation of binaries at any time relevant to the host, and to generate the images either synchronously or in a background process.

    摘要翻译: 本文描述了一种托管的预编译系统,它提供了一种在主机内部运行的托管代码实现预先编译的方法。 在任何配置设置可用后,主机会在应用程序运行时触发提前编译。 主机可以选择要编译的模块,何时编译它们以及在哪里持续生成的图像。 在检测到模块负载时,主机可以触发预编译,为加载程序提供模块的现有预编译映像,或者什么都不做。 运行时/平台验证任何主机提供的预编译映像的完整性,并提供应用程序编程接口(API),以便在映像无效并且加载失败时通知主机。 该平台还提供API,让主机在与主机相关的任何时间触发二进制文件的编译,并同步或在后台进程中生成图像。

    Detecting race conditions with a software transactional memory system
    40.
    发明授权
    Detecting race conditions with a software transactional memory system 有权
    使用软件事务内存系统检测竞争条件

    公开(公告)号:US08769514B2

    公开(公告)日:2014-07-01

    申请号:US12163902

    申请日:2008-06-27

    IPC分类号: G06F9/45

    CPC分类号: G06F8/443 G06F11/3624

    摘要: A dynamic race detection system is provided that detects race conditions in code that executes concurrently in a computer system. The dynamic race detection system uses a modified software transactional memory (STM) system to detect race conditions. A compiler converts portions of the code that are not configured to operate with the STM system into pseudo STM code that operates with the STM system. The dynamic race detection system detects race conditions in response to either a pseudo STM transaction in the pseudo STM code failing to validate when executed or an actual STM transaction failing to validate when executed because of conflict with a concurrent pseudo STM transaction.

    摘要翻译: 提供了一种动态竞争检测系统,其检测在计算机系统中并发执行的代码中的竞争条件。 动态竞争检测系统使用修改后的软件事务存储器(STM)系统来检测竞争条件。 编译器将未配置为与STM系统一起运行的代码部分转换为与STM系统一起运行的伪STM代码。 动态竞争检测系统响应于伪STM代码中的伪STM事务在执行时无法验证或由于与并发的伪STM事务冲突而被执行时实际的STM事务失败而检测到竞争条件。