Object <- MethodPatch |
|
|
AddToPatchedClassList EachCodeAddressInPatch InstallPatch |
Class MethodPatch defines no new attributes.
Fields
| Field | Type | |
|---|---|---|
| MethodPatch: | classToPatch: | ClassNumber |
| codeAddressOfPatch: | Unsigned |
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;