Timestamp:
Oct 15, 2015, 12:54:02 PM (10 years ago)
Author:
[email protected]
Message:

Add MASM_PROBE support for ARM64.
https://bugs.webkit.org/show_bug.cgi?id=150128

Reviewed by Michael Saboff.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/ARM64Assembler.h:
  • Convert the ARM64 registers enum list into a macro list so that we can use it elsewhere e.g. to declare fields in the probe CPUState. Also de-tabbed the contents of the ARM64Registers namespace since the enum list change touches almost all of it anyway. This reduces the amount of complaints from the style checker.
  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::CPUState::registerName):
(JSC::AbstractMacroAssembler::CPUState::registerValue):

  • Change CPUState methods to allow for registers ID that do not map to one of its fields. This is needed because ARM64's registers include aliases for some register names. The CPUState will not allocate separate storage for the aliases.
  • assembler/MacroAssemblerARM64.cpp: Added.

(JSC::arm64ProbeTrampoline):

  • Unlike the probe mechanism for other CPUs, the ARM64 implementation does not allow the probe function to modify the sp and pc registers. We insert this wrapper function between ctiMasmProbeTrampoline() and the user's probe function so that we can check if the user tried to modify sp and pc. If so, we will print an error message so that we can alert the user that we don't support that on ARM64.

See the comment in ctiMasmProbeTrampoline() in JITStubsARM64.h for details
on why we cannot support sp and pc modifications by the probe function.

(JSC::MacroAssemblerARM64::probe):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::repatchCall):
(JSC::MacroAssemblerARM64::makeBranch):

  • jit/JITStubs.cpp:
  • jit/JITStubsARM64.h: Added.
File:
1 added

Note: See TracChangeset for help on using the changeset viewer.