会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
热词
    • 41. 发明申请
    • Obtaining Profile Data for Use in Optimizing Computer Programming Code
    • 获取用于优化计算机编程代码的配置文件数据
    • US20080189688A1
    • 2008-08-07
    • US12099873
    • 2008-04-09
    • William Jon Schmidt
    • William Jon Schmidt
    • G06F9/44
    • G06F8/443
    • Program execution profile data is collected by direct measurement of some code paths, and by inferring data for unmeasured paths. The data collection process may cause errors, which are propagated by the inferencing process. The profile data thus constructed is further enhanced by detecting certain data mismatches, and adjusting inferred data to reduce the scope of errors propagated during the inferencing process. Preferably, a control flow graph of the program being measured is constructed. Mismatches in the total weights of input arcs versus output arcs are detected. For certain specific types of mismatches, it can be known or guessed which count is incorrect, and this count is accordingly corrected. Correction of arc counts proceeds recursively until it is no longer possible to correct mismatches. Additionally, certain other conditions are adjusted as presumed inaccuracies.
    • 程序执行简档数据是通过直接测量一些代码路径以及通过推断未测量路径的数据来收集的。 数据收集过程可能导致由推理过程传播的错误。 通过检测某些数据不匹配来进一步增强如此构造的简档数据,并调整推断的数据以减少在推理过程中传播的错误范围。 优选地,构建正在测量的程序的控制流程图。 检测到输入弧的总重量与输出弧的不匹配。 对于某些特定类型的不匹配,可以知道或猜测哪个计数不正确,并且相应地更正该计数。 弧计数的校正递归地进行,直到不再能够纠正错配。 另外,某些其他条件被调整为假定的不准确。
    • 43. 发明授权
    • Object oriented apparatus and method for allocating objects on an invocation stack
    • 用于在调用堆栈上分配对象的面向对象的设备和方法
    • US06505344B1
    • 2003-01-07
    • US09481929
    • 2000-01-12
    • Marc Noel BlaisWilliam Jon Schmidt
    • Marc Noel BlaisWilliam Jon Schmidt
    • G06F945
    • G06F12/0253G06F9/4488Y10S707/99953Y10S707/99957
    • An object oriented mechanism and method allow allocating a greater number of objects on a method's invocation stack. Each instruction that creates an object (i.e., allocation instruction) is first analyzed to determine whether it is one of the following three types: no escape, global escape, and arg escape. If an allocation instruction is global escape, the object must be allocated from the heap. If an allocation instruction is no escape, it can be allocated on the method's invocation stack frame. If an allocation instruction is arg escape, further analysis is required to determine whether the object can be allocated on an invoking method's stack or must be allocated from the heap. If the method that contains an arg escape allocation instruction can be inlined into a method from which the lifetime of the object does not escape, the object can be allocated on the invoking method's stack. This inlining can be done for several layers up, if needed and possible. This allows for nested objects to be potentially allocated on a method's stack, instead of forcing each of these objects to be allocated from the heap.
    • 面向对象的机制和方法允许在方法的调用堆栈上分配更多数量的对象。 首先分析创建对象的每个指令(即分配指令),以确定它是否是以下三种类型之一:不可逃避,全局转义和参数转义。 如果分配指令是全局转义,则必须从堆中分配该对象。 如果分配指令不是转义,则可以在方法的调用堆栈帧中分配它。 如果分配指令是arg转义,需要进一步的分析来确定对象是否可以在调用方法的堆栈上分配,或者必须从堆中分配。 如果包含arg转义分配指令的方法可以内联到对象的生命周期不会转义的方法中,则可以在调用方法的堆栈上分配该对象。 如果需要和可能,这个内联可以进行几层。 这允许嵌套对象在方法的堆栈上潜在地分配,而不是强制从堆中分配这些对象。
    • 44. 发明授权
    • Method and computer program product for implementing method calls in a computer system
    • 用于在计算机系统中实现方法调用的方法和计算机程序产品
    • US06175956B1
    • 2001-01-16
    • US09115717
    • 1998-07-15
    • Daniel Rodman HicksWilliam Jon Schmidt
    • Daniel Rodman HicksWilliam Jon Schmidt
    • G06F945
    • G06F8/443G06F9/4491
    • A computer implemented method and computer program compiler product are provided for implementing method calls in a computer system. Virtual method calls are identified in an intermediate instruction stream representation. Responsive to an identified virtual method call, profile data for the identified call site are read. A most frequently called procedure for the identified call site is compared with a first threshold value. Responsive to the most frequently called procedure being called less than the first threshold value, the virtual method call is maintained in a revised instruction stream representation. Responsive to the most frequently called procedure being called greater than or equal to the first threshold value, a guarded call to the most frequently called procedure is inserted at the identified call site in the revised instruction stream representation. In accordance with features of the invention, checking whether one object type accounts for more than a second threshold value of the calls to the most frequently called procedure at the identified call site is performed. Responsive to one object type accounting for more than or equal to the second threshold value, a type guard and a call to the most frequently called procedure are inserted at the identified call site in the revised instruction stream representation. Responsive to one object type accounting for less than the second threshold value, an address guard and a call to the most frequently called procedure are inserted at the identified call site in the revised instruction stream representation.
    • 提供了一种计算机实现的方法和计算机程序编译器产品,用于在计算机系统中实现方法调用。 虚拟方法调用在中间指令流表示中被识别。 响应于识别的虚拟方法调用,读取所识别的呼叫站点的简档数据。 将所识别的呼叫站点的最常被称为过程与第一阈值进行比较。 响应于被称为小于第一阈值的最常被称为过程的虚拟方法调用被维持在修改的指令流表示中。 响应于被称为大于或等于第一阈值的最常被称为过程的被调用的程序被插入到经修改的指令流表示中的所识别的呼叫站点处。 根据本发明的特征,执行一个对象类型是否占用在所识别的呼叫站点上对最常被叫过程的呼叫的第二阈值的多于一个的第二阈值。 响应于占用大于或等于第二阈值的一个对象类型,在修改的指令流表示中的所识别的呼叫站点插入类型保护和对最常被调用的过程的呼叫。 响应于占用小于第二阈值的一个对象类型,在修改的指令流表示中的所识别的呼叫站点插入地址保护和对最常被叫过程的呼叫。
    • 45. 发明授权
    • Method and apparatus for profile-based reordering of program portions in
