Changeset 199303 in webkit


Ignore:
Timestamp:
Apr 11, 2016 12:31:04 PM (8 years ago)
Author:
fpizlo@apple.com
Message:

It should be possible to edit StructureStubInfo without recompiling the world
https://bugs.webkit.org/show_bug.cgi?id=156470

Reviewed by Keith Miller.

This change makes it less painful to make changes to the IC code. It used to be that any
change to StructureStubInfo caused every JIT-related file to get recompiled. Now only a
smaller set of files - ones that actually peek into StructureStubInfo - will recompile. This
is mainly because CodeBlock.h no longer includes StructureStubInfo.h.

  • bytecode/ByValInfo.h:
  • bytecode/CodeBlock.cpp:
  • bytecode/CodeBlock.h:
  • bytecode/GetByIdStatus.cpp:
  • bytecode/GetByIdStatus.h:
  • bytecode/PutByIdStatus.cpp:
  • bytecode/PutByIdStatus.h:
  • bytecode/StructureStubInfo.h:

(JSC::getStructureStubInfoCodeOrigin):

  • dfg/DFGByteCodeParser.cpp:
  • dfg/DFGJITCompiler.cpp:
  • dfg/DFGOSRExitCompilerCommon.cpp:
  • dfg/DFGSpeculativeJIT.h:
  • ftl/FTLLowerDFGToB3.cpp:
  • ftl/FTLSlowPathCall.h:
  • jit/IntrinsicEmitter.cpp:
  • jit/JITInlineCacheGenerator.cpp:
  • jit/JITInlineCacheGenerator.h:
  • jit/JITOperations.cpp:
  • jit/JITPropertyAccess.cpp:
  • jit/JITPropertyAccess32_64.cpp:
