5 #if V8_TARGET_ARCH_ARM64 7 #include "src/arm64/decoder-arm64.h" 8 #include "src/globals.h" 16 void DispatchingDecoderVisitor::AppendVisitor(DecoderVisitor* new_visitor) {
17 visitors_.remove(new_visitor);
18 visitors_.push_back(new_visitor);
22 void DispatchingDecoderVisitor::PrependVisitor(DecoderVisitor* new_visitor) {
23 visitors_.remove(new_visitor);
24 visitors_.push_front(new_visitor);
28 void DispatchingDecoderVisitor::InsertVisitorBefore(
29 DecoderVisitor* new_visitor, DecoderVisitor* registered_visitor) {
30 visitors_.remove(new_visitor);
31 std::list<DecoderVisitor*>::iterator it;
32 for (it = visitors_.begin(); it != visitors_.end(); it++) {
33 if (*it == registered_visitor) {
34 visitors_.insert(it, new_visitor);
40 DCHECK(*it == registered_visitor);
41 visitors_.insert(it, new_visitor);
45 void DispatchingDecoderVisitor::InsertVisitorAfter(
46 DecoderVisitor* new_visitor, DecoderVisitor* registered_visitor) {
47 visitors_.remove(new_visitor);
48 std::list<DecoderVisitor*>::iterator it;
49 for (it = visitors_.begin(); it != visitors_.end(); it++) {
50 if (*it == registered_visitor) {
52 visitors_.insert(it, new_visitor);
58 DCHECK(*it == registered_visitor);
59 visitors_.push_back(new_visitor);
63 void DispatchingDecoderVisitor::RemoveVisitor(DecoderVisitor* visitor) {
64 visitors_.remove(visitor);
68 #define DEFINE_VISITOR_CALLERS(A) \ 69 void DispatchingDecoderVisitor::Visit##A(Instruction* instr) { \ 70 if (!(instr->Mask(A##FMask) == A##Fixed)) { \ 71 DCHECK(instr->Mask(A##FMask) == A##Fixed); \ 73 std::list<DecoderVisitor*>::iterator it; \ 74 for (it = visitors_.begin(); it != visitors_.end(); it++) { \ 75 (*it)->Visit##A(instr); \ 78 VISITOR_LIST(DEFINE_VISITOR_CALLERS)
79 #undef DEFINE_VISITOR_CALLERS 85 #endif // V8_TARGET_ARCH_ARM64