blob: 8f75660c288cf0f39e6f23af3f720c64cb03173e [file] [log] [blame]
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM.
#if defined(TARGET_ARCH_ARM)
#include "vm/code_patcher.h"
#include "vm/instructions.h"
#include "vm/object.h"
namespace dart {
uword CodePatcher::GetStaticCallTargetAt(uword return_address,
const Code& code) {
ASSERT(code.ContainsInstructionAt(return_address));
CallPattern call(return_address, code);
return call.TargetAddress();
}
void CodePatcher::PatchStaticCallAt(uword return_address,
const Code& code,
uword new_target) {
ASSERT(code.ContainsInstructionAt(return_address));
CallPattern call(return_address, code);
call.SetTargetAddress(new_target);
}
void CodePatcher::PatchInstanceCallAt(uword return_address,
const Code& code,
uword new_target) {
ASSERT(code.ContainsInstructionAt(return_address));
UNIMPLEMENTED();
}
void CodePatcher::InsertCallAt(uword start, uword target) {
UNIMPLEMENTED();
}
uword CodePatcher::GetInstanceCallAt(uword return_address,
const Code& code,
ICData* ic_data,
Array* arguments_descriptor) {
ASSERT(code.ContainsInstructionAt(return_address));
UNIMPLEMENTED();
return 0;
}
intptr_t CodePatcher::InstanceCallSizeInBytes() {
UNIMPLEMENTED();
return 0;
}
} // namespace dart
#endif // defined TARGET_ARCH_ARM