| Index: runtime/vm/code_patcher.h
|
| diff --git a/runtime/vm/code_patcher.h b/runtime/vm/code_patcher.h
|
| index 3c0236d99d3fc2a523f8cba929dc532edc233e3a..57ee46a60bffcf1eaf72b49b6d4b53aabc4f2b34 100644
|
| --- a/runtime/vm/code_patcher.h
|
| +++ b/runtime/vm/code_patcher.h
|
| @@ -18,7 +18,6 @@ class ExternalLabel;
|
| class Function;
|
| class ICData;
|
| class RawArray;
|
| -class RawCode;
|
| class RawFunction;
|
| class RawICData;
|
| class RawObject;
|
| @@ -47,10 +46,15 @@ class CodePatcher : public AllStatic {
|
| // Patch static call before return_address in given code to the new target.
|
| static void PatchStaticCallAt(uword return_address,
|
| const Code& code,
|
| - const Code& new_target);
|
| + uword new_target_address);
|
| +
|
| + // Patch instance call before return_address in given code to the new target.
|
| + static void PatchInstanceCallAt(uword return_address,
|
| + const Code& code,
|
| + uword new_target_address);
|
|
|
| // Patch entry point with a jump as specified in the code's patch region.
|
| - static void PatchEntry(const Code& code, const Code& new_code);
|
| + static void PatchEntry(const Code& code);
|
|
|
| // Restore entry point with original code (i.e., before patching).
|
| static void RestoreEntry(const Code& code);
|
| @@ -58,16 +62,20 @@ class CodePatcher : public AllStatic {
|
| // Has the entry been patched?
|
| static bool IsEntryPatched(const Code& code);
|
|
|
| + // Returns true if the code can be patched with a jump at beginning (checks
|
| + // that there are no conflicts with object pointers). Used in ASSERTs.
|
| + static bool CodeIsPatchable(const Code& code);
|
| +
|
| // Return the target address of the static call before return_address
|
| // in given code.
|
| - static RawCode* GetStaticCallTargetAt(uword return_address, const Code& code);
|
| + static uword GetStaticCallTargetAt(uword return_address, const Code& code);
|
|
|
| // Get instance call information. Returns the call target and sets each
|
| // of the output parameters ic_data and arguments_descriptor if they are
|
| // non-NULL.
|
| - static RawCode* GetInstanceCallAt(uword return_address,
|
| - const Code& code,
|
| - ICData* ic_data);
|
| + static uword GetInstanceCallAt(uword return_address,
|
| + const Code& code,
|
| + ICData* ic_data);
|
|
|
| // Return target of an unoptimized static call and its ICData object
|
| // (calls target via a stub).
|
| @@ -77,17 +85,17 @@ class CodePatcher : public AllStatic {
|
|
|
| static intptr_t InstanceCallSizeInBytes();
|
|
|
| - static void InsertDeoptimizationCallAt(uword start, uword target);
|
| + static void InsertCallAt(uword start, uword target);
|
|
|
| static RawObject* GetEdgeCounterAt(uword pc, const Code& code);
|
|
|
| static void PatchPoolPointerCallAt(uword return_address,
|
| const Code& code,
|
| - const Code& new_target);
|
| + uword new_target);
|
|
|
| - static RawCode* GetNativeCallAt(uword return_address,
|
| - const Code& code,
|
| - NativeFunction* target);
|
| + static uword GetNativeCallAt(uword return_address,
|
| + const Code& code,
|
| + NativeFunction* target);
|
|
|
| static void PatchNativeCallAt(uword return_address,
|
| const Code& code,
|
|
|