Location:
trunk/Source/JavaScriptCore
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r199300 r199303  
     12016-04-11  Filip Pizlo  <fpizlo@apple.com>
     2
     3        It should be possible to edit StructureStubInfo without recompiling the world
     4        https://bugs.webkit.org/show_bug.cgi?id=156470
     5
     6        Reviewed by Keith Miller.
     7
     8        This change makes it less painful to make changes to the IC code. It used to be that any
     9        change to StructureStubInfo caused every JIT-related file to get recompiled. Now only a
     10        smaller set of files - ones that actually peek into StructureStubInfo - will recompile. This
     11        is mainly because CodeBlock.h no longer includes StructureStubInfo.h.
     12
     13        * bytecode/ByValInfo.h:
     14        * bytecode/CodeBlock.cpp:
     15        * bytecode/CodeBlock.h:
     16        * bytecode/GetByIdStatus.cpp:
     17        * bytecode/GetByIdStatus.h:
     18        * bytecode/PutByIdStatus.cpp:
     19        * bytecode/PutByIdStatus.h:
     20        * bytecode/StructureStubInfo.h:
     21        (JSC::getStructureStubInfoCodeOrigin):
     22        * dfg/DFGByteCodeParser.cpp:
     23        * dfg/DFGJITCompiler.cpp:
     24        * dfg/DFGOSRExitCompilerCommon.cpp:
     25        * dfg/DFGSpeculativeJIT.h:
     26        * ftl/FTLLowerDFGToB3.cpp:
     27        * ftl/FTLSlowPathCall.h:
     28        * jit/IntrinsicEmitter.cpp:
     29        * jit/JITInlineCacheGenerator.cpp:
     30        * jit/JITInlineCacheGenerator.h:
     31        * jit/JITOperations.cpp:
     32        * jit/JITPropertyAccess.cpp:
     33        * jit/JITPropertyAccess32_64.cpp:
     34
    1352016-04-11  Skachkov Oleksandr  <gskachkov@gmail.com>
    236
  • trunk/Source/JavaScriptCore/bytecode/ByValInfo.h

    r188878 r199303  
    3333#include "JITStubRoutine.h"
    3434#include "Structure.h"
    35 #include "StructureStubInfo.h"
    3635
    3736namespace JSC {
    3837
    3938#if ENABLE(JIT)
     39
     40class StructureStubInfo;
    4041
    4142enum JITArrayMode {
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp

    r199170 r199303  
    6060#include "SlotVisitorInlines.h"
    6161#include "StackVisitor.h"
     62#include "StructureStubInfo.h"
    6263#include "TypeLocationCache.h"
    6364#include "TypeProfiler.h"
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.h

    r197888 r199303  
    11/*
    2  * Copyright (C) 2008-2015 Apple Inc. All rights reserved.
     2 * Copyright (C) 2008-2016 Apple Inc. All rights reserved.
    33 * Copyright (C) 2008 Cameron Zwarich <cwzwarich@uwaterloo.ca>
    44 *
     
    6464#include "PutPropertySlot.h"
    6565#include "RegExpObject.h"
    66 #include "StructureStubInfo.h"
    6766#include "UnconditionalFinalizer.h"
    6867#include "ValueProfile.h"
     
    8180
    8281class ExecState;
     82class JSModuleEnvironment;
    8383class LLIntOffsetsExtractor;
     84class PCToCodeOriginMap;
    8485class RegisterAtOffsetList;
     86class StructureStubInfo;
    8587class TypeLocation;
    86 class JSModuleEnvironment;
    87 class PCToCodeOriginMap;
     88
     89enum class AccessType : int8_t;
     90
     91typedef HashMap<CodeOrigin, StructureStubInfo*, CodeOriginApproximateHash> StubInfoMap;
    8892
    8993enum ReoptimizationMode { DontCountReoptimization, CountReoptimization };
  • trunk/Source/JavaScriptCore/bytecode/GetByIdStatus.cpp

    r199279 r199303  
    3434#include "LowLevelInterpreter.h"
    3535#include "PolymorphicAccess.h"
     36#include "StructureStubInfo.h"
    3637#include <wtf/ListDump.h>
    3738
  • trunk/Source/JavaScriptCore/bytecode/GetByIdStatus.h

    r199093 r199303  
    3232#include "ExitingJITType.h"
    3333#include "GetByIdVariant.h"
    34 #include "StructureStubInfo.h"
    3534
    3635namespace JSC {
    3736
    3837class CodeBlock;
     38class StructureStubInfo;
     39
     40typedef HashMap<CodeOrigin, StructureStubInfo*, CodeOriginApproximateHash> StubInfoMap;
    3941
    4042class GetByIdStatus {
  • trunk/Source/JavaScriptCore/bytecode/PutByIdStatus.cpp

    r196331 r199303  
    3535#include "Structure.h"
    3636#include "StructureChain.h"
     37#include "StructureStubInfo.h"
    3738#include <wtf/ListDump.h>
    3839
  • trunk/Source/JavaScriptCore/bytecode/PutByIdStatus.h

    r188696 r199303  
    3030#include "ExitingJITType.h"
    3131#include "PutByIdVariant.h"
    32 #include "StructureStubInfo.h"
    3332#include <wtf/text/StringImpl.h>
    3433
     
    4039class Structure;
    4140class StructureChain;
     41class StructureStubInfo;
     42
     43typedef HashMap<CodeOrigin, StructureStubInfo*, CodeOriginApproximateHash> StubInfoMap;
    4244
    4345class PutByIdStatus {
  • trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.h

    r199170 r199303  
    169169}
    170170
    171 typedef HashMap<CodeOrigin, StructureStubInfo*, CodeOriginApproximateHash> StubInfoMap;
    172 
    173171#else
    174172
    175 typedef HashMap<int, void*> StubInfoMap;
     173class StructureStubInfo;
    176174
    177175#endif // ENABLE(JIT)
     176
     177typedef HashMap<CodeOrigin, StructureStubInfo*, CodeOriginApproximateHash> StubInfoMap;
    178178
    179179} // namespace JSC
  • trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp

    r199279 r199303  
    5151#include "StackAlignment.h"
    5252#include "StringConstructor.h"
     53#include "StructureStubInfo.h"
    5354#include "Watchdog.h"
    5455#include <wtf/CommaPrinter.h>
  • trunk/Source/JavaScriptCore/dfg/DFGJITCompiler.cpp

    r198364 r199303  
    4040#include "DFGSpeculativeJIT.h"
    4141#include "DFGThunks.h"
     42#include "JSCInlines.h"
    4243#include "JSCJSValueInlines.h"
    4344#include "LinkBuffer.h"
    4445#include "MaxFrameExtentForSlowPathCall.h"
    45 #include "JSCInlines.h"
     46#include "StructureStubInfo.h"
    4647#include "VM.h"
    4748
  • trunk/Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.cpp

    r196513 r199303  
    3434#include "JSCJSValueInlines.h"
    3535#include "JSCInlines.h"
     36#include "StructureStubInfo.h"
    3637
    3738namespace JSC { namespace DFG {
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h

    r199279 r199303  
    4141#include "PutKind.h"
    4242#include "SpillRegistersMode.h"
     43#include "StructureStubInfo.h"
    4344#include "ValueRecovery.h"
    4445#include "VirtualRegister.h"
  • trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp

    r199300 r199303  
    6969#include "ScopedArgumentsTable.h"
    7070#include "ScratchRegisterAllocator.h"
     71#include "SetupVarargsFrame.h"
    7172#include "ShadowChicken.h"
    72 #include "SetupVarargsFrame.h"
     73#include "StructureStubInfo.h"
    7374#include "VirtualRegister.h"
    7475#include "Watchdog.h"
  • trunk/Source/JavaScriptCore/ftl/FTLSlowPathCall.h

    r190860 r199303  
    3232#include "FTLSlowPathCallKey.h"
    3333#include "JITOperations.h"
    34 #include "StructureStubInfo.h"
    3534
    3635namespace JSC { namespace FTL {
  • trunk/Source/JavaScriptCore/jit/IntrinsicEmitter.cpp

    r192600 r199303  
    3838#include "JSCellInlines.h"
    3939#include "PolymorphicAccess.h"
     40#include "StructureStubInfo.h"
    4041
    4142namespace JSC {
  • trunk/Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp

    r199170 r199303  
    3232#include "LinkBuffer.h"
    3333#include "JSCInlines.h"
     34#include "StructureStubInfo.h"
    3435
    3536namespace JSC {
  • trunk/Source/JavaScriptCore/jit/JITInlineCacheGenerator.h

    r199170 r199303  
    3434#include "PutKind.h"
    3535#include "RegisterSet.h"
    36 #include "StructureStubInfo.h"
    3736
    3837namespace JSC {
    3938
    4039class CodeBlock;
     40class StructureStubInfo;
     41
     42struct CallSiteIndex;
     43
     44enum class AccessType : int8_t;
    4145
    4246class JITInlineCacheGenerator {
  • trunk/Source/JavaScriptCore/jit/JITOperations.cpp

    r199279 r199303  
    6161#include "ScopedArguments.h"
    6262#include "ShadowChicken.h"
     63#include "StructureStubInfo.h"
    6364#include "SuperSampler.h"
    6465#include "TestRunnerUtils.h"
  • trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp

    r199170 r199303  
    4343#include "ScopedArgumentsTable.h"
    4444#include "SlowPathCall.h"
     45#include "StructureStubInfo.h"
    4546#include <wtf/StringPrintStream.h>
    4647
  • trunk/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp

    r199170 r199303  
    4141#include "ResultType.h"
    4242#include "SlowPathCall.h"
     43#include "StructureStubInfo.h"
    4344#include <wtf/StringPrintStream.h>
    4445
Note: See TracChangeset for help on using the changeset viewer.