G06F8/48

Processor comprising a plurality of computation cores

A processor including computation groups, each computation group including computation cores, the processor being capable of simultaneously implementing a plurality of applications, each application being implemented by a computation core and possibly requiring a read-mode or write-mode access to an external memory connected to the processor. At least one core, called dedicated core, of at least one computation group is dedicated to management of the external memory, the management making it possible to temporally and spatially organize read-mode and write-mode accesses to the external memory of each application requiring a read or a write in the external memory implemented by the processor.

EFFICIENT IMMUTABLE SYNTAX REPRESENTATION WITH INCREMENTAL CHANGE

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.

Compiler caching based on semantic structure

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for how a build system uses import graphs to maintain a current compilation cache and determine when compilation targets should be recompiled. A request is received to compile a compilation target. A plurality of files are identified that are used to build the compilation target. An import graph that represents import dependencies among the files used the build the compilation target is generated for the compilation target. The import graph is traversed to assign a respective identifier to each node in the import graph. A cache key is generated from data representing import relationships represented by the import graph and data representing contents of files used to build the compilation target. If the cache key is invalid or does not exist, compiling the compilation target.

OPTIMIZED RECOMPILATION USING HARDWARE TRACING

A tracing controller may utilize a binary execution trace mechanism to trace execution of compiled application machine code. The tracing controller may initiate hardware tracing to gather control-flow hardware traces of a method executing on a processor configured to generate hardware tracing information. The controller may generate a profile based on the hardware tracing information and initiate re-compiling or re-optimizing of the method in response to determining that the new profile differs from the previous profile. The controller may repeatedly profile and re-optimize a method until profiles for the method stabilize. Profiling and hardware tracing of an application may be selectively enabled or disabled allowing the controller to respond to later phase changes in application execution by re-optimizing, thereby potentially improving overall application performance.

DYNAMICALLY REVISING AN IN-PROCESS BUILD
20200065078 · 2020-02-27 ·

Dynamically revising an in-process build is disclosed. A build system receives a build configuration comprising information that defines a plurality of successive stages. Each stage includes at least one step, and one or more of the stages include a plurality of successive steps. The build configuration defines a build process that, when completed, alters a state of a storage device. The build system initiates a build process sequence on the build configuration. The build system, after initiating the build process sequence, receives notification of a desire to add a revision to a particular stage of the plurality of stages defined in the build configuration. A determination is made that performance of the particular stage has or has not begun. In response to the determination, a subsequent build process action is performed.

MANAGEMENT OF UPDATES TO EXTERNALLY MANAGED LIBRARIES
20200057622 · 2020-02-20 ·

A core management system identifies changes to a function signature of an instruction in a core framework of a computer program, generates a static code analysis rule indicating the change to the function signature in the computer program, and distributes the rule to one or more consumer systems using the core framework with an update to the core framework.

Proxy for debugging transformed code

Disclosed are various embodiments for a proxy that enables debugging of transformed code. A proxy receives a request from a client application to obtain transformed code from a first server. The proxy obtains the transformed code from the first server, and the proxy obtains a source map corresponding to the transformed code from a second server. The proxy then returns the transformed code and the source map to the client application.

Automatic performance telemetry

The disclosed techniques assist in diagnosing performance problems of a software application. A profiling module dynamically instruments the application at runtime by intercepting a request to compile one of the application's functions and augmenting the function with performance measuring code. This way, instrumentation is installed without recompiling the application. The execution time of a synchronous function is tracked by adding a local variable that stores function entry time, and by inserting code at each function exit point that computes the elapsed time. The execution time of an async function that executes across multiple threads is measured by repurposing a state machine value to also store the initial function entry time. Instrumented functions that are executed at a rate exceeding a threshold are un-instrumented to avoid self-inflicted performance problems. Function invocations associated with a particular activity, such as responding to a particular web request, may be correlated.

OPTIMIZED RECOMPILATION USING HARDWARE TRACING

A tracing controller may utilize a binary execution trace mechanism to trace execution of compiled application machine code. The tracing controller may initiate hardware tracing to gather control-flow hardware traces of a method executing on a processor configured to generate hardware tracing information. The controller may generate a profile based on the hardware tracing information and initiate re-compiling or re-optimizing of the method in response to determining that the new profile differs from the previous profile. The controller may repeatedly profile and re-optimize a method until profiles for the method stabilize. Profiling and hardware tracing of an application may be selectively enabled or disabled allowing the controller to respond to later phase changes in application execution by re-optimizing, thereby potentially improving overall application performance.

DATABASE TRACE DEBUGGER
20190370148 · 2019-12-05 ·

This disclosure describes a trace debugger (TDB) that is used for database workload replay and database debugging. The TDB maintains consistency through synchronization of the state between the database and a corresponding database trace replay. The TDB can provide a sliding window environment for code block execution and global context sharing. The TDB can be used to interactively analyze and troubleshoot various types of database problems by debugging the database itself, query code (e.g., SQL), performance, end-to-end execution, and plan traces, which can be recorded using scripts. In some implementations, the TDB also provides reverse debugging for historical database state analysis, and/or incremental debugging for dynamic editing and debugging within a session without the need to exit the debugger and perform a full rebuild of the code.