Ignore:
Timestamp:
Mar 9, 2018, 1:35:17 PM (7 years ago)
Author:
[email protected]
Message:

[Re-landing] Prepare LLInt code to support pointer profiling.
https://bugs.webkit.org/show_bug.cgi?id=183387
<rdar://problem/38199678>

Reviewed by JF Bastien.

Source/JavaScriptCore:

  1. Introduced PtrTag enums for supporting pointer profiling later.
  1. Also introduced tagging, untagging, retagging, and tag removal placeholder template functions for the same purpose.
  1. Prepare the offlineasm for supporting pointer profiling later.
  1. Tagged some pointers in LLInt asm code. Currently, these should have no effect on behavior.
  1. Removed returnToThrowForThrownException() because it is not used anywhere.
  1. Added the offlineasm folder to JavaScriptCore Xcode project so that it's easier to view and edit these files in Xcode.
  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/LLIntCallLinkInfo.h:

(JSC::LLIntCallLinkInfo::unlink):

  • llint/LLIntData.cpp:

(JSC::LLInt::initialize):

  • llint/LLIntData.h:
  • llint/LLIntExceptions.cpp:

(JSC::LLInt::returnToThrowForThrownException): Deleted.

  • llint/LLIntExceptions.h:
  • llint/LLIntOfflineAsmConfig.h:
  • llint/LLIntOffsetsExtractor.cpp:
  • llint/LLIntPCRanges.h:

(JSC::LLInt::isLLIntPC):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::handleHostCall):
(JSC::LLInt::setUpCall):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • offlineasm/ast.rb:
  • offlineasm/instructions.rb:
  • offlineasm/risc.rb:
  • runtime/PtrTag.h: Added.

(JSC::uniquePtrTagID):
(JSC::ptrTag):
(JSC::tagCodePtr):
(JSC::untagCodePtr):
(JSC::retagCodePtr):
(JSC::removeCodePtrTag):

Source/WTF:

  • wtf/Platform.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/offlineasm/risc.rb

    r229447 r229481  
    449449def riscLowerMisplacedAddresses(list)
    450450    newList = []
    451     list.each {
    452         | node |
    453         if node.is_a? Instruction
     451    hasBackendSpecificLowering = Instruction.respond_to? "lowerMisplacedAddresses#{$activeBackend}"
     452    list.each {
     453        | node |
     454        if node.is_a? Instruction
     455            if hasBackendSpecificLowering
     456                wasHandled, newList = Instruction.send("lowerMisplacedAddresses#{$activeBackend}", node, newList)
     457                next if wasHandled
     458            end
     459
    454460            postInstructions = []
    455461            annotation = node.annotation
Note: See TracChangeset for help on using the changeset viewer.