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/MacroAssemblerARMv7.cpp

    r176233 r189130  
    11/*
    2  * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    3333#if ENABLE(MASM_PROBE)
    3434
    35 #define INDENT printIndent(indentation)
    36 
    37 void MacroAssemblerARMv7::printCPURegisters(CPUState& cpu, int indentation)
    38 {
    39     #define PRINT_GPREGISTER(_type, _regName) { \
    40         int32_t value = reinterpret_cast<int32_t>(cpu._regName); \
    41         INDENT, dataLogF("%5s: 0x%08x  %d\n", #_regName, value, value) ; \
    42     }
    43     FOR_EACH_CPU_GPREGISTER(PRINT_GPREGISTER)
    44     FOR_EACH_CPU_SPECIAL_REGISTER(PRINT_GPREGISTER)
    45     #undef PRINT_GPREGISTER
    46 
    47     #define PRINT_FPREGISTER(_type, _regName) { \
    48         uint64_t* u = reinterpret_cast<uint64_t*>(&cpu._regName); \
    49         double* d = reinterpret_cast<double*>(&cpu._regName); \
    50         INDENT, dataLogF("%5s: 0x%016llx  %.13g\n", #_regName, *u, *d); \
    51     }
    52     FOR_EACH_CPU_FPREGISTER(PRINT_FPREGISTER)
    53     #undef PRINT_FPREGISTER
    54 }
    55 
    56 #undef INDENT
    57 
    58 void MacroAssemblerARMv7::printRegister(MacroAssemblerARMv7::CPUState& cpu, RegisterID regID)
    59 {
    60     const char* name = CPUState::registerName(regID);
    61     union {
    62         void* voidPtr;
    63         intptr_t intptrValue;
    64     } u;
    65     u.voidPtr = cpu.registerValue(regID);
    66     dataLogF("%s:<%p %ld>", name, u.voidPtr, u.intptrValue);
    67 }
    68 
    69 void MacroAssemblerARMv7::printRegister(MacroAssemblerARMv7::CPUState& cpu, FPRegisterID regID)
    70 {
    71     const char* name = CPUState::registerName(regID);
    72     union {
    73         double doubleValue;
    74         uint64_t uint64Value;
    75     } u;
    76     u.doubleValue = cpu.registerValue(regID);
    77     dataLogF("%s:<0x%016llx %.13g>", name, u.uint64Value, u.doubleValue);
    78 }
    79 
    8035extern "C" void ctiMasmProbeTrampoline();
    8136
Note: See TracChangeset for help on using the changeset viewer.