-
公开(公告)号:US11947677B2
公开(公告)日:2024-04-02
申请号:US17011637
申请日:2020-09-03
Applicant: Oracle International Corporation
Inventor: Daniele Bonetta , Alexander Jordan , Christian Humer , Jacob Kreindl
CPC classification number: G06F21/577 , G06F8/427
Abstract: A method may include determining that a non-constant value of a variable corresponding to a variable node of the abstract syntax tree flows into an operator node in the abstract syntax tree. The method may further include adding, to the abstract syntax tree, a check taint node including functionality to: make a taint status determination that the non-constant value is tainted, and return the non-constant value to the operator node. The operator node generates a result value by executing an operator using the non-constant value. The method may further include adding, to the abstract syntax tree, a set taint node that stores, based on the taint status determination, the result value in a second tainted object, and performing, using the abstract syntax tree, a taint analysis of the source code to identify a vulnerability in the source code.
-
公开(公告)号:US20220067172A1
公开(公告)日:2022-03-03
申请号:US17011637
申请日:2020-09-03
Applicant: Oracle International Corporation
Inventor: Daniele Bonetta , Alexander Jordan , Christian Humer
Abstract: A method may include determining that a non-constant value of a variable corresponding to a variable node of the abstract syntax tree flows into an operator node in the abstract syntax tree. The method may further include adding, to the abstract syntax tree, a check taint node including functionality to: make a taint status determination that the non-constant value is tainted, and return the non-constant value to the operator node. The operator node generates a result value by executing an operator using the non-constant value. The method may further include adding, to the abstract syntax tree, a set taint node that stores, based on the taint status determination, the result value in a second tainted object, and performing, using the abstract syntax tree, a taint analysis of the source code to identify a vulnerability in the source code.
-
公开(公告)号:US20180246752A1
公开(公告)日:2018-08-30
申请号:US15864863
申请日:2018-01-08
Applicant: Oracle International Corporation
Inventor: Daniele Bonetta , Matthias Brantner
CPC classification number: G06F9/45558 , G06F8/30 , G06F9/4552 , G06F9/45541 , G06F16/20 , G06F16/80
Abstract: Computer-implemented techniques described herein provide fast access to structured, semi-structured, and unstructured data using a virtual machine that provides support for dynamic code generation. In an embodiment, a virtual machine allows for the efficient encoding of data objects into hierarchically marked up data. A virtual machine is configured to dynamically create attributes of objects referenced by a body of code and hidden classes used to store attributes of objects referenced by the body of code. The virtual machine will determine whether a hidden class of an object satisfies one or more encoding criteria for encoding instances of objects with the hidden class. Encoding machine code is generated and executed to encode instances of objects with the hidden class. In another embodiment, direct structure decoding enables the generation of efficient machine code that is specialized for accessing only a subset of the input data that is used by an application. A parse operation is received to parse a hierarchical data object and a proxy object is created in a runtime memory space that references the hierarchical data object. It is then determined that the hierarchical data object is syntactically valid, and in response to receiving a request to read a property of the hierarchical data object, a subset of hierarchical data from the hierarchical data object is parsed to materialize a value of the property in the proxy object.
-
公开(公告)号:US20230376290A1
公开(公告)日:2023-11-23
申请号:US18319339
申请日:2023-05-17
Applicant: Oracle International Corporation
Inventor: Christian Humer , Daniele Bonetta
IPC: G06F8/41
CPC classification number: G06F8/44
Abstract: Domain specific inlining for interpreters includes obtaining an interpreter source code including compiler directives. A host compilation is performed on the interpreter source code to obtain a compiled interpreter. Performing host compilation includes inlining code blocks based on the plurality of compiler directives. The compiled interpreter is outputted.
-
公开(公告)号:US10248349B2
公开(公告)日:2019-04-02
申请号:US15279564
申请日:2016-09-29
Applicant: Oracle International Corporation
Inventor: Benoit Daloze , Stefan Marr , Daniele Bonetta
IPC: G06F3/06 , G06F12/0891
Abstract: A method may include creating objects by executing a program in a first thread. Creating the objects may include allocating, for each object, storage based on a shape assigned to the object. The storage may include separate, non-reusable storage locations. Each storage location may correspond to a field of the object. The shape may include a sharing status and a mapping of each field of the object to a storage location. The method may further include detecting that the program is initiating a second concurrent thread of execution, and designating a subset of objects as shared objects. Designating the subset of objects as shared objects may include setting the sharing status of the shape assigned to each shared object to indicate that the object is shared. The method may further include initiating tracking of shared objects and implementing a write barrier when writing to shared objects.
-
公开(公告)号:US09766926B2
公开(公告)日:2017-09-19
申请号:US14170506
申请日:2014-01-31
Applicant: Oracle International Corporation
Inventor: Daniele Bonetta , Thomas Wuerthinger
Abstract: A method for executing a program in parallel includes creating a program replica, which includes a write operation on and an identifier of an object and is a copy of the program, for a thread. The identifier specifies whether the object is thread-local. The method includes modifying the write operation based on a speculation that the write operation uses only thread-local objects. The write operation executes in a transaction of the thread. The method includes determining, while executing the program replica and using the identifier, that the object used by the write operation is not thread-local, de-optimizing the write operation by adding instrumentation to implement a software transactional memory (STM) system for the write operation to obtain a de-optimized write operation, and performing the de-optimized write operation on the object to obtain a result and store the result in a redo log.
-
公开(公告)号:US10417036B2
公开(公告)日:2019-09-17
申请号:US15864863
申请日:2018-01-08
Applicant: Oracle International Corporation
Inventor: Daniele Bonetta , Matthias Brantner
Abstract: Computer-implemented techniques described herein provide fast access to structured, semi-structured, and unstructured data using a virtual machine that provides support for dynamic code generation. In an embodiment, a virtual machine allows for the efficient encoding of data objects into hierarchically marked up data. A virtual machine is configured to dynamically create attributes of objects referenced by a body of code and hidden classes used to store attributes of objects referenced by the body of code. The virtual machine will determine whether a hidden class of an object satisfies one or more encoding criteria for encoding instances of objects with the hidden class. Encoding machine code is generated and executed to encode instances of objects with the hidden class. In another embodiment, direct structure decoding enables the generation of efficient machine code that is specialized for accessing only a subset of the input data that is used by an application. A parse operation is received to parse a hierarchical data object and a proxy object is created in a runtime memory space that references the hierarchical data object. It is then determined that the hierarchical data object is syntactically valid, and in response to receiving a request to read a property of the hierarchical data object, a subset of hierarchical data from the hierarchical data object is parsed to materialize a value of the property in the proxy object.
-
公开(公告)号:US20170277467A1
公开(公告)日:2017-09-28
申请号:US15279564
申请日:2016-09-29
Applicant: Oracle International Corporation
Inventor: Benoit Daloze , Stefan Marr , Daniele Bonetta
IPC: G06F3/06 , G06F12/0891
CPC classification number: G06F3/0631 , G06F3/0604 , G06F3/0683 , G06F9/5016 , G06F9/52 , G06F9/522 , G06F9/528 , G06F12/0891 , G06F2212/604
Abstract: A method may include creating objects by executing a program in a first thread. Creating the objects may include allocating, for each object, storage based on a shape assigned to the object. The storage may include separate, non-reusable storage locations. Each storage location may correspond to a field of the object. The shape may include a sharing status and a mapping of each field of the object to a storage location. The method may further include detecting that the program is initiating a second concurrent thread of execution, and designating a subset of objects as shared objects. Designating the subset of objects as shared objects may include setting the sharing status of the shape assigned to each shared object to indicate that the object is shared. The method may further include initiating tracking of shared objects and implementing a write barrier when writing to shared objects.
-
公开(公告)号:US20150081988A1
公开(公告)日:2015-03-19
申请号:US14170506
申请日:2014-01-31
Applicant: ORACLE INTERNATIONAL CORPORATION
Inventor: Daniele Bonetta , Thomas Wuerthinger
IPC: G06F9/46
Abstract: A method for executing a program in parallel includes creating a program replica, which includes a write operation on and an identifier of an object and is a copy of the program, for a thread. The identifier specifies whether the object is thread-local. The method includes modifying the write operation based on a speculation that the write operation uses only thread-local objects. The write operation executes in a transaction of the thread. The method includes determining, while executing the program replica and using the identifier, that the object used by the write operation is not thread-local, de-optimizing the write operation by adding instrumentation to implement a software transactional memory (STM) system for the write operation to obtain a de-optimized write operation, and performing the de-optimized write operation on the object to obtain a result and store the result in a redo log.
Abstract translation: 一种用于并行执行程序的方法包括:创建一个程序副本,该程序副本包括对一个对象的写操作和一个对象的标识符,并且是该程序的副本。 该标识符指定对象是线程本地的。 该方法包括基于写入操作仅使用线程本地对象的推测来修改写入操作。 写操作在线程的事务中执行。 该方法包括在执行程序副本并使用标识符时,确定由写入操作使用的对象不是线程本地的,通过添加仪器来对写入操作进行优化以实现软件事务存储器(STM)系统 写入操作以获得去优化的写入操作,并且对对象执行去优化的写入操作以获得结果并将结果存储在重做日志中。
-
-
-
-
-
-
-
-