G06F8/434

RUNTIME TYPE IDENTIFICATION OF AN OBJECT UTILIZING CLASS INHERITANCE RELATIONSHIPS
20220058006 · 2022-02-24 ·

Embodiments of the present disclosure relate to runtime type identification (RTTI) of an object. In an embodiment, a computer-implemented method is disclosed. A class inheritance relationship between a plurality of classes in at least one source code section is generated. Respective type identifications are assigned to identify the classes in the class inheritance relationship. In accordance with presence of a first operation related to accessing a target pointer to an object of a target class of the classes, a type identification for the target class is caused to be recorded with at least one bit of a memory address of the target pointer that can be omitted in addressing the target pointer. RTTI is caused to be performed based on the class inheritance relationship and the at least one bit of the memory address of the target pointer. In other embodiments, a system and a computer program product are disclosed.

Electronic apparatus and control method thereof

An electronic apparatus and a control method of the electronic apparatus is provided. The method includes acquiring source code written in a programing language, identifying a structure including a function pointer from the source code, identifying a plurality of initialized variables as a plurality first variables among variables of the function pointer included in the identified structure, and modifying the source code by changing an indirect call using an unmodifiable variable among the plurality of first variables to a direct call.

System for generating a map illustrating bindings
11210072 · 2021-12-28 · ·

The disclosed embodiments relate to a system that facilitates developing applications in a component-based software development environment. This system provides an execution environment comprising instances of application components and a registry that maps names to instances of application components. Within the registry, each entry is associated with a list of notification dependencies that specifies component instances to be notified when the registry entry changes. Upon receiving a command to display notification dependencies for the registry, the system generates and displays a dependency graph containing nodes representing component instances and arrows between the nodes representing notification dependencies between the component instances. Upon receiving a command to display a timeline for with the registry, the system generates and displays a timeline representing events associated with the registry in chronological order.

METHODS, DEVICES, AND MEDIA FOR HARDWARE-SUPPORTED OBJECT METADATA RETRIEVAL
20210374047 · 2021-12-02 ·

Methods and devices for hardware-supported schemes for efficient metadata retrieval are described. The schemes may use hardware to efficiently enforce type safety and speed up memory bound checks without imposing undue memory overhead. Multiple such schemes may be supported by a device, permitting the selection of an optimal scheme based on a given memory allocation request. The schemes may be compatible with legacy code and applicable to a wide range of data objects and system constraints. Compilation, instrumentation, and linking of code to effect such schemes is also described.

Methods and apparatus to protect memory from buffer overflow and/or underflow

A disclosed example to protect memory from buffer overflow or underflow includes defining an implicit bound pointer based on an implicit bound pointer definition in a configuration file for a memory region; instrumenting object code with an implicit buffer bound check based on the implicit bound pointer; and generating hardened executable object code based on the object code, the implicit buffer bound check, and the implicit bound pointer, the implicit bound pointer located in the hardened executable object code during a compilation phase to facilitate loading the implicit bound pointer in a global bounds table during runtime for access by the implicit buffer bound check.

Electronic device performing restoration on basis of comparison of constant value and control method thereof

An electronic device includes a memory storing one or more instructions, and at least one processor configured to execute the one or more instructions to identify whether an annotation binding a first type object and a second type object is declared, and bind the first type object and the second type object, and sign both the bound first type object and the bound second type object based on identifying that the annotation is declared.

Enhancing memory safe programming using a page frame tag mechanism

A technique for mitigating against return-oriented programming (ROP) attacks that occur during execution of an application includes receiving source code to compile into an executable application. During a compilation of the source code, one or more functions within the source code that are associated with gadgets in an ROP attack are determined, each of the one or more functions is assigned to one or more protected pages of memory for the executable application, and a tag is assigned to each of the one or more functions. The tag for each function maps to the protected page of memory to which the function is assigned.

INSTANCES OF JUST-IN-TIME (JIT) COMPILATION OF CODE USING DIFFERENT COMPILATION SETTINGS

In some examples, just-in-time (JIT) control instructions upon execution cause a system to initiate a plurality of instances of JIT compilation of a first code called by a program, where the initiating of the plurality of instances of the JIT compilation of the first code is under control of the JIT control instructions that are outside the program, and the plurality of instances of the JIT compilation of the first code use respective different compilation settings, and are to produce respective JIT compiled instances of the first code.

DYNAMIC MEMORY ALLOCATION METHODS AND SYSTEMS
20220137841 · 2022-05-05 ·

In a dynamic memory allocator, a method of allocating memory to a process, the method comprising executing on a processor the steps of: creating one or more arenas within the memory, each arena comprising one or more memory blocks and each arena having an n-byte aligned arena address; upon receiving a memory request from the process, returning a pointer to the process, the pointer having as its value an address of a memory block selected from one of the arenas; upon determining that the memory block is no longer needed by the process, retrieving the address of said memory block from the pointer and releasing the memory block; and, upon a new arena being created, shifting forward the n-byte aligned address of said new arena according to a stored variable such that each memory block of said new arena is also shifted by the stored variable, the stored variable having n bytes and the stored variable having a random value.

CROSS-LANGUAGE COMPILATION METHOD AND DEVICE
20220012029 · 2022-01-13 ·

A compilation method includes obtaining a source program code. The source program code includes a first function in a first language code and a second function in a second language code. The first language code is a native language. The second language code is a non-native language. The method also includes generating a third language code based on the source program code. The third language code includes a third function, a fourth function and a fifth function. The third function is generated based on the first function. The fourth function is generated based on the second function. The fifth function is generated based on the first function and the second function. Executing the third function invokes the fourth function via the fifth function.