a computer program
    • 用于计算机程序中的程序部分的基于简档的重新排序的方法和装置
    • US5950009A
    • 1999-09-07
    • US814527
    • 1997-03-10
    • Vita BortnikovBilha MendelsonMark NovickWilliam Jon SchmidtInbal Shavit-Lottem
    • Vita BortnikovBilha MendelsonMark NovickWilliam Jon SchmidtInbal Shavit-Lottem
    • G06F9/45G06F9/445
    • G06F8/445
    • An apparatus and several methods provide for a more optimized computer program that will have a faster execution time than was possible using the prior art reordering technique that adds to a trace until it finds no more predecessors or successors to add. The apparatus and methods disclosed herein use a variety of methods to reorder the program portions in a more intelligent manner that will improve its run-time performance. Each of these methods involves constructing traces in the control flow graph of the computer program. In a first embodiment, a basic block is only added to a trace if it is not negligible within predetermined limits. This negligibility test results in traces that are not extended for infrequently executed basic blocks. In a second embodiment, a basic block is only added to a trace if it is a perfect partner with the last basic block added to the trace. The concept of a "perfect partner" helps to match basic blocks together in a trace that have the greatest affinity for each other. In a third embodiment, a basic block is only added to a trace if it satisfies "should follow" flags and predetermined negligibility criteria. The "should follow" flags and negligibility criteria provide a complex criteria for adding basic blocks to a trace, criteria that create more efficient code in some specific circumstances.
    • 一种装置和几种方法提供了一种更优化的计算机程序,该程序具有比使用现有技术重新排序技术更快的执行时间,该技术可以添加到跟踪中,直到找不到更多的前导或后继来添加。 本文公开的装置和方法使用各种方法以更智能的方式重新排序程序部分,这将改善其运行时性能。 这些方法中的每一个都涉及在计算机程序的控制流程图中构造跟踪。 在第一实施例中,如果基本块仅在预定限度内不可忽略,则仅添加到轨迹。 这种可忽略性测试导致对于不经常执行的基本块不扩展的迹线。 在第二实施例中,如果基本块是与添加到跟踪的最后基本块的完美伙伴,则仅添加到跟踪。 “完美伴侣”的概念有助于将基本块在一起,彼此之间具有最大的亲和力。 在第三实施例中,如果基本块满足“应遵循”标志和预定的可忽略性标准,则仅添加到跟踪。 “应遵循”标志和忽略标准为添加基本块的跟踪提供了一个复杂的标准,在某些特定情况下创建更有效的代码的标准。
    • 48. 发明授权
    • Debugger impact reduction through motion of induction variable based breakpoints
    • 通过基于感应变量的断点运动调试器影响减少
    • US06971089B2
    • 2005-11-29
    • US09918573
    • 2001-08-01
    • Cary Lee BatesWilliam Jon Schmidt
    • Cary Lee BatesWilliam Jon Schmidt
    • G06F9/44
    • G06F11/362
    • Debugger impact reduction through motion of an induction variable based breakpoint (“IV-breakpoint”) set within a program loop, where the IV-breakpoint and the loop are controlled by an induction variable having an induction rate, may include extracting, from program code within the program loop, the induction rate; extracting, from the IV-breakpoint, a final value of the induction variable for which the IV-breakpoint would be satisfied; and if the IV-breakpoint is satisfied and the induction variable has a present value that would be beyond the final value upon a next iteration of the loop based on the induction rate, removing the IV-breakpoint. Debugger impact reduction may further include setting, at one or more loop exit program positions, a reset breakpoint; and if one of the reset breakpoints is satisfied, removing the reset breakpoints and/or reestablishing the IV-breakpoint.
    • 通过在程序循环中设置的基于感应变量的断点(“IV断点”)的运动的调试器影响减少,其中IV断点和循环由具有感应速率的感应变量控制,可以包括从程序代码 在程序循环内,感应率; 从IV断点提取IV断点将被满足的诱导变量的最终值; 并且如果IV断点被满足,并且感应变量具有在基于感应速率的循环的下一次迭代时将超出最终值的当前值,则移除IV断点。 调试器影响减小可以进一步包括在一个或多个循环退出程序位置设置复位断点; 并且如果其中一个复位断点被满足,则去除复位断点和/或重新建立IV断点。
    • 49. 发明授权
    • Debugger impact reduction through breakpoint motion
    • 通过断点运动调试器影响减少
    • US06922826B2
    • 2005-07-26
    • US09897608
    • 2001-07-03
    • Cary Lee BatesWilliam Jon Schmidt
    • Cary Lee BatesWilliam Jon Schmidt
    • G06F11/36G06F9/44G06F9/45G06F11/00
    • G06F11/362
    • A first type of debugger impact reduction includes removing, from within a loop, an initial conditional breakpoint (“ICB”); extracting a first Boolean expression (“BE_1”) therefrom; setting a special conditional breakpoint (“SCB”) including the BE_1; and reestablishing the ICB if the SCB is satisfied. Optionally, the first type may further include extracting, from code within the loop, a second Boolean expression (“BE_2”); disjunctively including its complement in the SCB; and setting a reset breakpoint at loop exit program positions to remove reset breakpoints and/or the ICB. A second type includes setting the SCB with the complement of BE_1; and removing the ICB when the SCB is satisfied. Optionally, the second type may further include conjunctively including the BE_2 in the SCB; and setting a reset breakpoint to remove reset breakpoints and/or reestablish the ICB. The above may be embodied in a method, a program debugger and an article of manufacture.
    • 第一种类型的调试器影响减少包括从循环中去除初始条件断点(“ICB”); 从其中提取第一布尔表达式(“BE_1”); 设置包含BE_1的特殊条件断点(“SCB”); 如果SCB满意,重新建立ICB。 可选地,第一类型还可以包括从循环内的代码中提取第二布尔表达式(“BE_2”); 在SCB中分散包括其补充; 并在循环退出程序位置设置一个复位断点,以消除复位断点和/或ICB。 第二种类型包括用BE_1的补码设置SCB; 并且当SCB满足时移除ICB。 可选地,第二类型还可以包括在SCB中结合地包括BE_2; 并设置一个重置断点以消除重置断点和/或重新建立ICB。 上述可以体现在方法,程序调试器和制品中。
    • 50. 发明授权
    • Object oriented method and apparatus for class variable initialization
    • 用于类变量初始化的面向对象的方法和装置
    • US06832369B1
    • 2004-12-14
    • US09630376
    • 2000-08-01
    • James Albert KrykaScott Thomas RobinsonWilliam Jon Schmidt
    • James Albert KrykaScott Thomas RobinsonWilliam Jon Schmidt
    • G06F945
    • G06F9/445
    • A compiler for object-oriented programming code in a language which employs run-time static initialization semantics analyzes the static initialization code to find a subset of initialization statements which must execute under all conditions, creates an pre-initialized image of the static storage using the subset, and removes statements which were pre-initialized from the final compiled code. Preferably, the compiler is a back-end compiler for the Java language, which converts Java bytecode into machine executable instructions. A static initializer method for each class is decomposed to construct a control flow graph for the method, which is then analyzed to identify statements in the source which must necessarily execute whenever the initialization method is called. The compile-time static storage image is pre-initialized to zero, except where affected by these identified statements, which are set at compile time as if the identified statements had executed. The identified statements are then removed from the code being compiled. Code size is thus reduced at the same time that performance at run time is improved as a result of not having to execute the removed initialization statements.
    • 用于使用运行时静态初始化语义的语言中的面向对象编程代码的编译器分析静态初始化代码以找到必须在所有条件下执行的初始化语句的子集,使用该方法创建静态存储器的预初始化映像 子集,并删除从最终编译代码预先初始化的语句。 优选地,编译器是用于Java语言的后端编译器,其将Java字节码转换为机器可执行指令。 每个类的静态初始化方法被分解以构建该方法的控制流程图,然后分析其中的标识语句,该语句必须在每当调用初始化方法时执行。 编译时静态存储映像被预初始化为零,除非受到这些标识语句的影响,这些语句在编译时被设置,就像已识别语句执行一样。 然后,已识别的语句将从正在编译的代码中删除。 因此,在不需要执行删除的初始化语句的结果的同时,在运行时的性能得到改善的同时,代码大小被减少。