Ignore:
Timestamp:
Aug 28, 2015, 3:58:48 PM (10 years ago)
Author:
[email protected]
Message:

Refactor the JIT printer out of the AbstractMacroAssembler into MacroAssemblerPrinter.
https://bugs.webkit.org/show_bug.cgi?id=148595

Reviewed by Geoffrey Garen.

Why do this?

  1. MacroAssembler::print() code (except for the prototype) need no longer be parsed when compiling C++ files that don't need it.
  2. Adding support for more printable types to MacroAssemblerPrinter::PrintArg triggers recompilation of less files.
  3. The printing code is for most the part common between all target platforms and was previously duplicated by cut-and-paste to all the varieties of MacroAssemblers that support the MASM_PROBE mechanism. Now, there is only one copy in MacroAssemblerPrinter.
  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::ProbeContext::print): Deleted.

  • Removed this function because it is no longer useful since we have this more flexible print() functionality.

(JSC::AbstractMacroAssembler::printIndent): Deleted.
(JSC::AbstractMacroAssembler::printCPU): Deleted.
(JSC::AbstractMacroAssembler::print): Deleted.
(JSC::AbstractMacroAssembler::PrintArg::PrintArg): Deleted.
(JSC::AbstractMacroAssembler::appendPrintArg): Deleted.
(JSC::AbstractMacroAssembler::printInternal): Deleted.
(JSC::AbstractMacroAssembler::printCallback): Deleted.

  • These got moved into MacroAssemblerPrinter.cpp.
  • assembler/MacroAssembler.h:
  • assembler/MacroAssemblerARM.cpp:

(JSC::MacroAssemblerARM::printCPURegisters): Deleted.
(JSC::MacroAssemblerARM::printRegister): Deleted.

  • assembler/MacroAssemblerARM.h:
  • assembler/MacroAssemblerARMv7.cpp:

(JSC::MacroAssemblerARMv7::printCPURegisters): Deleted.
(JSC::MacroAssemblerARMv7::printRegister): Deleted.

  • assembler/MacroAssemblerARMv7.h:
  • assembler/MacroAssemblerX86Common.cpp:

(JSC::MacroAssemblerX86Common::printCPURegisters): Deleted.
(JSC::MacroAssemblerX86Common::printRegister): Deleted.

  • assembler/MacroAssemblerX86Common.h:
  • Deleted a whole bunch of mostly duplicated code.
  • assembler/MacroAssemblerPrinter.cpp: Added.

(JSC::printIndent):
(JSC::printCPU):
(JSC::printCPURegisters):
(JSC::printRegister):
(JSC::MacroAssemblerPrinter::printCallback):

  • assembler/MacroAssemblerPrinter.h: Added.

(JSC::MacroAssemblerPrinter::print):
(JSC::MacroAssemblerPrinter::PrintArg::PrintArg):
(JSC::MacroAssemblerPrinter::appendPrintArg):
(JSC::MacroAssembler::print):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp

    r187819 r189130  
    11/*
    2  * Copyright (C) 2013, 2014 Apple Inc.
     2 * Copyright (C) 2013-2015 Apple Inc.
    33 * Copyright (C) 2009 University of Szeged
    44 * All rights reserved.
     
    9898#if ENABLE(MASM_PROBE)
    9999
    100 #define INDENT printIndent(indentation)
    101 
    102 void MacroAssemblerARM::printCPURegisters(CPUState& cpu, int indentation)
    103 {
    104     #define PRINT_GPREGISTER(_type, _regName) { \
    105         int32_t value = reinterpret_cast<int32_t>(cpu._regName); \
    106         INDENT, dataLogF("%5s: 0x%08x  %d\n", #_regName, value, value) ; \
    107     }
    108     FOR_EACH_CPU_GPREGISTER(PRINT_GPREGISTER)
    109     FOR_EACH_CPU_SPECIAL_REGISTER(PRINT_GPREGISTER)
    110     #undef PRINT_GPREGISTER
    111 
    112     #define PRINT_FPREGISTER(_type, _regName) { \
    113         uint64_t* u = reinterpret_cast<uint64_t*>(&cpu._regName); \
    114         double* d = reinterpret_cast<double*>(&cpu._regName); \
    115         INDENT, dataLogF("%5s: 0x%016llx  %.13g\n", #_regName, *u, *d); \
    116     }
    117     FOR_EACH_CPU_FPREGISTER(PRINT_FPREGISTER)
    118     #undef PRINT_FPREGISTER
    119 }
    120 
    121 #undef INDENT
    122 
    123 void MacroAssemblerARM::printRegister(MacroAssemblerARM::CPUState& cpu, RegisterID regID)
    124 {
    125     const char* name = CPUState::registerName(regID);
    126     union {
    127         void* voidPtr;
    128         intptr_t intptrValue;
    129     } u;
    130     u.voidPtr = cpu.registerValue(regID);
    131     dataLogF("%s:<%p %ld>", name, u.voidPtr, u.intptrValue);
    132 }
    133 
    134 void MacroAssemblerARM::printRegister(MacroAssemblerARM::CPUState& cpu, FPRegisterID regID)
    135 {
    136     const char* name = CPUState::registerName(regID);
    137     union {
    138         double doubleValue;
    139         uint64_t uint64Value;
    140     } u;
    141     u.doubleValue = cpu.registerValue(regID);
    142     dataLogF("%s:<0x%016llx %.13g>", name, u.uint64Value, u.doubleValue);
    143 }
    144 
    145100extern "C" void ctiMasmProbeTrampoline();
    146101
Note: See TracChangeset for help on using the changeset viewer.