Changeset 212782 in webkit


Ignore:
Timestamp:
Feb 21, 2017 5:16:42 PM (7 years ago)
Author:
jfbastien@apple.com
Message:

FullCodeOrigin for CodeBlock+CodeOrigin printing
https://bugs.webkit.org/show_bug.cgi?id=168673

Reviewed by Filip Pizlo.

WebAssembly doesn't have a CodeBlock, so printing it isn't
valid. This patch adds FullCodeOrigin to handle the
CodeBlock+CodeOrigin printing pattern, and uses it through all the
places I could find, including Repatch.cpp where it's relevant for
WebAssembly.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::noticeIncomingCall):

  • bytecode/FullCodeOrigin.cpp: Added.

(JSC::FullCodeOrigin::dump):
(JSC::FullCodeOrigin::dumpInContext):

  • bytecode/FullCodeOrigin.h: Added.

(JSC::FullCodeOrigin::FullCodeOrigin):

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::regenerate):

  • jit/PolymorphicCallStubRoutine.cpp:

(JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine):

  • jit/Repatch.cpp:

(JSC::linkFor):
(JSC::linkDirectFor):
(JSC::linkVirtualFor):

Location:
trunk/Source/JavaScriptCore
Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/CMakeLists.txt

    r212778 r212782  
    218218    bytecode/ExitKind.cpp
    219219    bytecode/ExitingJITType.cpp
     220    bytecode/FullCodeOrigin.cpp
    220221    bytecode/FunctionCodeBlock.cpp
    221222    bytecode/GetByIdStatus.cpp
  • trunk/Source/JavaScriptCore/ChangeLog

    r212780 r212782  
     12017-02-21  JF Bastien  <jfbastien@apple.com>
     2
     3        FullCodeOrigin for CodeBlock+CodeOrigin printing
     4        https://bugs.webkit.org/show_bug.cgi?id=168673
     5
     6        Reviewed by Filip Pizlo.
     7
     8        WebAssembly doesn't have a CodeBlock, so printing it isn't
     9        valid. This patch adds FullCodeOrigin to handle the
     10        CodeBlock+CodeOrigin printing pattern, and uses it through all the
     11        places I could find, including Repatch.cpp where it's relevant for
     12        WebAssembly.
     13
     14        * CMakeLists.txt:
     15        * JavaScriptCore.xcodeproj/project.pbxproj:
     16        * bytecode/CodeBlock.cpp:
     17        (JSC::CodeBlock::noticeIncomingCall):
     18        * bytecode/FullCodeOrigin.cpp: Added.
     19        (JSC::FullCodeOrigin::dump):
     20        (JSC::FullCodeOrigin::dumpInContext):
     21        * bytecode/FullCodeOrigin.h: Added.
     22        (JSC::FullCodeOrigin::FullCodeOrigin):
     23        * bytecode/PolymorphicAccess.cpp:
     24        (JSC::PolymorphicAccess::regenerate):
     25        * jit/PolymorphicCallStubRoutine.cpp:
     26        (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine):
     27        * jit/Repatch.cpp:
     28        (JSC::linkFor):
     29        (JSC::linkDirectFor):
     30        (JSC::linkVirtualFor):
     31
    1322017-02-21  Filip Pizlo  <fpizlo@apple.com>
    233
  • trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r212778 r212782  
    20592059                AD2FCC311DB83D4900B3E736 /* JSWebAssembly.h in Headers */ = {isa = PBXBuildFile; fileRef = AD2FCC2F1DB839F700B3E736 /* JSWebAssembly.h */; };
    20602060                AD2FCC331DC4045400B3E736 /* WasmFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD2FCC321DC4045300B3E736 /* WasmFormat.cpp */; };
     2061                AD4252511E5D0E14009D2A97 /* FullCodeOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = AD4252501E5D0DEB009D2A97 /* FullCodeOrigin.h */; };
     2062                AD4252531E5D0F47009D2A97 /* FullCodeOrigin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD4252521E5D0F22009D2A97 /* FullCodeOrigin.cpp */; };
    20612063                AD4937C31DDBE6140077C807 /* AbstractModuleRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD4937C11DDBE60A0077C807 /* AbstractModuleRecord.cpp */; };
    20622064                AD4937C41DDBE6140077C807 /* AbstractModuleRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = AD4937C21DDBE60A0077C807 /* AbstractModuleRecord.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    45964598                AD2FCC2F1DB839F700B3E736 /* JSWebAssembly.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebAssembly.h; sourceTree = "<group>"; };
    45974599                AD2FCC321DC4045300B3E736 /* WasmFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WasmFormat.cpp; sourceTree = "<group>"; };
     4600                AD4252501E5D0DEB009D2A97 /* FullCodeOrigin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FullCodeOrigin.h; sourceTree = "<group>"; };
     4601                AD4252521E5D0F22009D2A97 /* FullCodeOrigin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FullCodeOrigin.cpp; sourceTree = "<group>"; };
    45984602                AD4937C11DDBE60A0077C807 /* AbstractModuleRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AbstractModuleRecord.cpp; sourceTree = "<group>"; };
    45994603                AD4937C21DDBE60A0077C807 /* AbstractModuleRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AbstractModuleRecord.h; sourceTree = "<group>"; };
     
    74257429                                0F0B83AA14BCF5B900885B4F /* ExpressionRangeInfo.h */,
    74267430                                0F666EBF183566F900D017F1 /* FullBytecodeLiveness.h */,
     7431                                AD4252521E5D0F22009D2A97 /* FullCodeOrigin.cpp */,
     7432                                AD4252501E5D0DEB009D2A97 /* FullCodeOrigin.h */,
    74277433                                14AD91161DCA97FD0014F9FE /* FunctionCodeBlock.cpp */,
    74287434                                14AD91071DCA92940014F9FE /* FunctionCodeBlock.h */,
     
    89158921                                C2B916C214DA014E00CBAC86 /* MarkedAllocator.h in Headers */,
    89168922                                0F7DF1461E2BEF6A0095951B /* MarkedAllocatorInlines.h in Headers */,
     8923                                AD4252511E5D0E14009D2A97 /* FullCodeOrigin.h in Headers */,
    89178924                                142D6F0913539A2800B02E86 /* MarkedBlock.h in Headers */,
    89188925                                0F7C5FB81D888A0C0044F5E2 /* MarkedBlockInlines.h in Headers */,
     
    1044910456                                E3794E751B77EB97005543AE /* ModuleAnalyzer.cpp in Sources */,
    1045010457                                E355F3521B7DC85300C50DC5 /* ModuleLoaderPrototype.cpp in Sources */,
     10458                                AD4252531E5D0F47009D2A97 /* FullCodeOrigin.cpp in Sources */,
    1045110459                                14AD91181DCA97FD0014F9FE /* ModuleProgramCodeBlock.cpp in Sources */,
    1045210460                                147341E41DC2CE9600AA29BA /* ModuleProgramExecutable.cpp in Sources */,
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp

    r212778 r212782  
    4545#include "Debugger.h"
    4646#include "EvalCodeBlock.h"
     47#include "FullCodeOrigin.h"
    4748#include "FunctionCodeBlock.h"
    4849#include "FunctionExecutableDump.h"
     
    35813582   
    35823583    if (callerCodeBlock->capabilityLevelState() == DFG::CapabilityLevelNotSet) {
    3583         dataLog("In call from ", *callerCodeBlock, " ", callerFrame->codeOrigin(), " to ", *this, ": caller's DFG capability level is not set.\n");
     3584        dataLog("In call from ", FullCodeOrigin(callerCodeBlock, callerFrame->codeOrigin()), " to ", *this, ": caller's DFG capability level is not set.\n");
    35843585        CRASH();
    35853586    }
  • trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp

    r212717 r212782  
    3232#include "CCallHelpers.h"
    3333#include "CodeBlock.h"
     34#include "FullCodeOrigin.h"
    3435#include "Heap.h"
    3536#include "JITOperations.h"
     
    525526   
    526527    if (verbose)
    527         dataLog(*codeBlock, " ", stubInfo.codeOrigin, ": Generating polymorphic access stub for ", listDump(cases), "\n");
     528        dataLog(FullCodeOrigin(codeBlock, stubInfo.codeOrigin), ": Generating polymorphic access stub for ", listDump(cases), "\n");
    528529
    529530    MacroAssemblerCodeRef code = FINALIZE_CODE_FOR(
  • trunk/Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp

    r209897 r212782  
    3131#include "CallLinkInfo.h"
    3232#include "CodeBlock.h"
     33#include "FullCodeOrigin.h"
    3334#include "JSCInlines.h"
    3435#include "LinkBuffer.h"
     
    7879        m_variants.append(WriteBarrier<JSCell>(vm, owner, callCase.variant().rawCalleeCell()));
    7980        if (shouldDumpDisassemblyFor(callerFrame->codeBlock()))
    80             dataLog("Linking polymorphic call in ", *callerFrame->codeBlock(), " at ", callerFrame->codeOrigin(), " to ", callCase.variant(), ", codeBlock = ", pointerDump(callCase.codeBlock()), "\n");
     81            dataLog("Linking polymorphic call in ", FullCodeOrigin(callerFrame->codeBlock(), callerFrame->codeOrigin()), " to ", callCase.variant(), ", codeBlock = ", pointerDump(callCase.codeBlock()), "\n");
    8182        if (CodeBlock* codeBlock = callCase.codeBlock())
    8283            codeBlock->linkIncomingPolymorphicCall(callerFrame, m_callNodes.add(&info));
  • trunk/Source/JavaScriptCore/jit/Repatch.cpp

    r212717 r212782  
    3737#include "DirectArguments.h"
    3838#include "FTLThunks.h"
     39#include "FullCodeOrigin.h"
    3940#include "FunctionCodeBlock.h"
    4041#include "GCAwareJITStubRoutine.h"
     
    603604    callLinkInfo.setLastSeenCallee(vm, owner, callee);
    604605    if (shouldDumpDisassemblyFor(callerCodeBlock))
    605         dataLog("Linking call in ", *callerCodeBlock, " at ", callLinkInfo.codeOrigin(), " to ", pointerDump(calleeCodeBlock), ", entrypoint at ", codePtr, "\n");
     606        dataLog("Linking call in ", FullCodeOrigin(callerCodeBlock, callLinkInfo.codeOrigin()), " to ", pointerDump(calleeCodeBlock), ", entrypoint at ", codePtr, "\n");
     607
    606608    MacroAssembler::repatchNearCall(callLinkInfo.hotPathOther(), CodeLocationLabel(codePtr));
    607609
     
    630632    callLinkInfo.setCodeBlock(*vm, callerCodeBlock, jsCast<FunctionCodeBlock*>(calleeCodeBlock));
    631633    if (shouldDumpDisassemblyFor(callerCodeBlock))
    632         dataLog("Linking call in ", *callerCodeBlock, " at ", callLinkInfo.codeOrigin(), " to ", pointerDump(calleeCodeBlock), ", entrypoint at ", codePtr, "\n");
     634        dataLog("Linking call in ", FullCodeOrigin(callerCodeBlock, callLinkInfo.codeOrigin()), " to ", pointerDump(calleeCodeBlock), ", entrypoint at ", codePtr, "\n");
     635
    633636    if (callLinkInfo.callType() == CallLinkInfo::DirectTailCall)
    634637        MacroAssembler::repatchJumpToNop(callLinkInfo.patchableJump());
     
    685688
    686689    if (shouldDumpDisassemblyFor(callerCodeBlock))
    687         dataLog("Linking virtual call at ", *callerCodeBlock, " ", callerFrame->codeOrigin(), "\n");
     690        dataLog("Linking virtual call at ", FullCodeOrigin(callerCodeBlock, callerFrame->codeOrigin()), "\n");
    688691
    689692    MacroAssemblerCodeRef virtualThunk = virtualThunkFor(&vm, callLinkInfo);
Note: See TracChangeset for help on using the changeset viewer.