Index: src/a64/regexp-macro-assembler-a64.cc |
diff --git a/src/a64/regexp-macro-assembler-a64.cc b/src/a64/regexp-macro-assembler-a64.cc |
index f7e01a546359f4363ec52711df745118b20f787b..5f1f7c41a35fffb041faf5a8a7955f893abf1843 100644 |
--- a/src/a64/regexp-macro-assembler-a64.cc |
+++ b/src/a64/regexp-macro-assembler-a64.cc |
@@ -27,8 +27,9 @@ |
#include "v8.h" |
-#if defined(V8_TARGET_ARCH_A64) |
+#if V8_TARGET_ARCH_A64 |
+#include "cpu-profiler.h" |
#include "unicode.h" |
#include "log.h" |
#include "code-stubs.h" |
@@ -155,6 +156,7 @@ RegExpMacroAssemblerA64::RegExpMacroAssemblerA64( |
__ Bind(&start_label_); // And then continue from here. |
} |
+ |
RegExpMacroAssemblerA64::~RegExpMacroAssemblerA64() { |
delete masm_; |
// Unuse labels in case we throw away the assembler without calling GetCode. |
@@ -171,6 +173,7 @@ int RegExpMacroAssemblerA64::stack_limit_slack() { |
return RegExpStack::kStackLimitSlack; |
} |
+ |
void RegExpMacroAssemblerA64::AdvanceCurrentPosition(int by) { |
if (by != 0) { |
__ Add(current_input_offset(), |
@@ -178,6 +181,7 @@ void RegExpMacroAssemblerA64::AdvanceCurrentPosition(int by) { |
} |
} |
+ |
void RegExpMacroAssemblerA64::AdvanceRegister(int reg, int by) { |
ASSERT((reg >= 0) && (reg < num_registers_)); |
if (by != 0) { |
@@ -204,6 +208,7 @@ void RegExpMacroAssemblerA64::AdvanceRegister(int reg, int by) { |
} |
} |
+ |
void RegExpMacroAssemblerA64::Backtrack() { |
CheckPreemption(); |
Pop(w10); |
@@ -211,6 +216,7 @@ void RegExpMacroAssemblerA64::Backtrack() { |
__ Br(x10); |
} |
+ |
void RegExpMacroAssemblerA64::Bind(Label* label) { |
__ Bind(label); |
} |
@@ -1119,6 +1125,7 @@ void RegExpMacroAssemblerA64::PopRegister(int register_index) { |
StoreRegister(register_index, w10); |
} |
+ |
void RegExpMacroAssemblerA64::PushBacktrack(Label* label) { |
if (label->is_bound()) { |
int target = label->pos(); |
@@ -1290,12 +1297,14 @@ void RegExpMacroAssemblerA64::WriteStackPointerToRegister(int reg) { |
StoreRegister(reg, w10); |
} |
+ |
// Helper function for reading a value out of a stack frame. |
template <typename T> |
static T& frame_entry(Address re_frame, int frame_offset) { |
return *reinterpret_cast<T*>(re_frame + frame_offset); |
} |
+ |
int RegExpMacroAssemblerA64::CheckStackGuardState(Address* return_address, |
Code* re_code, |
Address re_frame, |
@@ -1396,6 +1405,7 @@ int RegExpMacroAssemblerA64::CheckStackGuardState(Address* return_address, |
return 0; |
} |
+ |
void RegExpMacroAssemblerA64::CheckPosition(int cp_offset, |
Label* on_outside_input) { |
CompareAndBranchOrBacktrack(current_input_offset(), |
@@ -1404,11 +1414,13 @@ void RegExpMacroAssemblerA64::CheckPosition(int cp_offset, |
on_outside_input); |
} |
+ |
bool RegExpMacroAssemblerA64::CanReadUnaligned() { |
// TODO(pielan): See whether or not we should disable unaligned accesses. |
return !slow_safe(); |
} |
+ |
// Private methods: |
void RegExpMacroAssemblerA64::CallCheckStackGuardState(Register scratch) { |
@@ -1514,6 +1526,7 @@ void RegExpMacroAssemblerA64::CheckPreemption() { |
CallIf(&check_preempt_label_, ls); |
} |
+ |
void RegExpMacroAssemblerA64::CheckStackLimit() { |
ExternalReference stack_limit = |
ExternalReference::address_of_regexp_stack_limit(isolate()); |
@@ -1533,6 +1546,7 @@ void RegExpMacroAssemblerA64::Push(Register source) { |
PreIndex)); |
} |
+ |
void RegExpMacroAssemblerA64::Pop(Register target) { |
ASSERT(target.Is32Bits()); |
ASSERT(!target.is(backtrack_stackpointer())); |