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, |