[operations] [attributes] [fields] [template] [definition]
[implementation] [documentation]
To use the search tool you need to use a browser which supports JAVA (c)

[next] [prev] [superclass] [next peer] [prev peer] [subclass] [index] [hierarchy]

MethodPatch

abstract
inherits from Object

Object <- MethodPatch



Operations

Get list of all operations

AddToPatchedClassList
EachCodeAddressInPatch
InstallPatch


Attributes

Get list of all attributes

Class MethodPatch defines no new attributes.


Fields

Field Type
MethodPatch: classToPatch: ClassNumber
codeAddressOfPatch: Unsigned


Instance template

Class MethodPatch cannot be instantiated.


Class definition

Define Class MethodPatch;
    abstract;
    inherits from Object;
    
    field classToPatch: ClassNumber;
    field codeAddressOfPatch: Unsigned;
    
    operation InstallPatch(), noMethod;
        // Subclass overrides this to install patch in approprate places, such as
        // the intrinsic list, or direct dispatch list.
    
    intrinsic AddToPatchedClassList(patchedClassList: Pointer;
            classNum: Unsigned; operationNum: Unsigned; codeAddressOfPatch: Unsigned);
        // This method is called by ClassMethodPatch and ObjectMethodPatch from their overrides of
        // InstallPatch, to add or update a patch MethodEntry in the corresponding PatchedClassList.
    
    operation EachCodeAddressInPatch(
            function: EachCodeAddressFunction; parameters: Pointer;
            modify: Boolean; modifyWithoutShadowing: Boolean): Object;
        // Call a function for each code address.
        // Each patch has exactly one so it doesn't really need to iterate.
        // Used when activating a package.
    
end class;