| Index: src/x64/assembler-x64.cc
|
| ===================================================================
|
| --- src/x64/assembler-x64.cc (revision 13543)
|
| +++ src/x64/assembler-x64.cc (working copy)
|
| @@ -356,6 +356,7 @@
|
| Assembler::Assembler(Isolate* isolate, void* buffer, int buffer_size)
|
| : AssemblerBase(isolate, buffer, buffer_size),
|
| code_targets_(100),
|
| + runtime_entries_(100),
|
| positions_recorder_(this) {
|
| // Clear the buffer in debug mode unless it was provided by the
|
| // caller in which case we can't be sure it's okay to overwrite
|
| @@ -840,6 +841,16 @@
|
| }
|
|
|
|
|
| +void Assembler::call(Address entry, RelocInfo::Mode rmode) {
|
| + ASSERT(RelocInfo::IsRuntimeEntry(rmode));
|
| + positions_recorder()->WriteRecordedPositions();
|
| + EnsureSpace ensure_space(this);
|
| + // 1110 1000 #32-bit disp.
|
| + emit(0xE8);
|
| + emit_runtime_entry(entry, rmode);
|
| +}
|
| +
|
| +
|
| void Assembler::call(Handle<Code> target,
|
| RelocInfo::Mode rmode,
|
| TypeFeedbackId ast_id) {
|
| @@ -1246,6 +1257,16 @@
|
| }
|
|
|
|
|
| +void Assembler::j(Condition cc, Address entry, RelocInfo::Mode rmode) {
|
| + ASSERT(RelocInfo::IsRuntimeEntry(rmode));
|
| + EnsureSpace ensure_space(this);
|
| + ASSERT(is_uint4(cc));
|
| + emit(0x0F);
|
| + emit(0x80 | cc);
|
| + emit_runtime_entry(entry, rmode);
|
| +}
|
| +
|
| +
|
| void Assembler::j(Condition cc,
|
| Handle<Code> target,
|
| RelocInfo::Mode rmode) {
|
| @@ -1308,6 +1329,15 @@
|
| }
|
|
|
|
|
| +void Assembler::jmp(Address entry, RelocInfo::Mode rmode) {
|
| + ASSERT(RelocInfo::IsRuntimeEntry(rmode));
|
| + EnsureSpace ensure_space(this);
|
| + ASSERT(RelocInfo::IsRuntimeEntry(rmode));
|
| + emit(0xE9);
|
| + emit_runtime_entry(entry, rmode);
|
| +}
|
| +
|
| +
|
| void Assembler::jmp(Register target) {
|
| EnsureSpace ensure_space(this);
|
| // Opcode FF/4 r64.
|
| @@ -3049,6 +3079,7 @@
|
|
|
|
|
| const int RelocInfo::kApplyMask = RelocInfo::kCodeTargetMask |
|
| + 1 << RelocInfo::RUNTIME_ENTRY |
|
| 1 << RelocInfo::INTERNAL_REFERENCE |
|
| 1 << RelocInfo::CODE_AGE_SEQUENCE;
|
|
|
|
|