Changeset 108358 in webkit


Ignore:
Timestamp:
Feb 21, 2012 8:26:12 AM (12 years ago)
Author:
Adam Roben
Message:

Roll out r108309, r108323, and r108326

They broke the 32-bit Lion build.

Original bugs is <http://webkit.org/b/75812> <rdar://problem/10079694>.

Source/JavaScriptCore:

  • CMakeLists.txt:
  • GNUmakefile.am:
  • GNUmakefile.list.am:
  • JavaScriptCore.pri:
  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
  • JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Target.pri:
  • assembler/LinkBuffer.h:
  • assembler/MacroAssemblerCodeRef.h:
  • bytecode/BytecodeConventions.h: Removed.
  • bytecode/CallLinkStatus.cpp:
  • bytecode/CallLinkStatus.h:
  • bytecode/CodeBlock.cpp:
  • bytecode/CodeBlock.h:
  • bytecode/GetByIdStatus.cpp:
  • bytecode/GetByIdStatus.h:
  • bytecode/Instruction.h:
  • bytecode/LLIntCallLinkInfo.h: Removed.
  • bytecode/MethodCallLinkStatus.cpp:
  • bytecode/Opcode.cpp:
  • bytecode/Opcode.h:
  • bytecode/PutByIdStatus.cpp:
  • bytecode/PutByIdStatus.h:
  • bytecompiler/BytecodeGenerator.cpp:
  • dfg/DFGByteCodeParser.cpp:
  • dfg/DFGCapabilities.h:
  • dfg/DFGOSRExitCompiler.cpp:
  • dfg/DFGOperations.cpp:
  • heap/Heap.h:
  • heap/MarkStack.cpp:
  • heap/MarkedAllocator.h:
  • heap/MarkedSpace.h:
  • interpreter/CallFrame.cpp:
  • interpreter/CallFrame.h:
  • interpreter/Interpreter.cpp:
  • interpreter/Interpreter.h:
  • interpreter/RegisterFile.h:
  • jit/ExecutableAllocator.h:
  • jit/HostCallReturnValue.cpp: Removed.
  • jit/HostCallReturnValue.h: Removed.
  • jit/JIT.cpp:
  • jit/JITCode.h:
  • jit/JITDriver.h:
  • jit/JITExceptions.cpp:
  • jit/JITInlineMethods.h:
  • jit/JITStubs.cpp:
  • jit/JITStubs.h:
  • jit/JSInterfaceJIT.h:
  • llint/LLIntCommon.h: Removed.
  • llint/LLIntData.cpp: Removed.
  • llint/LLIntData.h: Removed.
  • llint/LLIntEntrypoints.cpp: Removed.
  • llint/LLIntEntrypoints.h: Removed.
  • llint/LLIntExceptions.cpp: Removed.
  • llint/LLIntExceptions.h: Removed.
  • llint/LLIntOfflineAsmConfig.h: Removed.
  • llint/LLIntOffsetsExtractor.cpp: Removed.
  • llint/LLIntSlowPaths.cpp: Removed.
  • llint/LLIntSlowPaths.h: Removed.
  • llint/LLIntThunks.cpp: Removed.
  • llint/LLIntThunks.h: Removed.
  • llint/LowLevelInterpreter.asm: Removed.
  • llint/LowLevelInterpreter.cpp: Removed.
  • llint/LowLevelInterpreter.h: Removed.
  • offlineasm/armv7.rb: Removed.
  • offlineasm/asm.rb: Removed.
  • offlineasm/ast.rb: Removed.
  • offlineasm/backends.rb: Removed.
  • offlineasm/generate_offset_extractor.rb: Removed.
  • offlineasm/instructions.rb: Removed.
  • offlineasm/offset_extractor_constants.rb: Removed.
  • offlineasm/offsets.rb: Removed.
  • offlineasm/opt.rb: Removed.
  • offlineasm/parser.rb: Removed.
  • offlineasm/registers.rb: Removed.
  • offlineasm/self_hash.rb: Removed.
  • offlineasm/settings.rb: Removed.
  • offlineasm/transform.rb: Removed.
  • offlineasm/x86.rb: Removed.
  • runtime/CodeSpecializationKind.h: Removed.
  • runtime/CommonSlowPaths.h:
  • runtime/Executable.cpp:
  • runtime/Executable.h:
  • runtime/ExecutionHarness.h: Removed.
  • runtime/JSArray.h:
  • runtime/JSCell.h:
  • runtime/JSFunction.h:
  • runtime/JSGlobalData.cpp:
  • runtime/JSGlobalData.h:
  • runtime/JSGlobalObject.h:
  • runtime/JSObject.h:
  • runtime/JSPropertyNameIterator.h:
  • runtime/JSString.h:
  • runtime/JSTypeInfo.h:
  • runtime/JSValue.cpp:
  • runtime/JSValue.h:
  • runtime/JSVariableObject.h:
  • runtime/Options.cpp:
  • runtime/Options.h:
  • runtime/ScopeChain.h:
  • runtime/Structure.cpp:
  • runtime/Structure.h:
  • runtime/StructureChain.h:
  • wtf/InlineASM.h:
  • wtf/Platform.h:
  • wtf/SentinelLinkedList.h:
  • wtf/text/StringImpl.h:

Source/WebCore:

  • CMakeLists.txt:

Source/WebKit:

  • CMakeLists.txt:

Tools:

  • DumpRenderTree/efl/CMakeLists.txt:
Location:
trunk
Files:
8 deleted
79 edited

Legend:

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

    r108309 r108358  
    1212    "${JAVASCRIPTCORE_DIR}/interpreter"
    1313    "${JAVASCRIPTCORE_DIR}/jit"
    14     "${JAVASCRIPTCORE_DIR}/llint"
    1514    "${JAVASCRIPTCORE_DIR}/parser"
    1615    "${JAVASCRIPTCORE_DIR}/profiler"
     
    104103
    105104    jit/ExecutableAllocator.cpp
    106     jit/HostCallReturnValue.cpp
    107105    jit/JITArithmetic32_64.cpp
    108106    jit/JITArithmetic.cpp
  • trunk/Source/JavaScriptCore/ChangeLog

    r108347 r108358  
     12012-02-21  Adam Roben  <aroben@apple.com>
     2
     3        Roll out r108309, r108323, and r108326
     4
     5        They broke the 32-bit Lion build.
     6
     7        Original bugs is <http://webkit.org/b/75812> <rdar://problem/10079694>.
     8
     9        * CMakeLists.txt:
     10        * GNUmakefile.am:
     11        * GNUmakefile.list.am:
     12        * JavaScriptCore.pri:
     13        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
     14        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
     15        * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd:
     16        * JavaScriptCore.xcodeproj/project.pbxproj:
     17        * Target.pri:
     18        * assembler/LinkBuffer.h:
     19        * assembler/MacroAssemblerCodeRef.h:
     20        * bytecode/BytecodeConventions.h: Removed.
     21        * bytecode/CallLinkStatus.cpp:
     22        * bytecode/CallLinkStatus.h:
     23        * bytecode/CodeBlock.cpp:
     24        * bytecode/CodeBlock.h:
     25        * bytecode/GetByIdStatus.cpp:
     26        * bytecode/GetByIdStatus.h:
     27        * bytecode/Instruction.h:
     28        * bytecode/LLIntCallLinkInfo.h: Removed.
     29        * bytecode/MethodCallLinkStatus.cpp:
     30        * bytecode/Opcode.cpp:
     31        * bytecode/Opcode.h:
     32        * bytecode/PutByIdStatus.cpp:
     33        * bytecode/PutByIdStatus.h:
     34        * bytecompiler/BytecodeGenerator.cpp:
     35        * dfg/DFGByteCodeParser.cpp:
     36        * dfg/DFGCapabilities.h:
     37        * dfg/DFGOSRExitCompiler.cpp:
     38        * dfg/DFGOperations.cpp:
     39        * heap/Heap.h:
     40        * heap/MarkStack.cpp:
     41        * heap/MarkedAllocator.h:
     42        * heap/MarkedSpace.h:
     43        * interpreter/CallFrame.cpp:
     44        * interpreter/CallFrame.h:
     45        * interpreter/Interpreter.cpp:
     46        * interpreter/Interpreter.h:
     47        * interpreter/RegisterFile.h:
     48        * jit/ExecutableAllocator.h:
     49        * jit/HostCallReturnValue.cpp: Removed.
     50        * jit/HostCallReturnValue.h: Removed.
     51        * jit/JIT.cpp:
     52        * jit/JITCode.h:
     53        * jit/JITDriver.h:
     54        * jit/JITExceptions.cpp:
     55        * jit/JITInlineMethods.h:
     56        * jit/JITStubs.cpp:
     57        * jit/JITStubs.h:
     58        * jit/JSInterfaceJIT.h:
     59        * llint/LLIntCommon.h: Removed.
     60        * llint/LLIntData.cpp: Removed.
     61        * llint/LLIntData.h: Removed.
     62        * llint/LLIntEntrypoints.cpp: Removed.
     63        * llint/LLIntEntrypoints.h: Removed.
     64        * llint/LLIntExceptions.cpp: Removed.
     65        * llint/LLIntExceptions.h: Removed.
     66        * llint/LLIntOfflineAsmConfig.h: Removed.
     67        * llint/LLIntOffsetsExtractor.cpp: Removed.
     68        * llint/LLIntSlowPaths.cpp: Removed.
     69        * llint/LLIntSlowPaths.h: Removed.
     70        * llint/LLIntThunks.cpp: Removed.
     71        * llint/LLIntThunks.h: Removed.
     72        * llint/LowLevelInterpreter.asm: Removed.
     73        * llint/LowLevelInterpreter.cpp: Removed.
     74        * llint/LowLevelInterpreter.h: Removed.
     75        * offlineasm/armv7.rb: Removed.
     76        * offlineasm/asm.rb: Removed.
     77        * offlineasm/ast.rb: Removed.
     78        * offlineasm/backends.rb: Removed.
     79        * offlineasm/generate_offset_extractor.rb: Removed.
     80        * offlineasm/instructions.rb: Removed.
     81        * offlineasm/offset_extractor_constants.rb: Removed.
     82        * offlineasm/offsets.rb: Removed.
     83        * offlineasm/opt.rb: Removed.
     84        * offlineasm/parser.rb: Removed.
     85        * offlineasm/registers.rb: Removed.
     86        * offlineasm/self_hash.rb: Removed.
     87        * offlineasm/settings.rb: Removed.
     88        * offlineasm/transform.rb: Removed.
     89        * offlineasm/x86.rb: Removed.
     90        * runtime/CodeSpecializationKind.h: Removed.
     91        * runtime/CommonSlowPaths.h:
     92        * runtime/Executable.cpp:
     93        * runtime/Executable.h:
     94        * runtime/ExecutionHarness.h: Removed.
     95        * runtime/JSArray.h:
     96        * runtime/JSCell.h:
     97        * runtime/JSFunction.h:
     98        * runtime/JSGlobalData.cpp:
     99        * runtime/JSGlobalData.h:
     100        * runtime/JSGlobalObject.h:
     101        * runtime/JSObject.h:
     102        * runtime/JSPropertyNameIterator.h:
     103        * runtime/JSString.h:
     104        * runtime/JSTypeInfo.h:
     105        * runtime/JSValue.cpp:
     106        * runtime/JSValue.h:
     107        * runtime/JSVariableObject.h:
     108        * runtime/Options.cpp:
     109        * runtime/Options.h:
     110        * runtime/ScopeChain.h:
     111        * runtime/Structure.cpp:
     112        * runtime/Structure.h:
     113        * runtime/StructureChain.h:
     114        * wtf/InlineASM.h:
     115        * wtf/Platform.h:
     116        * wtf/SentinelLinkedList.h:
     117        * wtf/text/StringImpl.h:
     118
    11192012-02-21  Gustavo Noronha Silva  <kov@debian.org> and Bob Tracy  <rct@frus.com>
    2120
  • trunk/Source/JavaScriptCore/GNUmakefile.am

    r108309 r108358  
    5858        -I$(srcdir)/Source/JavaScriptCore/jit \
    5959        -I$(srcdir)/Source/JavaScriptCore/jit \
    60         -I$(srcdir)/Source/JavaScriptCore/llint \
    6160        -I$(srcdir)/Source/JavaScriptCore/parser \
    6261        -I$(srcdir)/Source/JavaScriptCore/profiler \
  • trunk/Source/JavaScriptCore/GNUmakefile.list.am

    r108309 r108358  
    8282        Source/JavaScriptCore/assembler/SH4Assembler.h \
    8383        Source/JavaScriptCore/assembler/X86Assembler.h \
    84         Source/JavaScriptCore/bytecode/BytecodeConventions.h \
    8584        Source/JavaScriptCore/bytecode/CallLinkInfo.cpp \
    8685        Source/JavaScriptCore/bytecode/CallLinkInfo.h \
     
    104103        Source/JavaScriptCore/bytecode/JumpTable.cpp \
    105104        Source/JavaScriptCore/bytecode/JumpTable.h \
    106         Source/JavaScriptCore/bytecode/LLIntCallLinkInfo.h \
    107105        Source/JavaScriptCore/bytecode/LineInfo.h \
    108106        Source/JavaScriptCore/bytecode/MethodCallLinkInfo.cpp \
     
    300298        Source/JavaScriptCore/jit/ExecutableAllocator.cpp \
    301299        Source/JavaScriptCore/jit/ExecutableAllocator.h \
    302         Source/JavaScriptCore/jit/HostCallReturnValue.cpp \
    303         Source/JavaScriptCore/jit/HostCallReturnValue.h \
    304300        Source/JavaScriptCore/jit/JITArithmetic32_64.cpp \
    305301        Source/JavaScriptCore/jit/JITArithmetic.cpp \
     
    325321        Source/JavaScriptCore/jit/ThunkGenerators.cpp \
    326322        Source/JavaScriptCore/jit/ThunkGenerators.h \
    327         Source/JavaScriptCore/llint/LLIntData.h \
    328323        Source/JavaScriptCore/os-win32/stdbool.h \
    329324        Source/JavaScriptCore/os-win32/stdint.h \
     
    376371        Source/JavaScriptCore/runtime/CallData.h \
    377372        Source/JavaScriptCore/runtime/ClassInfo.h \
    378         Source/JavaScriptCore/runtime/CodeSpecializationKind.h \
    379373        Source/JavaScriptCore/runtime/CommonIdentifiers.cpp \
    380374        Source/JavaScriptCore/runtime/CommonIdentifiers.h \
     
    405399        Source/JavaScriptCore/runtime/Executable.cpp \
    406400        Source/JavaScriptCore/runtime/Executable.h \
    407         Source/JavaScriptCore/runtime/ExecutionHarness.h \
    408401        Source/JavaScriptCore/runtime/FunctionConstructor.cpp \
    409402        Source/JavaScriptCore/runtime/FunctionConstructor.h \
  • trunk/Source/JavaScriptCore/JavaScriptCore.pri

    r108309 r108358  
    2121    $$SOURCE_DIR/interpreter \
    2222    $$SOURCE_DIR/jit \
    23     $$SOURCE_DIR/llint \
    2423    $$SOURCE_DIR/parser \
    2524    $$SOURCE_DIR/profiler \
  • trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj

    r108309 r108358  
    17631763                        </File>
    17641764                        <File
    1765                                 RelativePath="..\..\jit\HostCallReturnValue.cpp"
    1766                                 >
    1767                         </File>
    1768                         <File
    17691765                                RelativePath="..\..\jit\JIT.cpp"
    17701766                                >
     
    18481844                        <File
    18491845                                RelativePath="..\..\jit\ThunkGenerators.h"
    1850                                 >
    1851                         </File>
    1852                 </Filter>
    1853                 <Filter
    1854                         Name="llint"
    1855                         >
    1856                         <File
    1857                                 RelativePath="..\..\llint\LLIntData.h"
    18581846                                >
    18591847                        </File>
  • trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops

    r108309 r108358  
    77        <Tool
    88                Name="VCCLCompilerTool"
    9                 AdditionalIncludeDirectories="&quot;$(ConfigurationBuildDir)\obj\JavaScriptCore\DerivedSources\&quot;;../../;../../API/;../../parser/;../../bytecompiler/;../../dfg/;../../jit/;../../llint/;../../runtime/;../../tools/;../../bytecode/;../../interpreter/;../../wtf/;../../profiler;../../assembler/;../../debugger/;../../heap/;&quot;$(WebKitLibrariesDir)\include&quot;;&quot;$(WebKitLibrariesDir)\include\private&quot;;&quot;$(ConfigurationBuildDir)\include&quot;;&quot;$(ConfigurationBuildDir)\include\JavaScriptCore&quot;;&quot;$(ConfigurationBuildDir)\include\private&quot;;&quot;$(WebKitLibrariesDir)\include\pthreads&quot;"
     9                AdditionalIncludeDirectories="&quot;$(ConfigurationBuildDir)\obj\JavaScriptCore\DerivedSources\&quot;;../../;../../API/;../../parser/;../../bytecompiler/;../../dfg/;../../jit/;../../runtime/;../../tools/;../../bytecode/;../../interpreter/;../../wtf/;../../profiler;../../assembler/;../../debugger/;../../heap/;&quot;$(WebKitLibrariesDir)\include&quot;;&quot;$(WebKitLibrariesDir)\include\private&quot;;&quot;$(ConfigurationBuildDir)\include&quot;;&quot;$(ConfigurationBuildDir)\include\JavaScriptCore&quot;;&quot;$(ConfigurationBuildDir)\include\private&quot;;&quot;$(WebKitLibrariesDir)\include\pthreads&quot;"
    1010                PreprocessorDefinitions="__STD_C"
    1111                ForcedIncludeFiles="ICUVersion.h"
  • trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd

    r108309 r108358  
    4444    interpreter
    4545    jit
    46     llint
    4746    parser
    4847    profiler
  • trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r108309 r108358  
    88
    99/* Begin PBXAggregateTarget section */
    10                 0F4680A914BA7FD900BFE272 /* LLInt Offsets */ = {
    11                         isa = PBXAggregateTarget;
    12                         buildConfigurationList = 0F4680AC14BA7FD900BFE272 /* Build configuration list for PBXAggregateTarget "LLInt Offsets" */;
    13                         buildPhases = (
    14                                 0F4680AA14BA7FD900BFE272 /* Generate Derived Sources */,
    15                         );
    16                         name = "LLInt Offsets";
    17                         productName = "Derived Sources";
    18                 };
    1910                65FB3F6609D11E9100F49DEB /* Derived Sources */ = {
    2011                        isa = PBXAggregateTarget;
     
    2314                                65FB3F6509D11E9100F49DEB /* Generate Derived Sources */,
    2415                                5D35DEE10C7C140B008648B2 /* Generate DTrace header */,
    25                         );
    26                         dependencies = (
    27                                 0F4680B414BA821400BFE272 /* PBXTargetDependency */,
    2816                        );
    2917                        name = "Derived Sources";
     
    6149                0BCD83571485845200EA2003 /* TemporaryChange.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BCD83541485841200EA2003 /* TemporaryChange.h */; settings = {ATTRIBUTES = (Private, ); }; };
    6250                0BF28A2911A33DC300638F84 /* SizeLimits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BF28A2811A33DC300638F84 /* SizeLimits.cpp */; };
    63                 0F0B839A14BCF45D00885B4F /* LLIntEntrypoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F0B839514BCF45A00885B4F /* LLIntEntrypoints.cpp */; };
    64                 0F0B839B14BCF46000885B4F /* LLIntEntrypoints.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B839614BCF45A00885B4F /* LLIntEntrypoints.h */; settings = {ATTRIBUTES = (Private, ); }; };
    65                 0F0B839C14BCF46300885B4F /* LLIntThunks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F0B839714BCF45A00885B4F /* LLIntThunks.cpp */; };
    66                 0F0B839D14BCF46600885B4F /* LLIntThunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B839814BCF45A00885B4F /* LLIntThunks.h */; settings = {ATTRIBUTES = (Private, ); }; };
    6751                0F0B83A714BCF50700885B4F /* CodeType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B83A514BCF50400885B4F /* CodeType.h */; settings = {ATTRIBUTES = (Private, ); }; };
    6852                0F0B83A914BCF56200885B4F /* HandlerInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B83A814BCF55E00885B4F /* HandlerInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    7559                0F0B83B714BCF8E100885B4F /* GlobalResolveInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B83B614BCF8DF00885B4F /* GlobalResolveInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
    7660                0F0B83B914BCF95F00885B4F /* CallReturnOffsetToBytecodeOffset.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0B83B814BCF95B00885B4F /* CallReturnOffsetToBytecodeOffset.h */; settings = {ATTRIBUTES = (Private, ); }; };
    77                 0F0FC45A14BD15F500B81154 /* LLIntCallLinkInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0FC45814BD15F100B81154 /* LLIntCallLinkInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
    7861                0F15F15F14B7A73E005DE37D /* CommonSlowPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F15F15D14B7A73A005DE37D /* CommonSlowPaths.h */; settings = {ATTRIBUTES = (Private, ); }; };
    7962                0F16D726142C39C000CF784A /* BitVector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F16D724142C39A200CF784A /* BitVector.cpp */; };
    8063                0F21C26814BE5F6800ADC64B /* JITDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F21C26614BE5F5E00ADC64B /* JITDriver.h */; settings = {ATTRIBUTES = (Private, ); }; };
    81                 0F21C27C14BE727600ADC64B /* ExecutionHarness.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F21C27A14BE727300ADC64B /* ExecutionHarness.h */; settings = {ATTRIBUTES = (Private, ); }; };
    82                 0F21C27D14BE727A00ADC64B /* CodeSpecializationKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F21C27914BE727300ADC64B /* CodeSpecializationKind.h */; settings = {ATTRIBUTES = (Private, ); }; };
    83                 0F21C27F14BEAA8200ADC64B /* BytecodeConventions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F21C27E14BEAA8000ADC64B /* BytecodeConventions.h */; settings = {ATTRIBUTES = (Private, ); }; };
    8464                0F242DA713F3B1E8007ADD4C /* WeakReferenceHarvester.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F242DA513F3B1BB007ADD4C /* WeakReferenceHarvester.h */; settings = {ATTRIBUTES = (Private, ); }; };
    8565                0F2C556F14738F3100121E4F /* DFGCodeBlocks.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2C556E14738F2E00121E4F /* DFGCodeBlocks.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    9272                0F46808214BA572D00BFE272 /* JITExceptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F46808014BA572700BFE272 /* JITExceptions.h */; settings = {ATTRIBUTES = (Private, ); }; };
    9373                0F46808314BA573100BFE272 /* JITExceptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F46807F14BA572700BFE272 /* JITExceptions.cpp */; };
    94                 0F4680A314BA7F8D00BFE272 /* LLIntExceptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F46809E14BA7F8200BFE272 /* LLIntExceptions.h */; settings = {ATTRIBUTES = (Private, ); }; };
    95                 0F4680A414BA7F8D00BFE272 /* LLIntSlowPaths.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F46809F14BA7F8200BFE272 /* LLIntSlowPaths.cpp */; settings = {COMPILER_FLAGS = "-Wno-unused-parameter"; }; };
    96                 0F4680A514BA7F8D00BFE272 /* LLIntSlowPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4680A014BA7F8200BFE272 /* LLIntSlowPaths.h */; settings = {ATTRIBUTES = (Private, ); }; };
    97                 0F4680A714BA7FA100BFE272 /* LLIntOffsetsExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4680A114BA7F8200BFE272 /* LLIntOffsetsExtractor.cpp */; };
    98                 0F4680A814BA7FAB00BFE272 /* LLIntExceptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F46809D14BA7F8200BFE272 /* LLIntExceptions.cpp */; };
    99                 0F4680CA14BBB16C00BFE272 /* LLIntCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4680C514BBB16900BFE272 /* LLIntCommon.h */; settings = {ATTRIBUTES = (Private, ); }; };
    100                 0F4680CB14BBB17200BFE272 /* LLIntOfflineAsmConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4680C614BBB16900BFE272 /* LLIntOfflineAsmConfig.h */; settings = {ATTRIBUTES = (Private, ); }; };
    101                 0F4680CC14BBB17A00BFE272 /* LowLevelInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4680C714BBB16900BFE272 /* LowLevelInterpreter.cpp */; };
    102                 0F4680CD14BBB17D00BFE272 /* LowLevelInterpreter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4680C814BBB16900BFE272 /* LowLevelInterpreter.h */; settings = {ATTRIBUTES = (Private, ); }; };
    103                 0F4680D214BBD16500BFE272 /* LLIntData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4680CE14BBB3D100BFE272 /* LLIntData.cpp */; };
    104                 0F4680D314BBD16700BFE272 /* LLIntData.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4680CF14BBB3D100BFE272 /* LLIntData.h */; settings = {ATTRIBUTES = (Private, ); }; };
    105                 0F4680D414BBD24900BFE272 /* HostCallReturnValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F4680D014BBC5F800BFE272 /* HostCallReturnValue.cpp */; };
    106                 0F4680D514BBD24B00BFE272 /* HostCallReturnValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4680D114BBC5F800BFE272 /* HostCallReturnValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
    10774                0F55F0F414D1063900AC7649 /* AbstractPC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F55F0F114D1063600AC7649 /* AbstractPC.cpp */; };
    10875                0F55F0F514D1063C00AC7649 /* AbstractPC.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F55F0F214D1063600AC7649 /* AbstractPC.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    453420                86BB09C0138E381B0056702F /* DFGRepatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86BB09BE138E381B0056702F /* DFGRepatch.cpp */; };
    454421                86BB09C1138E381B0056702F /* DFGRepatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 86BB09BF138E381B0056702F /* DFGRepatch.h */; };
    455                 86C36EEA0EE1289D00B3DF59 /* MacroAssembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 86C36EE90EE1289D00B3DF59 /* MacroAssembler.h */; settings = {ATTRIBUTES = (Private, ); }; };
     422                86C36EEA0EE1289D00B3DF59 /* MacroAssembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 86C36EE90EE1289D00B3DF59 /* MacroAssembler.h */; };
    456423                86C568E011A213EE0007F7F0 /* MacroAssemblerARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86C568DD11A213EE0007F7F0 /* MacroAssemblerARM.cpp */; };
    457424                86C568E111A213EE0007F7F0 /* MacroAssemblerMIPS.h in Headers */ = {isa = PBXBuildFile; fileRef = 86C568DE11A213EE0007F7F0 /* MacroAssemblerMIPS.h */; };
     
    824791
    825792/* Begin PBXContainerItemProxy section */
    826                 0F4680B114BA811500BFE272 /* PBXContainerItemProxy */ = {
    827                         isa = PBXContainerItemProxy;
    828                         containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
    829                         proxyType = 1;
    830                         remoteGlobalIDString = 0F4680A914BA7FD900BFE272;
    831                         remoteInfo = "LLInt Offsets";
    832                 };
    833                 0F4680B314BA821400BFE272 /* PBXContainerItemProxy */ = {
    834                         isa = PBXContainerItemProxy;
    835                         containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
    836                         proxyType = 1;
    837                         remoteGlobalIDString = 0F46808E14BA7E5E00BFE272;
    838                         remoteInfo = JSCLLIntOffsetsExtractor;
    839                 };
    840793                141214BE0A49190E00480255 /* PBXContainerItemProxy */ = {
    841794                        isa = PBXContainerItemProxy;
     
    883836
    884837/* Begin PBXCopyFilesBuildPhase section */
    885                 0F46808D14BA7E5E00BFE272 /* CopyFiles */ = {
    886                         isa = PBXCopyFilesBuildPhase;
    887                         buildActionMask = 2147483647;
    888                         dstPath = /usr/share/man/man1/;
    889                         dstSubfolderSpec = 0;
    890                         files = (
    891                         );
    892                         runOnlyForDeploymentPostprocessing = 1;
    893                 };
    894838                5DBB1511131D0B130056AD36 /* Copy Support Script */ = {
    895839                        isa = PBXCopyFilesBuildPhase;
     
    932876                0BCD83541485841200EA2003 /* TemporaryChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemporaryChange.h; sourceTree = "<group>"; };
    933877                0BF28A2811A33DC300638F84 /* SizeLimits.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SizeLimits.cpp; sourceTree = "<group>"; };
    934                 0F0B839514BCF45A00885B4F /* LLIntEntrypoints.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntEntrypoints.cpp; path = llint/LLIntEntrypoints.cpp; sourceTree = "<group>"; };
    935                 0F0B839614BCF45A00885B4F /* LLIntEntrypoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntEntrypoints.h; path = llint/LLIntEntrypoints.h; sourceTree = "<group>"; };
    936                 0F0B839714BCF45A00885B4F /* LLIntThunks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntThunks.cpp; path = llint/LLIntThunks.cpp; sourceTree = "<group>"; };
    937                 0F0B839814BCF45A00885B4F /* LLIntThunks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntThunks.h; path = llint/LLIntThunks.h; sourceTree = "<group>"; };
    938878                0F0B83A514BCF50400885B4F /* CodeType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeType.h; sourceTree = "<group>"; };
    939879                0F0B83A814BCF55E00885B4F /* HandlerInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HandlerInfo.h; sourceTree = "<group>"; };
     
    946886                0F0B83B614BCF8DF00885B4F /* GlobalResolveInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GlobalResolveInfo.h; sourceTree = "<group>"; };
    947887                0F0B83B814BCF95B00885B4F /* CallReturnOffsetToBytecodeOffset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallReturnOffsetToBytecodeOffset.h; sourceTree = "<group>"; };
    948                 0F0FC45814BD15F100B81154 /* LLIntCallLinkInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LLIntCallLinkInfo.h; sourceTree = "<group>"; };
    949888                0F15F15D14B7A73A005DE37D /* CommonSlowPaths.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommonSlowPaths.h; sourceTree = "<group>"; };
    950889                0F16D724142C39A200CF784A /* BitVector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BitVector.cpp; sourceTree = "<group>"; };
    951890                0F21C26614BE5F5E00ADC64B /* JITDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITDriver.h; sourceTree = "<group>"; };
    952                 0F21C27914BE727300ADC64B /* CodeSpecializationKind.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeSpecializationKind.h; sourceTree = "<group>"; };
    953                 0F21C27A14BE727300ADC64B /* ExecutionHarness.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExecutionHarness.h; sourceTree = "<group>"; };
    954                 0F21C27E14BEAA8000ADC64B /* BytecodeConventions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BytecodeConventions.h; sourceTree = "<group>"; };
    955891                0F242DA513F3B1BB007ADD4C /* WeakReferenceHarvester.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakReferenceHarvester.h; sourceTree = "<group>"; };
    956892                0F2C556D14738F2E00121E4F /* DFGCodeBlocks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DFGCodeBlocks.cpp; sourceTree = "<group>"; };
     
    963899                0F46807F14BA572700BFE272 /* JITExceptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITExceptions.cpp; sourceTree = "<group>"; };
    964900                0F46808014BA572700BFE272 /* JITExceptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITExceptions.h; sourceTree = "<group>"; };
    965                 0F46808F14BA7E5E00BFE272 /* JSCLLIntOffsetsExtractor */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = JSCLLIntOffsetsExtractor; sourceTree = BUILT_PRODUCTS_DIR; };
    966                 0F46809D14BA7F8200BFE272 /* LLIntExceptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntExceptions.cpp; path = llint/LLIntExceptions.cpp; sourceTree = "<group>"; };
    967                 0F46809E14BA7F8200BFE272 /* LLIntExceptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntExceptions.h; path = llint/LLIntExceptions.h; sourceTree = "<group>"; };
    968                 0F46809F14BA7F8200BFE272 /* LLIntSlowPaths.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntSlowPaths.cpp; path = llint/LLIntSlowPaths.cpp; sourceTree = "<group>"; };
    969                 0F4680A014BA7F8200BFE272 /* LLIntSlowPaths.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntSlowPaths.h; path = llint/LLIntSlowPaths.h; sourceTree = "<group>"; };
    970                 0F4680A114BA7F8200BFE272 /* LLIntOffsetsExtractor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntOffsetsExtractor.cpp; path = llint/LLIntOffsetsExtractor.cpp; sourceTree = "<group>"; };
    971                 0F4680C514BBB16900BFE272 /* LLIntCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntCommon.h; path = llint/LLIntCommon.h; sourceTree = "<group>"; };
    972                 0F4680C614BBB16900BFE272 /* LLIntOfflineAsmConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntOfflineAsmConfig.h; path = llint/LLIntOfflineAsmConfig.h; sourceTree = "<group>"; };
    973                 0F4680C714BBB16900BFE272 /* LowLevelInterpreter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LowLevelInterpreter.cpp; path = llint/LowLevelInterpreter.cpp; sourceTree = "<group>"; };
    974                 0F4680C814BBB16900BFE272 /* LowLevelInterpreter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LowLevelInterpreter.h; path = llint/LowLevelInterpreter.h; sourceTree = "<group>"; };
    975                 0F4680CE14BBB3D100BFE272 /* LLIntData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntData.cpp; path = llint/LLIntData.cpp; sourceTree = "<group>"; };
    976                 0F4680CF14BBB3D100BFE272 /* LLIntData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntData.h; path = llint/LLIntData.h; sourceTree = "<group>"; };
    977                 0F4680D014BBC5F800BFE272 /* HostCallReturnValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HostCallReturnValue.cpp; sourceTree = "<group>"; };
    978                 0F4680D114BBC5F800BFE272 /* HostCallReturnValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HostCallReturnValue.h; sourceTree = "<group>"; };
    979901                0F55F0F114D1063600AC7649 /* AbstractPC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AbstractPC.cpp; sourceTree = "<group>"; };
    980902                0F55F0F214D1063600AC7649 /* AbstractPC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AbstractPC.h; sourceTree = "<group>"; };
     
    17351657
    17361658/* Begin PBXFrameworksBuildPhase section */
    1737                 0F46808C14BA7E5E00BFE272 /* Frameworks */ = {
    1738                         isa = PBXFrameworksBuildPhase;
    1739                         buildActionMask = 2147483647;
    1740                         files = (
    1741                         );
    1742                         runOnlyForDeploymentPostprocessing = 0;
    1743                 };
    17441659                1412111E0A48793C00480255 /* Frameworks */ = {
    17451660                        isa = PBXFrameworksBuildPhase;
     
    18001715                                14BD59BF0A3E8F9000BAF59C /* testapi */,
    18011716                                6511230514046A4C002B101D /* testRegExp */,
    1802                                 0F46808F14BA7E5E00BFE272 /* JSCLLIntOffsetsExtractor */,
    18031717                        );
    18041718                        name = Products;
     
    18261740                                45E12D8806A49B0F00E9DF84 /* jsc.cpp */,
    18271741                                F68EBB8C0255D4C601FF60F7 /* config.h */,
    1828                                 0F46809C14BA7F4D00BFE272 /* llint */,
    18291742                                1432EBD70A34CAD400717B9F /* API */,
    18301743                                9688CB120ED12B4E001D649F /* assembler */,
     
    18661779                        usesTabs = 0;
    18671780                };
    1868                 0F46809C14BA7F4D00BFE272 /* llint */ = {
    1869                         isa = PBXGroup;
    1870                         children = (
    1871                                 0F0B839514BCF45A00885B4F /* LLIntEntrypoints.cpp */,
    1872                                 0F0B839614BCF45A00885B4F /* LLIntEntrypoints.h */,
    1873                                 0F0B839714BCF45A00885B4F /* LLIntThunks.cpp */,
    1874                                 0F0B839814BCF45A00885B4F /* LLIntThunks.h */,
    1875                                 0F4680CE14BBB3D100BFE272 /* LLIntData.cpp */,
    1876                                 0F4680CF14BBB3D100BFE272 /* LLIntData.h */,
    1877                                 0F4680C514BBB16900BFE272 /* LLIntCommon.h */,
    1878                                 0F4680C614BBB16900BFE272 /* LLIntOfflineAsmConfig.h */,
    1879                                 0F4680C714BBB16900BFE272 /* LowLevelInterpreter.cpp */,
    1880                                 0F4680C814BBB16900BFE272 /* LowLevelInterpreter.h */,
    1881                                 0F46809D14BA7F8200BFE272 /* LLIntExceptions.cpp */,
    1882                                 0F46809E14BA7F8200BFE272 /* LLIntExceptions.h */,
    1883                                 0F46809F14BA7F8200BFE272 /* LLIntSlowPaths.cpp */,
    1884                                 0F4680A014BA7F8200BFE272 /* LLIntSlowPaths.h */,
    1885                                 0F4680A114BA7F8200BFE272 /* LLIntOffsetsExtractor.cpp */,
    1886                         );
    1887                         name = llint;
    1888                         sourceTree = "<group>";
    1889                 };
    18901781                141211000A48772600480255 /* tests */ = {
    18911782                        isa = PBXGroup;
     
    19221813                        isa = PBXGroup;
    19231814                        children = (
    1924                                 0F4680D014BBC5F800BFE272 /* HostCallReturnValue.cpp */,
    1925                                 0F4680D114BBC5F800BFE272 /* HostCallReturnValue.h */,
    19261815                                0F46807F14BA572700BFE272 /* JITExceptions.cpp */,
    19271816                                0F46808014BA572700BFE272 /* JITExceptions.h */,
     
    23982287                        isa = PBXGroup;
    23992288                        children = (
    2400                                 0F21C27914BE727300ADC64B /* CodeSpecializationKind.h */,
    2401                                 0F21C27A14BE727300ADC64B /* ExecutionHarness.h */,
    24022289                                0F15F15D14B7A73A005DE37D /* CommonSlowPaths.h */,
    24032290                                BCF605110E203EF800B9A64D /* ArgList.cpp */,
     
    27842671                        isa = PBXGroup;
    27852672                        children = (
    2786                                 0F21C27E14BEAA8000ADC64B /* BytecodeConventions.h */,
    2787                                 0F0FC45814BD15F100B81154 /* LLIntCallLinkInfo.h */,
    27882673                                0F9FC8BF14E1B5FB00D52AE0 /* PolymorphicPutByIdList.cpp */,
    27892674                                0F9FC8C014E1B5FB00D52AE0 /* PolymorphicPutByIdList.h */,
     
    33503235                                86704B4312DB8A8100A9FE7B /* YarrSyntaxChecker.h in Headers */,
    33513236                                0F15F15F14B7A73E005DE37D /* CommonSlowPaths.h in Headers */,
    3352                                 0F4680A314BA7F8D00BFE272 /* LLIntExceptions.h in Headers */,
    3353                                 0F4680A514BA7F8D00BFE272 /* LLIntSlowPaths.h in Headers */,
    33543237                                0F46808214BA572D00BFE272 /* JITExceptions.h in Headers */,
    3355                                 0F4680CA14BBB16C00BFE272 /* LLIntCommon.h in Headers */,
    3356                                 0F4680CB14BBB17200BFE272 /* LLIntOfflineAsmConfig.h in Headers */,
    3357                                 0F4680CD14BBB17D00BFE272 /* LowLevelInterpreter.h in Headers */,
    3358                                 0F4680D314BBD16700BFE272 /* LLIntData.h in Headers */,
    3359                                 0F4680D514BBD24B00BFE272 /* HostCallReturnValue.h in Headers */,
    3360                                 0F0B839B14BCF46000885B4F /* LLIntEntrypoints.h in Headers */,
    3361                                 0F0B839D14BCF46600885B4F /* LLIntThunks.h in Headers */,
    33623238                                0F0B83A714BCF50700885B4F /* CodeType.h in Headers */,
    33633239                                0F0B83A914BCF56200885B4F /* HandlerInfo.h in Headers */,
     
    33683244                                0F0B83B714BCF8E100885B4F /* GlobalResolveInfo.h in Headers */,
    33693245                                0F0B83B914BCF95F00885B4F /* CallReturnOffsetToBytecodeOffset.h in Headers */,
    3370                                 0F0FC45A14BD15F500B81154 /* LLIntCallLinkInfo.h in Headers */,
    33713246                                0F21C26814BE5F6800ADC64B /* JITDriver.h in Headers */,
    3372                                 0F21C27C14BE727600ADC64B /* ExecutionHarness.h in Headers */,
    3373                                 0F21C27D14BE727A00ADC64B /* CodeSpecializationKind.h in Headers */,
    3374                                 0F21C27F14BEAA8200ADC64B /* BytecodeConventions.h in Headers */,
    33753247                                0F7B294A14C3CD29007C3DB1 /* DFGCCallHelpers.h in Headers */,
    33763248                                0F7B294B14C3CD2F007C3DB1 /* DFGCapabilities.h in Headers */,
     
    34043276
    34053277/* Begin PBXNativeTarget section */
    3406                 0F46808E14BA7E5E00BFE272 /* JSCLLIntOffsetsExtractor */ = {
    3407                         isa = PBXNativeTarget;
    3408                         buildConfigurationList = 0F46809A14BA7E5F00BFE272 /* Build configuration list for PBXNativeTarget "JSCLLIntOffsetsExtractor" */;
    3409                         buildPhases = (
    3410                                 0F46808B14BA7E5E00BFE272 /* Sources */,
    3411                                 0F46808C14BA7E5E00BFE272 /* Frameworks */,
    3412                                 0F46808D14BA7E5E00BFE272 /* CopyFiles */,
    3413                         );
    3414                         buildRules = (
    3415                         );
    3416                         dependencies = (
    3417                                 0F4680B214BA811500BFE272 /* PBXTargetDependency */,
    3418                         );
    3419                         name = JSCLLIntOffsetsExtractor;
    3420                         productName = JSCLLIntOffsetsExtractor;
    3421                         productReference = 0F46808F14BA7E5E00BFE272 /* JSCLLIntOffsetsExtractor */;
    3422                         productType = "com.apple.product-type.tool";
    3423                 };
    34243278                1412111F0A48793C00480255 /* minidom */ = {
    34253279                        isa = PBXNativeTarget;
     
    35483402                                932F5BDA0822A1C700736975 /* jsc */,
    35493403                                651122F714046A4C002B101D /* testRegExp */,
    3550                                 0F46808E14BA7E5E00BFE272 /* JSCLLIntOffsetsExtractor */,
    3551                                 0F4680A914BA7FD900BFE272 /* LLInt Offsets */,
    35523404                        );
    35533405                };
     
    35553407
    35563408/* Begin PBXShellScriptBuildPhase section */
    3557                 0F4680AA14BA7FD900BFE272 /* Generate Derived Sources */ = {
    3558                         isa = PBXShellScriptBuildPhase;
    3559                         buildActionMask = 2147483647;
    3560                         files = (
    3561                         );
    3562                         inputPaths = (
    3563                                 "$(SRCROOT)/llint/LowLevelAssembler.asm",
    3564                         );
    3565                         name = "Generate Derived Sources";
    3566                         outputPaths = (
    3567                                 "$(BUILT_PRODUCTS_DIR)/LLIntOffsets/LLIntDesiredOffsets.h",
    3568                         );
    3569                         runOnlyForDeploymentPostprocessing = 0;
    3570                         shellPath = /bin/sh;
    3571                         shellScript = "mkdir -p \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/\"\n\n/usr/bin/env ruby \"${SRCROOT}/offlineasm/generate_offset_extractor.rb\" \"${SRCROOT}/llint/LowLevelInterpreter.asm\" \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/LLIntDesiredOffsets.h\"\n";
    3572                 };
    35733409                3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */ = {
    35743410                        isa = PBXShellScriptBuildPhase;
     
    36763512                        runOnlyForDeploymentPostprocessing = 0;
    36773513                        shellPath = /bin/sh;
    3678                         shellScript = "mkdir -p \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore/docs\"\ncd \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\"\n\n/bin/ln -sfh \"${SRCROOT}\" JavaScriptCore\nexport JavaScriptCore=\"JavaScriptCore\"\nexport BUILT_PRODUCTS_DIR=\"../..\"\n\nmake --no-builtin-rules -f \"JavaScriptCore/DerivedSources.make\" -j `/usr/sbin/sysctl -n hw.ncpu`\n\n/usr/bin/env ruby JavaScriptCore/offlineasm/asm.rb JavaScriptCore/llint/LowLevelInterpreter.asm ${BUILT_PRODUCTS_DIR}/JSCLLIntOffsetsExtractor LLIntAssembly.h\n";
     3514                        shellScript = "mkdir -p \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore/docs\"\ncd \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\"\n\n/bin/ln -sfh \"${SRCROOT}\" JavaScriptCore\nexport JavaScriptCore=\"JavaScriptCore\"\nexport BUILT_PRODUCTS_DIR=\"../..\"\n\nmake --no-builtin-rules -f \"JavaScriptCore/DerivedSources.make\" -j `/usr/sbin/sysctl -n hw.ncpu`\n";
    36793515                };
    36803516                9319586B09D9F91A00A56FD4 /* Check For Global Initializers */ = {
     
    37113547
    37123548/* Begin PBXSourcesBuildPhase section */
    3713                 0F46808B14BA7E5E00BFE272 /* Sources */ = {
    3714                         isa = PBXSourcesBuildPhase;
    3715                         buildActionMask = 2147483647;
    3716                         files = (
    3717                                 0F4680A714BA7FA100BFE272 /* LLIntOffsetsExtractor.cpp in Sources */,
    3718                         );
    3719                         runOnlyForDeploymentPostprocessing = 0;
    3720                 };
    37213549                1412111D0A48793C00480255 /* Sources */ = {
    37223550                        isa = PBXSourcesBuildPhase;
     
    39793807                                86704B8912DBA33700A9FE7B /* YarrPattern.cpp in Sources */,
    39803808                                86704B4212DB8A8100A9FE7B /* YarrSyntaxChecker.cpp in Sources */,
    3981                                 0F4680A414BA7F8D00BFE272 /* LLIntSlowPaths.cpp in Sources */,
    3982                                 0F4680A814BA7FAB00BFE272 /* LLIntExceptions.cpp in Sources */,
    39833809                                0F46808314BA573100BFE272 /* JITExceptions.cpp in Sources */,
    3984                                 0F4680CC14BBB17A00BFE272 /* LowLevelInterpreter.cpp in Sources */,
    3985                                 0F4680D214BBD16500BFE272 /* LLIntData.cpp in Sources */,
    3986                                 0F4680D414BBD24900BFE272 /* HostCallReturnValue.cpp in Sources */,
    3987                                 0F0B839A14BCF45D00885B4F /* LLIntEntrypoints.cpp in Sources */,
    3988                                 0F0B839C14BCF46300885B4F /* LLIntThunks.cpp in Sources */,
    39893810                                0F0B83B014BCF71600885B4F /* CallLinkInfo.cpp in Sources */,
    39903811                                0F0B83B414BCF86000885B4F /* MethodCallLinkInfo.cpp in Sources */,
     
    40203841
    40213842/* Begin PBXTargetDependency section */
    4022                 0F4680B214BA811500BFE272 /* PBXTargetDependency */ = {
    4023                         isa = PBXTargetDependency;
    4024                         target = 0F4680A914BA7FD900BFE272 /* LLInt Offsets */;
    4025                         targetProxy = 0F4680B114BA811500BFE272 /* PBXContainerItemProxy */;
    4026                 };
    4027                 0F4680B414BA821400BFE272 /* PBXTargetDependency */ = {
    4028                         isa = PBXTargetDependency;
    4029                         target = 0F46808E14BA7E5E00BFE272 /* JSCLLIntOffsetsExtractor */;
    4030                         targetProxy = 0F4680B314BA821400BFE272 /* PBXContainerItemProxy */;
    4031                 };
    40323843                141214BF0A49190E00480255 /* PBXTargetDependency */ = {
    40333844                        isa = PBXTargetDependency;
     
    40633874
    40643875/* Begin XCBuildConfiguration section */
    4065                 0F46809614BA7E5E00BFE272 /* Debug */ = {
    4066                         isa = XCBuildConfiguration;
    4067                         buildSettings = {
    4068                                 ALWAYS_SEARCH_USER_PATHS = NO;
    4069                                 ARCHS = "$(ARCHS_STANDARD_64_BIT)";
    4070                                 COPY_PHASE_STRIP = NO;
    4071                                 GCC_C_LANGUAGE_STANDARD = gnu99;
    4072                                 GCC_DYNAMIC_NO_PIC = NO;
    4073                                 GCC_ENABLE_OBJC_EXCEPTIONS = YES;
    4074                                 GCC_OPTIMIZATION_LEVEL = 0;
    4075                                 GCC_PREPROCESSOR_DEFINITIONS = (
    4076                                         "DEBUG=1",
    4077                                         "$(inherited)",
    4078                                 );
    4079                                 GCC_SYMBOLS_PRIVATE_EXTERN = NO;
    4080                                 GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
    4081                                 GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
    4082                                 GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
    4083                                 GCC_WARN_ABOUT_RETURN_TYPE = YES;
    4084                                 GCC_WARN_UNUSED_VARIABLE = YES;
    4085                                 "HEADER_SEARCH_PATHS[arch=*]" = (
    4086                                         .,
    4087                                         icu,
    4088                                         "$(BUILT_PRODUCTS_DIR)/LLIntOffsets",
    4089                                         "$(HEADER_SEARCH_PATHS)",
    4090                                 );
    4091                                 MACOSX_DEPLOYMENT_TARGET = 10.7;
    4092                                 ONLY_ACTIVE_ARCH = NO;
    4093                                 PRODUCT_NAME = "$(TARGET_NAME)";
    4094                                 SDKROOT = macosx;
    4095                                 USER_HEADER_SEARCH_PATHS = ". icu $(BUILT_PRODUCTS_DIR)/LLIntOffsets $(HEADER_SEARCH_PATHS)";
    4096                         };
    4097                         name = Debug;
    4098                 };
    4099                 0F46809714BA7E5E00BFE272 /* Release */ = {
    4100                         isa = XCBuildConfiguration;
    4101                         buildSettings = {
    4102                                 ALWAYS_SEARCH_USER_PATHS = NO;
    4103                                 ARCHS = "$(ARCHS_STANDARD_64_BIT)";
    4104                                 COPY_PHASE_STRIP = YES;
    4105                                 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
    4106                                 GCC_C_LANGUAGE_STANDARD = gnu99;
    4107                                 GCC_ENABLE_OBJC_EXCEPTIONS = YES;
    4108                                 GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
    4109                                 GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
    4110                                 GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
    4111                                 GCC_WARN_ABOUT_RETURN_TYPE = YES;
    4112                                 GCC_WARN_UNUSED_VARIABLE = YES;
    4113                                 "HEADER_SEARCH_PATHS[arch=*]" = (
    4114                                         .,
    4115                                         icu,
    4116                                         "$(BUILT_PRODUCTS_DIR)/LLIntOffsets$(HEADER_SEARCH_PATHS)",
    4117                                 );
    4118                                 MACOSX_DEPLOYMENT_TARGET = 10.7;
    4119                                 ONLY_ACTIVE_ARCH = NO;
    4120                                 PRODUCT_NAME = "$(TARGET_NAME)";
    4121                                 SDKROOT = macosx;
    4122                                 USER_HEADER_SEARCH_PATHS = ". icu $(BUILT_PRODUCTS_DIR)/LLIntOffsets $(HEADER_SEARCH_PATHS)";
    4123                         };
    4124                         name = Release;
    4125                 };
    4126                 0F46809814BA7E5E00BFE272 /* Profiling */ = {
    4127                         isa = XCBuildConfiguration;
    4128                         buildSettings = {
    4129                                 ALWAYS_SEARCH_USER_PATHS = NO;
    4130                                 ARCHS = "$(ARCHS_STANDARD_64_BIT)";
    4131                                 COPY_PHASE_STRIP = YES;
    4132                                 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
    4133                                 GCC_C_LANGUAGE_STANDARD = gnu99;
    4134                                 GCC_ENABLE_OBJC_EXCEPTIONS = YES;
    4135                                 GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
    4136                                 GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
    4137                                 GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
    4138                                 GCC_WARN_ABOUT_RETURN_TYPE = YES;
    4139                                 GCC_WARN_UNUSED_VARIABLE = YES;
    4140                                 "HEADER_SEARCH_PATHS[arch=*]" = (
    4141                                         .,
    4142                                         icu,
    4143                                         "$(BUILT_PRODUCTS_DIR)/LLIntOffsets",
    4144                                         "$(HEADER_SEARCH_PATHS)",
    4145                                 );
    4146                                 MACOSX_DEPLOYMENT_TARGET = 10.7;
    4147                                 ONLY_ACTIVE_ARCH = NO;
    4148                                 PRODUCT_NAME = "$(TARGET_NAME)";
    4149                                 SDKROOT = macosx;
    4150                                 USER_HEADER_SEARCH_PATHS = ". icu $(BUILT_PRODUCTS_DIR)/LLIntOffsets $(HEADER_SEARCH_PATHS)";
    4151                         };
    4152                         name = Profiling;
    4153                 };
    4154                 0F46809914BA7E5E00BFE272 /* Production */ = {
    4155                         isa = XCBuildConfiguration;
    4156                         buildSettings = {
    4157                                 ALWAYS_SEARCH_USER_PATHS = NO;
    4158                                 ARCHS = "$(ARCHS_STANDARD_64_BIT)";
    4159                                 COPY_PHASE_STRIP = YES;
    4160                                 DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
    4161                                 GCC_C_LANGUAGE_STANDARD = gnu99;
    4162                                 GCC_ENABLE_OBJC_EXCEPTIONS = YES;
    4163                                 GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
    4164                                 GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
    4165                                 GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
    4166                                 GCC_WARN_ABOUT_RETURN_TYPE = YES;
    4167                                 GCC_WARN_UNUSED_VARIABLE = YES;
    4168                                 "HEADER_SEARCH_PATHS[arch=*]" = (
    4169                                         .,
    4170                                         icu,
    4171                                         "$(BUILT_PRODUCTS_DIR)/LLIntOffsets",
    4172                                         "$(HEADER_SEARCH_PATHS)",
    4173                                 );
    4174                                 MACOSX_DEPLOYMENT_TARGET = 10.7;
    4175                                 PRODUCT_NAME = "$(TARGET_NAME)";
    4176                                 SDKROOT = macosx;
    4177                                 USER_HEADER_SEARCH_PATHS = ". icu $(BUILT_PRODUCTS_DIR)/LLIntOffsets $(HEADER_SEARCH_PATHS)";
    4178                         };
    4179                         name = Production;
    4180                 };
    4181                 0F4680AD14BA7FD900BFE272 /* Debug */ = {
    4182                         isa = XCBuildConfiguration;
    4183                         buildSettings = {
    4184                                 PRODUCT_NAME = "Derived Sources copy";
    4185                         };
    4186                         name = Debug;
    4187                 };
    4188                 0F4680AE14BA7FD900BFE272 /* Release */ = {
    4189                         isa = XCBuildConfiguration;
    4190                         buildSettings = {
    4191                                 PRODUCT_NAME = "Derived Sources copy";
    4192                         };
    4193                         name = Release;
    4194                 };
    4195                 0F4680AF14BA7FD900BFE272 /* Profiling */ = {
    4196                         isa = XCBuildConfiguration;
    4197                         buildSettings = {
    4198                                 PRODUCT_NAME = "Derived Sources copy";
    4199                         };
    4200                         name = Profiling;
    4201                 };
    4202                 0F4680B014BA7FD900BFE272 /* Production */ = {
    4203                         isa = XCBuildConfiguration;
    4204                         buildSettings = {
    4205                                 PRODUCT_NAME = "Derived Sources copy";
    4206                         };
    4207                         name = Production;
    4208                 };
    42093876                1412113A0A48798400480255 /* Debug */ = {
    42103877                        isa = XCBuildConfiguration;
     
    44484115
    44494116/* Begin XCConfigurationList section */
    4450                 0F46809A14BA7E5F00BFE272 /* Build configuration list for PBXNativeTarget "JSCLLIntOffsetsExtractor" */ = {
    4451                         isa = XCConfigurationList;
    4452                         buildConfigurations = (
    4453                                 0F46809614BA7E5E00BFE272 /* Debug */,
    4454                                 0F46809714BA7E5E00BFE272 /* Release */,
    4455                                 0F46809814BA7E5E00BFE272 /* Profiling */,
    4456                                 0F46809914BA7E5E00BFE272 /* Production */,
    4457                         );
    4458                         defaultConfigurationIsVisible = 0;
    4459                         defaultConfigurationName = Production;
    4460                 };
    4461                 0F4680AC14BA7FD900BFE272 /* Build configuration list for PBXAggregateTarget "LLInt Offsets" */ = {
    4462                         isa = XCConfigurationList;
    4463                         buildConfigurations = (
    4464                                 0F4680AD14BA7FD900BFE272 /* Debug */,
    4465                                 0F4680AE14BA7FD900BFE272 /* Release */,
    4466                                 0F4680AF14BA7FD900BFE272 /* Profiling */,
    4467                                 0F4680B014BA7FD900BFE272 /* Production */,
    4468                         );
    4469                         defaultConfigurationIsVisible = 0;
    4470                         defaultConfigurationName = Production;
    4471                 };
    44724117                141211390A48798400480255 /* Build configuration list for PBXNativeTarget "minidom" */ = {
    44734118                        isa = XCConfigurationList;
  • trunk/Source/JavaScriptCore/Target.pri

    r108309 r108358  
    114114    jit/ExecutableAllocatorFixedVMPool.cpp \
    115115    jit/ExecutableAllocator.cpp \
    116     jit/HostCallReturnValue.cpp \
    117116    jit/JITArithmetic.cpp \
    118117    jit/JITArithmetic32_64.cpp \
  • trunk/Source/JavaScriptCore/assembler/LinkBuffer.h

    r108309 r108358  
    3535#define REGEXP_CODE_ID reinterpret_cast<void*>(static_cast<intptr_t>(-2))
    3636
    37 #include "MacroAssembler.h"
     37#include <MacroAssembler.h>
    3838#include <wtf/DataLog.h>
    3939#include <wtf/Noncopyable.h>
  • trunk/Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h

    r108309 r108358  
    3232#include "UnusedParam.h"
    3333
     34#if ENABLE(ASSEMBLER)
     35
    3436// ASSERT_VALID_CODE_POINTER checks that ptr is a non-null pointer, and that it is a valid
    3537// instruction address on the platform (for example, check any alignment requirements).
     
    272274        ASSERT_VALID_CODE_POINTER(m_value);
    273275    }
    274    
    275     static MacroAssemblerCodePtr createFromExecutableAddress(void* value)
    276     {
    277         ASSERT_VALID_CODE_POINTER(value);
    278         MacroAssemblerCodePtr result;
    279         result.m_value = value;
    280         return result;
    281     }
    282276
    283277    explicit MacroAssemblerCodePtr(ReturnAddressPtr ra)
     
    367361} // namespace JSC
    368362
     363#endif // ENABLE(ASSEMBLER)
     364
    369365#endif // MacroAssemblerCodeRef_h
  • trunk/Source/JavaScriptCore/bytecode/CallLinkStatus.cpp

    r108309 r108358  
    2828
    2929#include "CodeBlock.h"
    30 #include "LLIntCallLinkInfo.h"
    3130
    3231namespace JSC {
    33 
    34 CallLinkStatus CallLinkStatus::computeFromLLInt(CodeBlock* profiledBlock, unsigned bytecodeIndex)
    35 {
    36     UNUSED_PARAM(profiledBlock);
    37     UNUSED_PARAM(bytecodeIndex);
    38 #if ENABLE(LLINT)
    39     Instruction* instruction = profiledBlock->instructions().begin() + bytecodeIndex;
    40     LLIntCallLinkInfo* callLinkInfo = instruction[4].u.callLinkInfo;
    41    
    42     return CallLinkStatus(callLinkInfo->lastSeenCallee.get(), false);
    43 #else
    44     return CallLinkStatus(0, false);
    45 #endif
    46 }
    4732
    4833CallLinkStatus CallLinkStatus::computeFor(CodeBlock* profiledBlock, unsigned bytecodeIndex)
     
    5136    UNUSED_PARAM(bytecodeIndex);
    5237#if ENABLE(JIT) && ENABLE(VALUE_PROFILER)
    53     if (!profiledBlock->numberOfCallLinkInfos())
    54         return computeFromLLInt(profiledBlock, bytecodeIndex);
    55    
    56     if (profiledBlock->couldTakeSlowCase(bytecodeIndex))
    57         return CallLinkStatus(0, true);
    58    
    59     JSFunction* target = profiledBlock->getCallLinkInfo(bytecodeIndex).lastSeenCallee.get();
    60     if (!target)
    61         return computeFromLLInt(profiledBlock, bytecodeIndex);
    62    
    63     return CallLinkStatus(target, false);
     38    return CallLinkStatus(
     39        profiledBlock->getCallLinkInfo(bytecodeIndex).lastSeenCallee.get(),
     40        profiledBlock->couldTakeSlowCase(bytecodeIndex));
    6441#else
    6542    return CallLinkStatus(0, false);
  • trunk/Source/JavaScriptCore/bytecode/CallLinkStatus.h

    r108309 r108358  
    4848    static CallLinkStatus computeFor(CodeBlock*, unsigned bytecodeIndex);
    4949   
    50     bool isSet() const { return !!m_callTarget || m_couldTakeSlowPath; }
     50    bool isSet() const { return !!m_callTarget; }
    5151   
    52     bool operator!() const { return !isSet(); }
     52    bool operator!() const { return !m_callTarget; }
    5353   
    5454    bool couldTakeSlowPath() const { return m_couldTakeSlowPath; }
     
    5757   
    5858private:
    59     static CallLinkStatus computeFromLLInt(CodeBlock*, unsigned bytecodeIndex);
    60    
    6159    JSFunction* m_callTarget;
    6260    bool m_couldTakeSlowPath;
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp

    r108309 r108358  
    4343#include "JSStaticScopeObject.h"
    4444#include "JSValue.h"
    45 #include "LowLevelInterpreter.h"
    4645#include "RepatchBuffer.h"
    4746#include "UStringConcatenate.h"
     
    358357        ++instructionCount;
    359358
    360     dataLog("%lu m_instructions; %lu bytes at %p; %d parameter(s); %d callee register(s); %d variable(s)\n\n",
     359    dataLog("%lu m_instructions; %lu bytes at %p; %d parameter(s); %d callee register(s)\n\n",
    361360        static_cast<unsigned long>(instructionCount),
    362361        static_cast<unsigned long>(instructions().size() * sizeof(Instruction)),
    363         this, m_numParameters, m_numCalleeRegisters, m_numVars);
     362        this, m_numParameters, m_numCalleeRegisters);
    364363
    365364    Vector<Instruction>::const_iterator begin = instructions().begin();
     
    896895        case op_put_by_id_transition: {
    897896            printPutByIdOp(exec, location, it, "put_by_id_transition");
    898             break;
    899         }
    900         case op_put_by_id_transition_direct: {
    901             printPutByIdOp(exec, location, it, "put_by_id_transition_direct");
    902             break;
    903         }
    904         case op_put_by_id_transition_normal: {
    905             printPutByIdOp(exec, location, it, "put_by_id_transition_normal");
    906897            break;
    907898        }
     
    14631454    setNumParameters(other.numParameters());
    14641455    optimizeAfterWarmUp();
    1465     jitAfterWarmUp();
    14661456   
    14671457    if (other.m_rareData) {
     
    15121502   
    15131503    optimizeAfterWarmUp();
    1514     jitAfterWarmUp();
    15151504
    15161505#if DUMP_CODE_BLOCK_STATISTICS
     
    15301519    dumpValueProfiles();
    15311520#endif
    1532 
    1533 #if ENABLE(LLINT)   
    1534     while (m_incomingLLIntCalls.begin() != m_incomingLLIntCalls.end())
    1535         m_incomingLLIntCalls.begin()->remove();
    1536 #endif // ENABLE(LLINT)
     1521   
    15371522#if ENABLE(JIT)
    15381523    // We may be destroyed before any CodeBlocks that refer to us are destroyed.
     
    17461731    static const bool verboseUnlinking = false;
    17471732#endif
    1748 #endif // ENABLE(JIT)
    1749    
    1750 #if ENABLE(LLINT)
    1751     Interpreter* interpreter = m_globalData->interpreter;
    1752     // interpreter->classicEnabled() returns true if the old C++ interpreter is enabled. If that's enabled
    1753     // then we're not using LLInt.
    1754     if (!interpreter->classicEnabled()) {
    1755         for (size_t size = m_propertyAccessInstructions.size(), i = 0; i < size; ++i) {
    1756             Instruction* curInstruction = &instructions()[m_propertyAccessInstructions[i]];
    1757             switch (interpreter->getOpcodeID(curInstruction[0].u.opcode)) {
    1758             case op_get_by_id:
    1759             case op_put_by_id:
    1760                 if (!curInstruction[4].u.structure || Heap::isMarked(curInstruction[4].u.structure.get()))
    1761                     break;
    1762                 if (verboseUnlinking)
    1763                     dataLog("Clearing LLInt property access with structure %p.\n", curInstruction[4].u.structure.get());
    1764                 curInstruction[4].u.structure.clear();
    1765                 curInstruction[5].u.operand = 0;
    1766                 break;
    1767             case op_put_by_id_transition_direct:
    1768             case op_put_by_id_transition_normal:
    1769                 if (Heap::isMarked(curInstruction[4].u.structure.get())
    1770                     && Heap::isMarked(curInstruction[6].u.structure.get())
    1771                     && Heap::isMarked(curInstruction[7].u.structureChain.get()))
    1772                     break;
    1773                 if (verboseUnlinking) {
    1774                     dataLog("Clearing LLInt put transition with structures %p -> %p, chain %p.\n",
    1775                             curInstruction[4].u.structure.get(),
    1776                             curInstruction[6].u.structure.get(),
    1777                             curInstruction[7].u.structureChain.get());
    1778                 }
    1779                 curInstruction[4].u.structure.clear();
    1780                 curInstruction[6].u.structure.clear();
    1781                 curInstruction[7].u.structureChain.clear();
    1782                 curInstruction[0].u.opcode = interpreter->getOpcode(op_put_by_id);
    1783                 break;
    1784             default:
    1785                 ASSERT_NOT_REACHED();
    1786             }
    1787         }
    1788         for (size_t size = m_globalResolveInstructions.size(), i = 0; i < size; ++i) {
    1789             Instruction* curInstruction = &instructions()[m_globalResolveInstructions[i]];
    1790             ASSERT(interpreter->getOpcodeID(curInstruction[0].u.opcode) == op_resolve_global
    1791                    || interpreter->getOpcodeID(curInstruction[0].u.opcode) == op_resolve_global_dynamic);
    1792             if (!curInstruction[3].u.structure || Heap::isMarked(curInstruction[3].u.structure.get()))
    1793                 continue;
    1794             if (verboseUnlinking)
    1795                 dataLog("Clearing LLInt global resolve cache with structure %p.\n", curInstruction[3].u.structure.get());
    1796             curInstruction[3].u.structure.clear();
    1797             curInstruction[4].u.operand = 0;
    1798         }
    1799         for (unsigned i = 0; i < m_llintCallLinkInfos.size(); ++i) {
    1800             if (m_llintCallLinkInfos[i].isLinked() && !Heap::isMarked(m_llintCallLinkInfos[i].callee.get())) {
    1801                 if (verboseUnlinking)
    1802                     dataLog("Clearing LLInt call from %p.\n", this);
    1803                 m_llintCallLinkInfos[i].unlink();
    1804             }
    1805             if (!!m_llintCallLinkInfos[i].lastSeenCallee && !Heap::isMarked(m_llintCallLinkInfos[i].lastSeenCallee.get()))
    1806                 m_llintCallLinkInfos[i].lastSeenCallee.clear();
    1807         }
    1808     }
    1809 #endif // ENABLE(LLINT)
    1810 
     1733#endif
     1734   
    18111735#if ENABLE(DFG_JIT)
    18121736    // Check if we're not live. If we are, then jettison.
     
    18311755            if (callLinkInfo(i).isLinked() && !Heap::isMarked(callLinkInfo(i).callee.get())) {
    18321756                if (verboseUnlinking)
    1833                     dataLog("Clearing call from %p to %p.\n", this, callLinkInfo(i).callee.get());
     1757                    dataLog("Clearing call from %p.\n", this);
    18341758                callLinkInfo(i).unlink(*m_globalData, repatchBuffer);
    18351759            }
     
    19291853        visitor.append(&m_functionDecls[i]);
    19301854#if ENABLE(CLASSIC_INTERPRETER)
    1931     if (m_globalData->interpreter->classicEnabled()) {
    1932         for (size_t size = m_propertyAccessInstructions.size(), i = 0; i < size; ++i)
    1933             visitStructures(visitor, &instructions()[m_propertyAccessInstructions[i]]);
    1934         for (size_t size = m_globalResolveInstructions.size(), i = 0; i < size; ++i)
    1935             visitStructures(visitor, &instructions()[m_globalResolveInstructions[i]]);
    1936     }
     1855    for (size_t size = m_propertyAccessInstructions.size(), i = 0; i < size; ++i)
     1856        visitStructures(visitor, &instructions()[m_propertyAccessInstructions[i]]);
     1857    for (size_t size = m_globalResolveInstructions.size(), i = 0; i < size; ++i)
     1858        visitStructures(visitor, &instructions()[m_globalResolveInstructions[i]]);
    19371859#endif
    19381860
     
    19421864        // FIXME: If they would have otherwise died, we should probably trigger recompilation.
    19431865        for (size_t i = 0; i < inlineCallFrames().size(); ++i) {
    1944             InlineCallFrame& inlineCallFrame = inlineCallFrames()[i];
    1945             visitor.append(&inlineCallFrame.executable);
    1946             visitor.append(&inlineCallFrame.callee);
     1866            visitor.append(&inlineCallFrames()[i].executable);
     1867            visitor.append(&inlineCallFrames()[i].callee);
    19471868        }
    19481869    }
     
    21482069    return addConstant(v);
    21492070}
    2150 
     2071   
    21512072#if ENABLE(JIT)
    21522073void CodeBlock::unlinkCalls()
     
    21542075    if (!!m_alternative)
    21552076        m_alternative->unlinkCalls();
    2156 #if ENABLE(LLINT)
    2157     for (size_t i = 0; i < m_llintCallLinkInfos.size(); ++i) {
    2158         if (m_llintCallLinkInfos[i].isLinked())
    2159             m_llintCallLinkInfos[i].unlink();
    2160     }
    2161 #endif
    21622077    if (!(m_callLinkInfos.size() || m_methodCallLinkInfos.size()))
    21632078        return;
     
    21742089void CodeBlock::unlinkIncomingCalls()
    21752090{
    2176 #if ENABLE(LLINT)
    2177     while (m_incomingLLIntCalls.begin() != m_incomingLLIntCalls.end())
    2178         m_incomingLLIntCalls.begin()->unlink();
    2179 #endif
    2180     if (m_incomingCalls.isEmpty())
    2181         return;
    21822091    RepatchBuffer repatchBuffer(this);
    21832092    while (m_incomingCalls.begin() != m_incomingCalls.end())
    21842093        m_incomingCalls.begin()->unlink(*m_globalData, repatchBuffer);
    2185 }
    2186 
    2187 unsigned CodeBlock::bytecodeOffset(ExecState* exec, ReturnAddressPtr returnAddress)
    2188 {
    2189 #if ENABLE(LLINT)
    2190     if (returnAddress.value() >= bitwise_cast<void*>(&llint_begin)
    2191         && returnAddress.value() <= bitwise_cast<void*>(&llint_end)) {
    2192         ASSERT(exec->codeBlock());
    2193         ASSERT(exec->codeBlock() == this);
    2194         ASSERT(JITCode::isBaselineCode(getJITType()));
    2195         Instruction* instruction = exec->currentVPC();
    2196         ASSERT(instruction);
    2197        
    2198         // The LLInt stores the PC after the call instruction rather than the PC of
    2199         // the call instruction. This requires some correcting. We rely on the fact
    2200         // that the preceding instruction must be one of the call instructions, so
    2201         // either it's a call_varargs or it's a call, construct, or eval.
    2202         ASSERT(OPCODE_LENGTH(op_call_varargs) <= OPCODE_LENGTH(op_call));
    2203         ASSERT(OPCODE_LENGTH(op_call) == OPCODE_LENGTH(op_construct));
    2204         ASSERT(OPCODE_LENGTH(op_call) == OPCODE_LENGTH(op_call_eval));
    2205         if (instruction[-OPCODE_LENGTH(op_call_varargs)].u.pointer == bitwise_cast<void*>(llint_op_call_varargs)) {
    2206             // We know that the preceding instruction must be op_call_varargs because there is no way that
    2207             // the pointer to the call_varargs could be an operand to the call.
    2208             instruction -= OPCODE_LENGTH(op_call_varargs);
    2209             ASSERT(instruction[-OPCODE_LENGTH(op_call)].u.pointer != bitwise_cast<void*>(llint_op_call)
    2210                    && instruction[-OPCODE_LENGTH(op_call)].u.pointer != bitwise_cast<void*>(llint_op_construct)
    2211                    && instruction[-OPCODE_LENGTH(op_call)].u.pointer != bitwise_cast<void*>(llint_op_call_eval));
    2212         } else {
    2213             // Must be that the last instruction was some op_call.
    2214             ASSERT(instruction[-OPCODE_LENGTH(op_call)].u.pointer == bitwise_cast<void*>(llint_op_call)
    2215                    || instruction[-OPCODE_LENGTH(op_call)].u.pointer == bitwise_cast<void*>(llint_op_construct)
    2216                    || instruction[-OPCODE_LENGTH(op_call)].u.pointer == bitwise_cast<void*>(llint_op_call_eval));
    2217             instruction -= OPCODE_LENGTH(op_call);
    2218         }
    2219        
    2220         return bytecodeOffset(instruction);
    2221     }
    2222 #else
    2223     UNUSED_PARAM(exec);
    2224 #endif
    2225     if (!m_rareData)
    2226         return 1;
    2227     Vector<CallReturnOffsetToBytecodeOffset>& callIndices = m_rareData->m_callReturnIndexVector;
    2228     if (!callIndices.size())
    2229         return 1;
    2230     return binarySearch<CallReturnOffsetToBytecodeOffset, unsigned, getCallReturnOffset>(callIndices.begin(), callIndices.size(), getJITCode().offsetOf(returnAddress.value()))->bytecodeOffset;
    22312094}
    22322095#endif
     
    23252188void ProgramCodeBlock::jettison()
    23262189{
    2327     ASSERT(JITCode::isOptimizingJIT(getJITType()));
     2190    ASSERT(getJITType() != JITCode::BaselineJIT);
    23282191    ASSERT(this == replacement());
    23292192    static_cast<ProgramExecutable*>(ownerExecutable())->jettisonOptimizedCode(*globalData());
     
    23322195void EvalCodeBlock::jettison()
    23332196{
    2334     ASSERT(JITCode::isOptimizingJIT(getJITType()));
     2197    ASSERT(getJITType() != JITCode::BaselineJIT);
    23352198    ASSERT(this == replacement());
    23362199    static_cast<EvalExecutable*>(ownerExecutable())->jettisonOptimizedCode(*globalData());
     
    23392202void FunctionCodeBlock::jettison()
    23402203{
    2341     ASSERT(JITCode::isOptimizingJIT(getJITType()));
     2204    ASSERT(getJITType() != JITCode::BaselineJIT);
    23422205    ASSERT(this == replacement());
    23432206    static_cast<FunctionExecutable*>(ownerExecutable())->jettisonOptimizedCodeFor(*globalData(), m_isConstructor ? CodeForConstruct : CodeForCall);
    2344 }
    2345 
    2346 void ProgramCodeBlock::jitCompileImpl(JSGlobalData& globalData)
    2347 {
    2348     ASSERT(getJITType() == JITCode::InterpreterThunk);
    2349     ASSERT(this == replacement());
    2350     return static_cast<ProgramExecutable*>(ownerExecutable())->jitCompile(globalData);
    2351 }
    2352 
    2353 void EvalCodeBlock::jitCompileImpl(JSGlobalData& globalData)
    2354 {
    2355     ASSERT(getJITType() == JITCode::InterpreterThunk);
    2356     ASSERT(this == replacement());
    2357     return static_cast<EvalExecutable*>(ownerExecutable())->jitCompile(globalData);
    2358 }
    2359 
    2360 void FunctionCodeBlock::jitCompileImpl(JSGlobalData& globalData)
    2361 {
    2362     ASSERT(getJITType() == JITCode::InterpreterThunk);
    2363     ASSERT(this == replacement());
    2364     return static_cast<FunctionExecutable*>(ownerExecutable())->jitCompileFor(globalData, m_isConstructor ? CodeForConstruct : CodeForCall);
    23652207}
    23662208#endif
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.h

    r108309 r108358  
    3131#define CodeBlock_h
    3232
    33 #include "BytecodeConventions.h"
    3433#include "CallLinkInfo.h"
    3534#include "CallReturnOffsetToBytecodeOffset.h"
     
    5251#include "JSGlobalObject.h"
    5352#include "JumpTable.h"
    54 #include "LLIntCallLinkInfo.h"
    5553#include "LineInfo.h"
    5654#include "Nodes.h"
     
    6866#include "StructureStubInfo.h"
    6967
     68// Register numbers used in bytecode operations have different meaning according to their ranges:
     69//      0x80000000-0xFFFFFFFF  Negative indices from the CallFrame pointer are entries in the call frame, see RegisterFile.h.
     70//      0x00000000-0x3FFFFFFF  Forwards indices from the CallFrame pointer are local vars and temporaries with the function's callframe.
     71//      0x40000000-0x7FFFFFFF  Positive indices from 0x40000000 specify entries in the constant pool on the CodeBlock.
     72static const int FirstConstantRegisterIndex = 0x40000000;
     73
    7074namespace JSC {
    7175
     76    class ExecState;
    7277    class DFGCodeBlocks;
    73     class ExecState;
    74     class LLIntOffsetsExtractor;
    7578
    7679    inline int unmodifiedArgumentsRegister(int argumentsRegister) { return argumentsRegister - 1; }
     
    8184        WTF_MAKE_FAST_ALLOCATED;
    8285        friend class JIT;
    83         friend class LLIntOffsetsExtractor;
    8486    public:
    8587        enum CopyParsedBlockTag { CopyParsedBlock };
     
    122124                result = result->alternative();
    123125            ASSERT(result);
    124             ASSERT(JITCode::isBaselineCode(result->getJITType()));
     126            ASSERT(result->getJITType() == JITCode::BaselineJIT);
    125127            return result;
    126128        }
     
    191193        }
    192194
    193         unsigned bytecodeOffset(ExecState*, ReturnAddressPtr);
     195        unsigned bytecodeOffset(ReturnAddressPtr returnAddress)
     196        {
     197            if (!m_rareData)
     198                return 1;
     199            Vector<CallReturnOffsetToBytecodeOffset>& callIndices = m_rareData->m_callReturnIndexVector;
     200            if (!callIndices.size())
     201                return 1;
     202            return binarySearch<CallReturnOffsetToBytecodeOffset, unsigned, getCallReturnOffset>(callIndices.begin(), callIndices.size(), getJITCode().offsetOf(returnAddress.value()))->bytecodeOffset;
     203        }
    194204
    195205        unsigned bytecodeOffsetForCallAtIndex(unsigned index)
     
    212222            m_incomingCalls.push(incoming);
    213223        }
    214 #if ENABLE(LLINT)
    215         void linkIncomingCall(LLIntCallLinkInfo* incoming)
    216         {
    217             m_incomingLLIntCalls.push(incoming);
    218         }
    219 #endif // ENABLE(LLINT)
    220224       
    221225        void unlinkIncomingCalls();
    222 #endif // ENABLE(JIT)
    223 
    224 #if ENABLE(DFG_JIT) || ENABLE(LLINT)
     226#endif
     227
     228#if ENABLE(DFG_JIT)
    225229        void setJITCodeMap(PassOwnPtr<CompactJITCodeMap> jitCodeMap)
    226230        {
     
    231235            return m_jitCodeMap.get();
    232236        }
    233 #endif
    234        
    235 #if ENABLE(DFG_JIT)
     237       
    236238        void createDFGDataIfNecessary()
    237239        {
     
    332334#endif
    333335
     336#if ENABLE(CLASSIC_INTERPRETER)
    334337        unsigned bytecodeOffset(Instruction* returnAddress)
    335338        {
    336             ASSERT(returnAddress >= instructions().begin() && returnAddress < instructions().end());
    337339            return static_cast<Instruction*>(returnAddress) - instructions().begin();
    338340        }
     341#endif
    339342
    340343        void setIsNumericCompareFunction(bool isNumericCompareFunction) { m_isNumericCompareFunction = isNumericCompareFunction; }
     
    374377        virtual JSObject* compileOptimized(ExecState*, ScopeChainNode*) = 0;
    375378        virtual void jettison() = 0;
    376         bool jitCompile(JSGlobalData& globalData)
    377         {
    378             if (getJITType() != JITCode::InterpreterThunk) {
    379                 ASSERT(getJITType() == JITCode::BaselineJIT);
    380                 return false;
    381             }
    382 #if ENABLE(JIT)
    383             jitCompileImpl(globalData);
    384             return true;
    385 #else
    386             UNUSED_PARAM(globalData);
    387             return false;
    388 #endif
    389         }
    390379        virtual CodeBlock* replacement() = 0;
    391380
     
    407396        bool hasOptimizedReplacement()
    408397        {
    409             ASSERT(JITCode::isBaselineCode(getJITType()));
     398            ASSERT(getJITType() == JITCode::BaselineJIT);
    410399            bool result = replacement()->getJITType() > getJITType();
    411400#if !ASSERT_DISABLED
     
    413402                ASSERT(replacement()->getJITType() == JITCode::DFGJIT);
    414403            else {
    415                 ASSERT(JITCode::isBaselineCode(replacement()->getJITType()));
     404                ASSERT(replacement()->getJITType() == JITCode::BaselineJIT);
    416405                ASSERT(replacement() == this);
    417406            }
     
    472461        void clearEvalCache();
    473462
     463#if ENABLE(CLASSIC_INTERPRETER)
    474464        void addPropertyAccessInstruction(unsigned propertyAccessInstruction)
    475465        {
    476             m_propertyAccessInstructions.append(propertyAccessInstruction);
     466            if (!m_globalData->canUseJIT())
     467                m_propertyAccessInstructions.append(propertyAccessInstruction);
    477468        }
    478469        void addGlobalResolveInstruction(unsigned globalResolveInstruction)
    479470        {
    480             m_globalResolveInstructions.append(globalResolveInstruction);
     471            if (!m_globalData->canUseJIT())
     472                m_globalResolveInstructions.append(globalResolveInstruction);
    481473        }
    482474        bool hasGlobalResolveInstructionAtBytecodeOffset(unsigned bytecodeOffset);
    483 #if ENABLE(LLINT)
    484         LLIntCallLinkInfo* addLLIntCallLinkInfo()
    485         {
    486             m_llintCallLinkInfos.append(LLIntCallLinkInfo());
    487             return &m_llintCallLinkInfos.last();
    488         }
    489475#endif
    490476#if ENABLE(JIT)
     
    495481        void addGlobalResolveInfo(unsigned globalResolveInstruction)
    496482        {
    497             m_globalResolveInfos.append(GlobalResolveInfo(globalResolveInstruction));
     483            if (m_globalData->canUseJIT())
     484                m_globalResolveInfos.append(GlobalResolveInfo(globalResolveInstruction));
    498485        }
    499486        GlobalResolveInfo& globalResolveInfo(int index) { return m_globalResolveInfos[index]; }
     
    506493        void addMethodCallLinkInfos(unsigned n) { ASSERT(m_globalData->canUseJIT()); m_methodCallLinkInfos.grow(n); }
    507494        MethodCallLinkInfo& methodCallLinkInfo(int index) { return m_methodCallLinkInfos[index]; }
    508         size_t numberOfMethodCallLinkInfos() { return m_methodCallLinkInfos.size(); }
    509495#endif
    510496       
     
    548534            return result;
    549535        }
    550         PredictedType valueProfilePredictionForBytecodeOffset(int bytecodeOffset)
    551         {
    552             return valueProfileForBytecodeOffset(bytecodeOffset)->computeUpdatedPrediction();
    553         }
    554536       
    555537        unsigned totalNumberOfValueProfiles()
     
    578560        bool likelyToTakeSlowCase(int bytecodeOffset)
    579561        {
    580             if (!numberOfRareCaseProfiles())
    581                 return false;
    582562            unsigned value = rareCaseProfileForBytecodeOffset(bytecodeOffset)->m_counter;
    583563            return value >= Options::likelyToTakeSlowCaseMinimumCount && static_cast<double>(value) / m_executionEntryCount >= Options::likelyToTakeSlowCaseThreshold;
     
    586566        bool couldTakeSlowCase(int bytecodeOffset)
    587567        {
    588             if (!numberOfRareCaseProfiles())
    589                 return false;
    590568            unsigned value = rareCaseProfileForBytecodeOffset(bytecodeOffset)->m_counter;
    591569            return value >= Options::couldTakeSlowCaseMinimumCount && static_cast<double>(value) / m_executionEntryCount >= Options::couldTakeSlowCaseThreshold;
     
    606584        bool likelyToTakeSpecialFastCase(int bytecodeOffset)
    607585        {
    608             if (!numberOfRareCaseProfiles())
    609                 return false;
    610586            unsigned specialFastCaseCount = specialFastCaseProfileForBytecodeOffset(bytecodeOffset)->m_counter;
    611587            return specialFastCaseCount >= Options::likelyToTakeSlowCaseMinimumCount && static_cast<double>(specialFastCaseCount) / m_executionEntryCount >= Options::likelyToTakeSlowCaseThreshold;
     
    614590        bool likelyToTakeDeepestSlowCase(int bytecodeOffset)
    615591        {
    616             if (!numberOfRareCaseProfiles())
    617                 return false;
    618592            unsigned slowCaseCount = rareCaseProfileForBytecodeOffset(bytecodeOffset)->m_counter;
    619593            unsigned specialFastCaseCount = specialFastCaseProfileForBytecodeOffset(bytecodeOffset)->m_counter;
     
    624598        bool likelyToTakeAnySlowCase(int bytecodeOffset)
    625599        {
    626             if (!numberOfRareCaseProfiles())
    627                 return false;
    628600            unsigned slowCaseCount = rareCaseProfileForBytecodeOffset(bytecodeOffset)->m_counter;
    629601            unsigned specialFastCaseCount = specialFastCaseProfileForBytecodeOffset(bytecodeOffset)->m_counter;
     
    723695        bool addFrequentExitSite(const DFG::FrequentExitSite& site)
    724696        {
    725             ASSERT(JITCode::isBaselineCode(getJITType()));
     697            ASSERT(getJITType() == JITCode::BaselineJIT);
    726698            return m_exitProfile.add(site);
    727699        }
     
    830802        void copyPostParseDataFrom(CodeBlock* alternative);
    831803        void copyPostParseDataFromAlternative();
    832        
    833         // Functions for controlling when JITting kicks in, in a mixed mode
    834         // execution world.
    835        
    836         void dontJITAnytimeSoon()
    837         {
    838             m_llintExecuteCounter = Options::executionCounterValueForDontJITAnytimeSoon;
    839         }
    840        
    841         void jitAfterWarmUp()
    842         {
    843             m_llintExecuteCounter = Options::executionCounterValueForJITAfterWarmUp;
    844         }
    845        
    846         void jitSoon()
    847         {
    848             m_llintExecuteCounter = Options::executionCounterValueForJITSoon;
    849         }
    850        
    851         int32_t llintExecuteCounter() const
    852         {
    853             return m_llintExecuteCounter;
    854         }
    855804       
    856805        // Functions for controlling when tiered compilation kicks in. This
     
    1046995
    1047996    protected:
    1048 #if ENABLE(JIT)
    1049         virtual void jitCompileImpl(JSGlobalData&) = 0;
    1050 #endif
    1051997        virtual void visitWeakReferences(SlotVisitor&);
    1052998        virtual void finalizeUnconditionally();
     
    11301076        unsigned m_sourceOffset;
    11311077
     1078#if ENABLE(CLASSIC_INTERPRETER)
    11321079        Vector<unsigned> m_propertyAccessInstructions;
    11331080        Vector<unsigned> m_globalResolveInstructions;
    1134 #if ENABLE(LLINT)
    1135         SegmentedVector<LLIntCallLinkInfo, 8> m_llintCallLinkInfos;
    1136         SentinelLinkedList<LLIntCallLinkInfo, BasicRawSentinelNode<LLIntCallLinkInfo> > m_incomingLLIntCalls;
    11371081#endif
    11381082#if ENABLE(JIT)
     
    11451089        SentinelLinkedList<CallLinkInfo, BasicRawSentinelNode<CallLinkInfo> > m_incomingCalls;
    11461090#endif
    1147 #if ENABLE(DFG_JIT) || ENABLE(LLINT)
     1091#if ENABLE(DFG_JIT)
    11481092        OwnPtr<CompactJITCodeMap> m_jitCodeMap;
    1149 #endif
    1150 #if ENABLE(DFG_JIT)
     1093       
    11511094        struct WeakReferenceTransition {
    11521095            WeakReferenceTransition() { }
     
    12111154        OwnPtr<CodeBlock> m_alternative;
    12121155       
    1213         int32_t m_llintExecuteCounter;
    1214        
    12151156        int32_t m_jitExecuteCounter;
    12161157        uint32_t m_speculativeSuccessCounter;
     
    12181159        uint8_t m_optimizationDelayCounter;
    12191160        uint8_t m_reoptimizationRetryCounter;
    1220        
     1161
    12211162        struct RareData {
    12221163           WTF_MAKE_FAST_ALLOCATED;
     
    12941235        virtual JSObject* compileOptimized(ExecState*, ScopeChainNode*);
    12951236        virtual void jettison();
    1296         virtual void jitCompileImpl(JSGlobalData&);
    12971237        virtual CodeBlock* replacement();
    12981238        virtual bool canCompileWithDFGInternal();
     
    13291269        virtual JSObject* compileOptimized(ExecState*, ScopeChainNode*);
    13301270        virtual void jettison();
    1331         virtual void jitCompileImpl(JSGlobalData&);
    13321271        virtual CodeBlock* replacement();
    13331272        virtual bool canCompileWithDFGInternal();
     
    13671306        virtual JSObject* compileOptimized(ExecState*, ScopeChainNode*);
    13681307        virtual void jettison();
    1369         virtual void jitCompileImpl(JSGlobalData&);
    13701308        virtual CodeBlock* replacement();
    13711309        virtual bool canCompileWithDFGInternal();
  • trunk/Source/JavaScriptCore/bytecode/GetByIdStatus.cpp

    r108309 r108358  
    2828
    2929#include "CodeBlock.h"
    30 #include "LowLevelInterpreter.h"
    3130
    3231namespace JSC {
    33 
    34 GetByIdStatus GetByIdStatus::computeFromLLInt(CodeBlock* profiledBlock, unsigned bytecodeIndex, Identifier& ident)
    35 {
    36     UNUSED_PARAM(profiledBlock);
    37     UNUSED_PARAM(bytecodeIndex);
    38     UNUSED_PARAM(ident);
    39 #if ENABLE(LLINT)
    40     Instruction* instruction = profiledBlock->instructions().begin() + bytecodeIndex;
    41    
    42     if (instruction[0].u.opcode == llint_op_method_check)
    43         instruction++;
    44 
    45     Structure* structure = instruction[4].u.structure.get();
    46     if (!structure)
    47         return GetByIdStatus(NoInformation, StructureSet(), notFound, false);
    48    
    49     size_t offset = structure->get(*profiledBlock->globalData(), ident);
    50     if (offset == notFound)
    51         return GetByIdStatus(NoInformation, StructureSet(), notFound, false);
    52    
    53     return GetByIdStatus(SimpleDirect, StructureSet(structure), offset, false);
    54 #else
    55     return GetByIdStatus(NoInformation, StructureSet(), notFound, false);
    56 #endif
    57 }
    5832
    5933GetByIdStatus GetByIdStatus::computeFor(CodeBlock* profiledBlock, unsigned bytecodeIndex, Identifier& ident)
     
    6337    UNUSED_PARAM(ident);
    6438#if ENABLE(JIT) && ENABLE(VALUE_PROFILER)
    65     if (!profiledBlock->numberOfStructureStubInfos())
    66         return computeFromLLInt(profiledBlock, bytecodeIndex, ident);
    67    
    6839    // First check if it makes either calls, in which case we want to be super careful, or
    6940    // if it's not set at all, in which case we punt.
    7041    StructureStubInfo& stubInfo = profiledBlock->getStubInfo(bytecodeIndex);
    7142    if (!stubInfo.seen)
    72         return computeFromLLInt(profiledBlock, bytecodeIndex, ident);
     43        return GetByIdStatus(NoInformation, StructureSet(), notFound);
    7344   
    7445    PolymorphicAccessStructureList* list;
     
    9061    for (int i = 0; i < listSize; ++i) {
    9162        if (!list->list[i].isDirect)
    92             return GetByIdStatus(MakesCalls, StructureSet(), notFound, true);
     63            return GetByIdStatus(MakesCalls, StructureSet(), notFound);
    9364    }
    9465   
    9566    // Next check if it takes slow case, in which case we want to be kind of careful.
    9667    if (profiledBlock->likelyToTakeSlowCase(bytecodeIndex))
    97         return GetByIdStatus(TakesSlowPath, StructureSet(), notFound, true);
     68        return GetByIdStatus(TakesSlowPath, StructureSet(), notFound);
    9869   
    9970    // Finally figure out if we can derive an access strategy.
    10071    GetByIdStatus result;
    101     result.m_wasSeenInJIT = true;
    10272    switch (stubInfo.accessType) {
    10373    case access_unset:
    104         return computeFromLLInt(profiledBlock, bytecodeIndex, ident);
     74        return GetByIdStatus(NoInformation, StructureSet(), notFound);
    10575       
    10676    case access_get_by_id_self: {
     
    161131    return result;
    162132#else // ENABLE(JIT)
    163     return GetByIdStatus(NoInformation, StructureSet(), notFound, false);
     133    return GetByIdStatus(NoInformation, StructureSet(), notFound);
    164134#endif // ENABLE(JIT)
    165135}
  • trunk/Source/JavaScriptCore/bytecode/GetByIdStatus.h

    r108309 r108358  
    5050    }
    5151   
    52     GetByIdStatus(State state, const StructureSet& structureSet, size_t offset, bool wasSeenInJIT)
     52    GetByIdStatus(State state, const StructureSet& structureSet, size_t offset)
    5353        : m_state(state)
    5454        , m_structureSet(structureSet)
    5555        , m_offset(offset)
    56         , m_wasSeenInJIT(wasSeenInJIT)
    5756    {
    5857        ASSERT((state == SimpleDirect) == (offset != notFound));
     
    7271    size_t offset() const { return m_offset; }
    7372   
    74     bool wasSeenInJIT() const { return m_wasSeenInJIT; }
    75    
    7673private:
    77     static GetByIdStatus computeFromLLInt(CodeBlock*, unsigned bytecodeIndex, Identifier&);
    78    
    7974    State m_state;
    8075    StructureSet m_structureSet;
    8176    size_t m_offset;
    82     bool m_wasSeenInJIT;
    8377};
    8478
  • trunk/Source/JavaScriptCore/bytecode/Instruction.h

    r108309 r108358  
    4949    class Structure;
    5050    class StructureChain;
    51     struct LLIntCallLinkInfo;
    5251    struct ValueProfile;
    5352
     
    148147
    149148    struct Instruction {
    150         Instruction()
    151         {
    152             u.jsCell.clear();
    153         }
    154        
    155149        Instruction(Opcode opcode)
    156150        {
     
    188182
    189183        Instruction(PropertySlot::GetValueFunc getterFunc) { u.getterFunc = getterFunc; }
    190        
    191         Instruction(LLIntCallLinkInfo* callLinkInfo) { u.callLinkInfo = callLinkInfo; }
    192184       
    193185        Instruction(ValueProfile* profile) { u.profile = profile; }
     
    200192            WriteBarrierBase<JSCell> jsCell;
    201193            PropertySlot::GetValueFunc getterFunc;
    202             LLIntCallLinkInfo* callLinkInfo;
    203194            ValueProfile* profile;
    204             void* pointer;
    205195        } u;
    206196       
  • trunk/Source/JavaScriptCore/bytecode/MethodCallLinkStatus.cpp

    r108309 r108358  
    3636    UNUSED_PARAM(bytecodeIndex);
    3737#if ENABLE(JIT) && ENABLE(VALUE_PROFILER)
    38     // NOTE: This does not have an LLInt fall-back because LLInt does not do any method
    39     // call link caching.
    40     if (!profiledBlock->numberOfMethodCallLinkInfos())
    41         return MethodCallLinkStatus();
    42    
    4338    MethodCallLinkInfo& methodCall = profiledBlock->getMethodCallLinkInfo(bytecodeIndex);
    4439   
  • trunk/Source/JavaScriptCore/bytecode/Opcode.cpp

    r108309 r108358  
    4040namespace JSC {
    4141
     42#if !defined(NDEBUG) || ENABLE(OPCODE_SAMPLING) || ENABLE(CODEBLOCK_SAMPLING) || ENABLE(OPCODE_STATS)
     43
    4244const char* const opcodeNames[] = {
    4345#define OPCODE_NAME_ENTRY(opcode, size) #opcode,
     
    4547#undef OPCODE_NAME_ENTRY
    4648};
     49
     50#endif
    4751
    4852#if ENABLE(OPCODE_STATS)
  • trunk/Source/JavaScriptCore/bytecode/Opcode.h

    r108309 r108358  
    124124        macro(op_put_by_id, 9) \
    125125        macro(op_put_by_id_transition, 9) \
    126         macro(op_put_by_id_transition_direct, 9) \
    127         macro(op_put_by_id_transition_normal, 9) \
    128126        macro(op_put_by_id_replace, 9) \
    129127        macro(op_put_by_id_generic, 9) \
     
    204202    #undef OPCODE_ID_ENUM
    205203
    206     const int maxOpcodeLength = 9;
    207204    const int numOpcodeIDs = op_end + 1;
    208205
     
    221218    #undef VERIFY_OPCODE_ID
    222219
    223 #if ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER) || ENABLE(LLINT)
     220#if ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER)
    224221#if COMPILER(RVCT) || COMPILER(INTEL)
    225222    typedef void* Opcode;
     
    230227    typedef OpcodeID Opcode;
    231228#endif
     229
     230#if !defined(NDEBUG) || ENABLE(OPCODE_SAMPLING) || ENABLE(CODEBLOCK_SAMPLING) || ENABLE(OPCODE_STATS)
    232231
    233232#define PADDING_STRING "                                "
     
    245244#undef PADDING_STRING_LENGTH
    246245#undef PADDING_STRING
     246
     247#endif
    247248
    248249#if ENABLE(OPCODE_STATS)
  • trunk/Source/JavaScriptCore/bytecode/PutByIdStatus.cpp

    r108309 r108358  
    2828
    2929#include "CodeBlock.h"
    30 #include "LowLevelInterpreter.h"
    3130#include "Structure.h"
    3231#include "StructureChain.h"
    3332
    3433namespace JSC {
    35 
    36 PutByIdStatus PutByIdStatus::computeFromLLInt(CodeBlock* profiledBlock, unsigned bytecodeIndex, Identifier& ident)
    37 {
    38     UNUSED_PARAM(profiledBlock);
    39     UNUSED_PARAM(bytecodeIndex);
    40     UNUSED_PARAM(ident);
    41 #if ENABLE(LLINT)
    42     Instruction* instruction = profiledBlock->instructions().begin() + bytecodeIndex;
    43 
    44     Structure* structure = instruction[4].u.structure.get();
    45     if (!structure)
    46         return PutByIdStatus(NoInformation, 0, 0, 0, notFound);
    47    
    48     if (instruction[0].u.opcode == llint_op_put_by_id) {
    49         size_t offset = structure->get(*profiledBlock->globalData(), ident);
    50         if (offset == notFound)
    51             return PutByIdStatus(NoInformation, 0, 0, 0, notFound);
    52        
    53         return PutByIdStatus(SimpleReplace, structure, 0, 0, offset);
    54     }
    55    
    56     ASSERT(instruction[0].u.opcode == llint_op_put_by_id_transition_direct
    57            || instruction[0].u.opcode == llint_op_put_by_id_transition_normal);
    58    
    59     Structure* newStructure = instruction[6].u.structure.get();
    60     StructureChain* chain = instruction[7].u.structureChain.get();
    61     ASSERT(newStructure);
    62     ASSERT(chain);
    63    
    64     size_t offset = newStructure->get(*profiledBlock->globalData(), ident);
    65     if (offset == notFound)
    66         return PutByIdStatus(NoInformation, 0, 0, 0, notFound);
    67    
    68     return PutByIdStatus(SimpleTransition, structure, newStructure, chain, offset);
    69 #else
    70     return PutByIdStatus(NoInformation, 0, 0, 0, notFound);
    71 #endif
    72 }
    7334
    7435PutByIdStatus PutByIdStatus::computeFor(CodeBlock* profiledBlock, unsigned bytecodeIndex, Identifier& ident)
     
    7839    UNUSED_PARAM(ident);
    7940#if ENABLE(JIT) && ENABLE(VALUE_PROFILER)
    80     if (!profiledBlock->numberOfStructureStubInfos())
    81         return computeFromLLInt(profiledBlock, bytecodeIndex, ident);
    82    
    8341    if (profiledBlock->likelyToTakeSlowCase(bytecodeIndex))
    8442        return PutByIdStatus(TakesSlowPath, 0, 0, 0, notFound);
     
    8644    StructureStubInfo& stubInfo = profiledBlock->getStubInfo(bytecodeIndex);
    8745    if (!stubInfo.seen)
    88         return computeFromLLInt(profiledBlock, bytecodeIndex, ident);
     46        return PutByIdStatus(NoInformation, 0, 0, 0, notFound);
    8947   
    9048    switch (stubInfo.accessType) {
    9149    case access_unset:
    92         return computeFromLLInt(profiledBlock, bytecodeIndex, ident);
     50        return PutByIdStatus(NoInformation, 0, 0, 0, notFound);
    9351       
    9452    case access_put_by_id_replace: {
  • trunk/Source/JavaScriptCore/bytecode/PutByIdStatus.h

    r108309 r108358  
    9494   
    9595private:
    96     static PutByIdStatus computeFromLLInt(CodeBlock*, unsigned bytecodeIndex, Identifier&);
    97    
    9896    State m_state;
    9997    Structure* m_oldStructure;
  • trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp

    r108309 r108358  
    3636#include "JSFunction.h"
    3737#include "Interpreter.h"
    38 #include "LowLevelInterpreter.h"
    3938#include "ScopeChain.h"
    4039#include "StrongInlines.h"
     
    12801279        m_codeBlock->addGlobalResolveInfo(instructions().size());
    12811280#endif
     1281#if ENABLE(CLASSIC_INTERPRETER)
    12821282        m_codeBlock->addGlobalResolveInstruction(instructions().size());
     1283#endif
    12831284        bool dynamic = resolveResult.isDynamic() && resolveResult.depth();
    12841285        ValueProfile* profile = emitProfiledOpcode(dynamic ? op_resolve_global_dynamic : op_resolve_global);
     
    13841385    }
    13851386
     1387
     1388
     1389
    13861390    ValueProfile* profile = emitProfiledOpcode(op_resolve_with_base);
    13871391    instructions().append(baseDst->index());
     
    14911495RegisterID* BytecodeGenerator::emitGetById(RegisterID* dst, RegisterID* base, const Identifier& property)
    14921496{
     1497#if ENABLE(CLASSIC_INTERPRETER)
    14931498    m_codeBlock->addPropertyAccessInstruction(instructions().size());
     1499#endif
    14941500
    14951501    ValueProfile* profile = emitProfiledOpcode(op_get_by_id);
     
    15171523RegisterID* BytecodeGenerator::emitPutById(RegisterID* base, const Identifier& property, RegisterID* value)
    15181524{
     1525#if ENABLE(CLASSIC_INTERPRETER)
    15191526    m_codeBlock->addPropertyAccessInstruction(instructions().size());
     1527#endif
    15201528
    15211529    emitOpcode(op_put_by_id);
     
    15331541RegisterID* BytecodeGenerator::emitDirectPutById(RegisterID* base, const Identifier& property, RegisterID* value)
    15341542{
     1543#if ENABLE(CLASSIC_INTERPRETER)
    15351544    m_codeBlock->addPropertyAccessInstruction(instructions().size());
     1545#endif
    15361546   
    15371547    emitOpcode(op_put_by_id);
     
    18141824    instructions().append(callArguments.argumentCountIncludingThis()); // argCount
    18151825    instructions().append(callArguments.registerOffset()); // registerOffset
    1816 #if ENABLE(LLINT)
    1817     instructions().append(m_codeBlock->addLLIntCallLinkInfo());
    1818 #else
    18191826    instructions().append(0);
    1820 #endif
    18211827    instructions().append(0);
    18221828    if (dst != ignoredResult()) {
     
    19221928    instructions().append(callArguments.argumentCountIncludingThis()); // argCount
    19231929    instructions().append(callArguments.registerOffset()); // registerOffset
    1924 #if ENABLE(LLINT)
    1925     instructions().append(m_codeBlock->addLLIntCallLinkInfo());
    1926 #else
    19271930    instructions().append(0);
    1928 #endif
    19291931    instructions().append(0);
    19301932    if (dst != ignoredResult()) {
     
    21872189    m_usesExceptions = true;
    21882190#if ENABLE(JIT)
    2189 #if ENABLE(LLINT)
    2190     HandlerInfo info = { start->bind(0, 0), end->bind(0, 0), instructions().size(), m_dynamicScopeDepth + m_baseScopeDepth, CodeLocationLabel(MacroAssemblerCodePtr::createFromExecutableAddress(bitwise_cast<void*>(&llint_op_catch))) };
    2191 #else
    21922191    HandlerInfo info = { start->bind(0, 0), end->bind(0, 0), instructions().size(), m_dynamicScopeDepth + m_baseScopeDepth, CodeLocationLabel() };
    2193 #endif
    21942192#else
    21952193    HandlerInfo info = { start->bind(0, 0), end->bind(0, 0), instructions().size(), m_dynamicScopeDepth + m_baseScopeDepth };
  • trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp

    r108309 r108358  
    586586        UNUSED_PARAM(nodeIndex);
    587587       
    588         PredictedType prediction = m_inlineStackTop->m_profiledBlock->valueProfilePredictionForBytecodeOffset(bytecodeIndex);
     588        ValueProfile* profile = m_inlineStackTop->m_profiledBlock->valueProfileForBytecodeOffset(bytecodeIndex);
     589        ASSERT(profile);
     590        PredictedType prediction = profile->computeUpdatedPrediction();
    589591#if DFG_ENABLE(DEBUG_VERBOSE)
    590592        dataLog("Dynamic [@%u, bc#%u] prediction: %s\n", nodeIndex, bytecodeIndex, predictionToString(prediction));
     
    10211023    // If we get here then it looks like we should definitely inline this code. Proceed
    10221024    // with parsing the code to get bytecode, so that we can then parse the bytecode.
    1023     // Note that if LLInt is enabled, the bytecode will always be available. Also note
    1024     // that if LLInt is enabled, we may inline a code block that has never been JITted
    1025     // before!
    10261025    CodeBlock* codeBlock = m_codeBlockCache.get(CodeBlockKey(executable, kind), expectedFunction->scope());
    10271026    if (!codeBlock)
     
    17241723           
    17251724            if (methodCallStatus.isSet()
    1726                 && !getByIdStatus.wasSeenInJIT()
     1725                && !getByIdStatus.isSet()
    17271726                && !m_inlineStackTop->m_exitProfile.hasExitSite(m_currentIndex, BadCache)) {
    17281727                // It's monomorphic as far as we can tell, since the method_check was linked
     
    17931792            NEXT_OPCODE(op_get_by_id);
    17941793        }
    1795         case op_put_by_id:
    1796         case op_put_by_id_transition_direct:
    1797         case op_put_by_id_transition_normal: {
     1794        case op_put_by_id: {
    17981795            NodeIndex value = get(currentInstruction[3].u.operand);
    17991796            NodeIndex base = get(currentInstruction[1].u.operand);
  • trunk/Source/JavaScriptCore/dfg/DFGCapabilities.h

    r108309 r108358  
    112112    case op_get_by_id:
    113113    case op_put_by_id:
    114     case op_put_by_id_transition_direct:
    115     case op_put_by_id_transition_normal:
    116114    case op_get_global_var:
    117115    case op_put_global_var:
  • trunk/Source/JavaScriptCore/dfg/DFGOSRExitCompiler.cpp

    r108309 r108358  
    4949    OSRExit& exit = codeBlock->osrExit(exitIndex);
    5050   
    51     // Make sure all code on our inline stack is JIT compiled. This is necessary since
    52     // we may opt to inline a code block even before it had ever been compiled by the
    53     // JIT, but our OSR exit infrastructure currently only works if the target of the
    54     // OSR exit is JIT code. This could be changed since there is nothing particularly
    55     // hard about doing an OSR exit into the interpreter, but for now this seems to make
    56     // sense in that if we're OSR exiting from inlined code of a DFG code block, then
    57     // probably it's a good sign that the thing we're exiting into is hot. Even more
    58     // interestingly, since the code was inlined, it may never otherwise get JIT
    59     // compiled since the act of inlining it may ensure that it otherwise never runs.
    60     for (CodeOrigin codeOrigin = exit.m_codeOrigin; codeOrigin.inlineCallFrame; codeOrigin = codeOrigin.inlineCallFrame->caller) {
    61         static_cast<FunctionExecutable*>(codeOrigin.inlineCallFrame->executable.get())
    62             ->baselineCodeBlockFor(codeOrigin.inlineCallFrame->isCall ? CodeForCall : CodeForConstruct)
    63             ->jitCompile(*globalData);
    64     }
    65    
    6651    SpeculationRecovery* recovery = 0;
    6752    if (exit.m_recoveryIndex)
  • trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp

    r108326 r108358  
    2727#include "DFGOperations.h"
    2828
     29#if ENABLE(DFG_JIT)
     30
    2931#include "CodeBlock.h"
    3032#include "DFGOSRExit.h"
    3133#include "DFGRepatch.h"
    32 #include "HostCallReturnValue.h"
    3334#include "GetterSetter.h"
    3435#include "InlineASM.h"
     
    3738#include "JSGlobalData.h"
    3839#include "Operations.h"
    39 
    40 #if ENABLE(DFG_JIT)
    4140
    4241#if CPU(X86_64)
     
    739738}
    740739
    741 static void* handleHostCall(ExecState* execCallee, JSValue callee, CodeSpecializationKind kind)
    742 {
    743     ExecState* exec = execCallee->callerFrame();
    744     JSGlobalData* globalData = &exec->globalData();
    745 
    746     execCallee->setScopeChain(exec->scopeChain());
    747     execCallee->setCodeBlock(0);
    748     execCallee->clearReturnPC();
    749 
    750     if (kind == CodeForCall) {
    751         CallData callData;
    752         CallType callType = getCallData(callee, callData);
    753    
    754         ASSERT(callType != CallTypeJS);
    755    
    756         if (callType == CallTypeHost) {
    757             globalData->hostCallReturnValue = JSValue::decode(callData.native.function(execCallee));
    758             if (globalData->exception)
    759                 return 0;
    760 
    761             return reinterpret_cast<void*>(getHostCallReturnValue);
    762         }
    763    
    764         ASSERT(callType == CallTypeNone);
    765         exec->globalData().exception = createNotAFunctionError(exec, callee);
    766         return 0;
    767     }
    768 
    769     ASSERT(kind == CodeForConstruct);
    770    
    771     ConstructData constructData;
    772     ConstructType constructType = getConstructData(callee, constructData);
    773    
    774     ASSERT(constructType != ConstructTypeJS);
    775    
    776     if (constructType == ConstructTypeHost) {
    777         globalData->hostCallReturnValue = JSValue::decode(constructData.native.function(execCallee));
    778         if (globalData->exception)
    779             return 0;
    780 
    781         return reinterpret_cast<void*>(getHostCallReturnValue);
    782     }
    783    
    784     ASSERT(constructType == ConstructTypeNone);
    785     exec->globalData().exception = createNotAConstructorError(exec, callee);
    786     return 0;
    787 }
    788 
    789 inline void* linkFor(ExecState* execCallee, ReturnAddressPtr returnAddress, CodeSpecializationKind kind)
    790 {
    791     ExecState* exec = execCallee->callerFrame();
    792     JSGlobalData* globalData = &exec->globalData();
    793     NativeCallFrameTracer tracer(globalData, exec);
    794    
    795     JSValue calleeAsValue = execCallee->calleeAsValue();
    796     JSCell* calleeAsFunctionCell = getJSFunction(calleeAsValue);
    797     if (!calleeAsFunctionCell)
    798         return handleHostCall(execCallee, calleeAsValue, kind);
    799 
    800     JSFunction* callee = asFunction(calleeAsFunctionCell);
    801     execCallee->setScopeChain(callee->scopeUnchecked());
    802     ExecutableBase* executable = callee->executable();
    803 
    804     MacroAssemblerCodePtr codePtr;
    805     CodeBlock* codeBlock = 0;
    806     if (executable->isHostFunction())
    807         codePtr = executable->generatedJITCodeFor(kind).addressForCall();
    808     else {
    809         FunctionExecutable* functionExecutable = static_cast<FunctionExecutable*>(executable);
    810         JSObject* error = functionExecutable->compileFor(execCallee, callee->scope(), kind);
    811         if (error) {
    812             globalData->exception = createStackOverflowError(exec);
    813             return 0;
    814         }
    815         codeBlock = &functionExecutable->generatedBytecodeFor(kind);
    816         if (execCallee->argumentCountIncludingThis() < static_cast<size_t>(codeBlock->numParameters()))
    817             codePtr = functionExecutable->generatedJITCodeWithArityCheckFor(kind);
    818         else
    819             codePtr = functionExecutable->generatedJITCodeFor(kind).addressForCall();
    820     }
    821     CallLinkInfo& callLinkInfo = exec->codeBlock()->getCallLinkInfo(returnAddress);
    822     if (!callLinkInfo.seenOnce())
    823         callLinkInfo.setSeen();
    824     else
    825         dfgLinkFor(execCallee, callLinkInfo, codeBlock, callee, codePtr, kind);
    826     return codePtr.executableAddress();
    827 }
    828 
    829 P_FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_E(operationLinkCall);
    830 void* DFG_OPERATION operationLinkCallWithReturnAddress(ExecState* execCallee, ReturnAddressPtr returnAddress)
    831 {
    832     return linkFor(execCallee, returnAddress, CodeForCall);
    833 }
    834 
    835 P_FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_E(operationLinkConstruct);
    836 void* DFG_OPERATION operationLinkConstructWithReturnAddress(ExecState* execCallee, ReturnAddressPtr returnAddress)
    837 {
    838     return linkFor(execCallee, returnAddress, CodeForConstruct);
    839 }
    840 
    841 inline void* virtualFor(ExecState* execCallee, CodeSpecializationKind kind)
    842 {
    843     ExecState* exec = execCallee->callerFrame();
    844     JSGlobalData* globalData = &exec->globalData();
    845     NativeCallFrameTracer tracer(globalData, exec);
    846 
    847     JSValue calleeAsValue = execCallee->calleeAsValue();
    848     JSCell* calleeAsFunctionCell = getJSFunction(calleeAsValue);
    849     if (UNLIKELY(!calleeAsFunctionCell))
    850         return handleHostCall(execCallee, calleeAsValue, kind);
    851    
    852     JSFunction* function = asFunction(calleeAsFunctionCell);
    853     execCallee->setScopeChain(function->scopeUnchecked());
    854     ExecutableBase* executable = function->executable();
    855     if (UNLIKELY(!executable->hasJITCodeFor(kind))) {
    856         FunctionExecutable* functionExecutable = static_cast<FunctionExecutable*>(executable);
    857         JSObject* error = functionExecutable->compileFor(execCallee, function->scope(), kind);
    858         if (error) {
    859             exec->globalData().exception = error;
    860             return 0;
    861         }
    862     }
    863     return executable->generatedJITCodeWithArityCheckFor(kind).executableAddress();
    864 }
    865 
    866 void* DFG_OPERATION operationVirtualCall(ExecState* execCallee)
    867 {   
    868     return virtualFor(execCallee, CodeForCall);
    869 }
    870 
    871 void* DFG_OPERATION operationVirtualConstruct(ExecState* execCallee)
    872 {
    873     return virtualFor(execCallee, CodeForConstruct);
    874 }
    875 
    876 EncodedJSValue DFG_OPERATION operationResolve(ExecState* exec, Identifier* propertyName)
    877 {
    878     JSGlobalData* globalData = &exec->globalData();
    879     NativeCallFrameTracer tracer(globalData, exec);
    880    
    881     ScopeChainNode* scopeChain = exec->scopeChain();
    882     ScopeChainIterator iter = scopeChain->begin();
    883     ScopeChainIterator end = scopeChain->end();
    884     ASSERT(iter != end);
    885 
    886     do {
    887         JSObject* record = iter->get();
    888         PropertySlot slot(record);
    889         if (record->getPropertySlot(exec, *propertyName, slot))
    890             return JSValue::encode(slot.getValue(exec, *propertyName));
    891     } while (++iter != end);
    892 
    893     return throwVMError(exec, createUndefinedVariableError(exec, *propertyName));
    894 }
    895 
    896 EncodedJSValue DFG_OPERATION operationResolveBase(ExecState* exec, Identifier* propertyName)
    897 {
    898     JSGlobalData* globalData = &exec->globalData();
    899     NativeCallFrameTracer tracer(globalData, exec);
    900    
    901     return JSValue::encode(resolveBase(exec, *propertyName, exec->scopeChain(), false));
    902 }
    903 
    904 EncodedJSValue DFG_OPERATION operationResolveBaseStrictPut(ExecState* exec, Identifier* propertyName)
    905 {
    906     JSGlobalData* globalData = &exec->globalData();
    907     NativeCallFrameTracer tracer(globalData, exec);
    908    
    909     JSValue base = resolveBase(exec, *propertyName, exec->scopeChain(), true);
    910     if (!base)
    911         throwError(exec, createErrorForInvalidGlobalAssignment(exec, propertyName->ustring()));
    912     return JSValue::encode(base);
    913 }
    914 
    915 EncodedJSValue DFG_OPERATION operationResolveGlobal(ExecState* exec, GlobalResolveInfo* resolveInfo, Identifier* propertyName)
    916 {
    917     JSGlobalData* globalData = &exec->globalData();
    918     NativeCallFrameTracer tracer(globalData, exec);
    919    
    920     JSGlobalObject* globalObject = exec->lexicalGlobalObject();
    921 
    922     PropertySlot slot(globalObject);
    923     if (globalObject->getPropertySlot(exec, *propertyName, slot)) {
    924         JSValue result = slot.getValue(exec, *propertyName);
    925 
    926         if (slot.isCacheableValue() && !globalObject->structure()->isUncacheableDictionary() && slot.slotBase() == globalObject) {
    927             resolveInfo->structure.set(exec->globalData(), exec->codeBlock()->ownerExecutable(), globalObject->structure());
    928             resolveInfo->offset = slot.cachedOffset();
    929         }
    930 
    931         return JSValue::encode(result);
    932     }
    933 
    934     return throwVMError(exec, createUndefinedVariableError(exec, *propertyName));
    935 }
    936 
    937 EncodedJSValue DFG_OPERATION operationToPrimitive(ExecState* exec, EncodedJSValue value)
    938 {
    939     JSGlobalData* globalData = &exec->globalData();
    940     NativeCallFrameTracer tracer(globalData, exec);
    941    
    942     return JSValue::encode(JSValue::decode(value).toPrimitive(exec));
    943 }
    944 
    945 EncodedJSValue DFG_OPERATION operationStrCat(ExecState* exec, void* start, size_t size)
    946 {
    947     JSGlobalData* globalData = &exec->globalData();
    948     NativeCallFrameTracer tracer(globalData, exec);
    949    
    950     return JSValue::encode(jsString(exec, static_cast<Register*>(start), size));
    951 }
    952 
    953 EncodedJSValue DFG_OPERATION operationNewArray(ExecState* exec, void* start, size_t size)
    954 {
    955     JSGlobalData* globalData = &exec->globalData();
    956     NativeCallFrameTracer tracer(globalData, exec);
    957    
    958     return JSValue::encode(constructArray(exec, static_cast<JSValue*>(start), size));
    959 }
    960 
    961 EncodedJSValue DFG_OPERATION operationNewArrayBuffer(ExecState* exec, size_t start, size_t size)
    962 {
    963     return JSValue::encode(constructArray(exec, exec->codeBlock()->constantBuffer(start), size));
    964 }
    965 
    966 EncodedJSValue DFG_OPERATION operationNewRegexp(ExecState* exec, void* regexpPtr)
    967 {
    968     RegExp* regexp = static_cast<RegExp*>(regexpPtr);
    969     if (!regexp->isValid()) {
    970         throwError(exec, createSyntaxError(exec, "Invalid flags supplied to RegExp constructor."));
    971         return JSValue::encode(jsUndefined());
    972     }
    973    
    974     return JSValue::encode(RegExpObject::create(exec->globalData(), exec->lexicalGlobalObject(), exec->lexicalGlobalObject()->regExpStructure(), regexp));
    975 }
    976 
    977 DFGHandlerEncoded DFG_OPERATION lookupExceptionHandler(ExecState* exec, uint32_t callIndex)
    978 {
    979     JSGlobalData* globalData = &exec->globalData();
    980     NativeCallFrameTracer tracer(globalData, exec);
    981    
    982     JSValue exceptionValue = exec->exception();
    983     ASSERT(exceptionValue);
    984 
    985     unsigned vPCIndex = exec->codeBlock()->bytecodeOffsetForCallAtIndex(callIndex);
    986     HandlerInfo* handler = exec->globalData().interpreter->throwException(exec, exceptionValue, vPCIndex);
    987 
    988     void* catchRoutine = handler ? handler->nativeCode.executableAddress() : (void*)ctiOpThrowNotCaught;
    989     ASSERT(catchRoutine);
    990     return dfgHandlerEncoded(exec, catchRoutine);
    991 }
    992 
    993 DFGHandlerEncoded DFG_OPERATION lookupExceptionHandlerInStub(ExecState* exec, StructureStubInfo* stubInfo)
    994 {
    995     JSGlobalData* globalData = &exec->globalData();
    996     NativeCallFrameTracer tracer(globalData, exec);
    997    
    998     JSValue exceptionValue = exec->exception();
    999     ASSERT(exceptionValue);
    1000    
    1001     CodeOrigin codeOrigin = stubInfo->codeOrigin;
    1002     while (codeOrigin.inlineCallFrame)
    1003         codeOrigin = codeOrigin.inlineCallFrame->caller;
    1004 
    1005     HandlerInfo* handler = exec->globalData().interpreter->throwException(exec, exceptionValue, codeOrigin.bytecodeIndex);
    1006 
    1007     void* catchRoutine = handler ? handler->nativeCode.executableAddress() : (void*)ctiOpThrowNotCaught;
    1008     ASSERT(catchRoutine);
    1009     return dfgHandlerEncoded(exec, catchRoutine);
    1010 }
    1011 
    1012 double DFG_OPERATION dfgConvertJSValueToNumber(ExecState* exec, EncodedJSValue value)
    1013 {
    1014     JSGlobalData* globalData = &exec->globalData();
    1015     NativeCallFrameTracer tracer(globalData, exec);
    1016    
    1017     return JSValue::decode(value).toNumber(exec);
    1018 }
    1019 
    1020 size_t DFG_OPERATION dfgConvertJSValueToInt32(ExecState* exec, EncodedJSValue value)
    1021 {
    1022     JSGlobalData* globalData = &exec->globalData();
    1023     NativeCallFrameTracer tracer(globalData, exec);
    1024    
    1025     // toInt32/toUInt32 return the same value; we want the value zero extended to fill the register.
    1026     return JSValue::decode(value).toUInt32(exec);
    1027 }
    1028 
    1029 size_t DFG_OPERATION dfgConvertJSValueToBoolean(ExecState* exec, EncodedJSValue encodedOp)
    1030 {
    1031     JSGlobalData* globalData = &exec->globalData();
    1032     NativeCallFrameTracer tracer(globalData, exec);
    1033    
    1034     return JSValue::decode(encodedOp).toBoolean(exec);
    1035 }
    1036 
    1037 #if DFG_ENABLE(VERBOSE_SPECULATION_FAILURE)
    1038 void DFG_OPERATION debugOperationPrintSpeculationFailure(ExecState* exec, void* debugInfoRaw)
    1039 {
    1040     JSGlobalData* globalData = &exec->globalData();
    1041     NativeCallFrameTracer tracer(globalData, exec);
    1042    
    1043     SpeculationFailureDebugInfo* debugInfo = static_cast<SpeculationFailureDebugInfo*>(debugInfoRaw);
    1044     CodeBlock* codeBlock = debugInfo->codeBlock;
    1045     CodeBlock* alternative = codeBlock->alternative();
    1046     dataLog("Speculation failure in %p at @%u with executeCounter = %d, reoptimizationRetryCounter = %u, optimizationDelayCounter = %u, success/fail %u/%u\n", codeBlock, debugInfo->nodeIndex, alternative ? alternative->jitExecuteCounter() : 0, alternative ? alternative->reoptimizationRetryCounter() : 0, alternative ? alternative->optimizationDelayCounter() : 0, codeBlock->speculativeSuccessCounter(), codeBlock->speculativeFailCounter());
    1047 }
    1048 #endif
    1049 
    1050 } // extern "C"
    1051 } } // namespace JSC::DFG
    1052 
    1053 #endif
    1054 
    1055 #if COMPILER(GCC)
    1056 
    1057 namespace JSC {
     740EncodedJSValue DFG_OPERATION getHostCallReturnValue();
     741EncodedJSValue DFG_OPERATION getHostCallReturnValueWithExecState(ExecState*);
    1058742
    1059743#if CPU(X86_64)
     
    1090774#endif
    1091775
    1092 extern "C" EncodedJSValue HOST_CALL_RETURN_VALUE_OPTION getHostCallReturnValueWithExecState(ExecState* exec)
    1093 {
    1094     if (!exec)
    1095         return JSValue::encode(JSValue());
     776EncodedJSValue DFG_OPERATION getHostCallReturnValueWithExecState(ExecState* exec)
     777{
     778    JSGlobalData* globalData = &exec->globalData();
     779    NativeCallFrameTracer tracer(globalData, exec);
     780   
    1096781    return JSValue::encode(exec->globalData().hostCallReturnValue);
    1097782}
    1098783
    1099 } // namespace JSC
    1100 
    1101 #endif // COMPILER(GCC)
    1102 
     784static void* handleHostCall(ExecState* execCallee, JSValue callee, CodeSpecializationKind kind)
     785{
     786    ExecState* exec = execCallee->callerFrame();
     787    JSGlobalData* globalData = &exec->globalData();
     788
     789    execCallee->setScopeChain(exec->scopeChain());
     790    execCallee->setCodeBlock(0);
     791
     792    if (kind == CodeForCall) {
     793        CallData callData;
     794        CallType callType = getCallData(callee, callData);
     795   
     796        ASSERT(callType != CallTypeJS);
     797   
     798        if (callType == CallTypeHost) {
     799            globalData->hostCallReturnValue = JSValue::decode(callData.native.function(execCallee));
     800            if (globalData->exception)
     801                return 0;
     802
     803            return reinterpret_cast<void*>(getHostCallReturnValue);
     804        }
     805   
     806        ASSERT(callType == CallTypeNone);
     807        exec->globalData().exception = createNotAFunctionError(exec, callee);
     808        return 0;
     809    }
     810
     811    ASSERT(kind == CodeForConstruct);
     812   
     813    ConstructData constructData;
     814    ConstructType constructType = getConstructData(callee, constructData);
     815   
     816    ASSERT(constructType != ConstructTypeJS);
     817   
     818    if (constructType == ConstructTypeHost) {
     819        globalData->hostCallReturnValue = JSValue::decode(constructData.native.function(execCallee));
     820        if (globalData->exception)
     821            return 0;
     822
     823        return reinterpret_cast<void*>(getHostCallReturnValue);
     824    }
     825   
     826    ASSERT(constructType == ConstructTypeNone);
     827    exec->globalData().exception = createNotAConstructorError(exec, callee);
     828    return 0;
     829}
     830
     831inline void* linkFor(ExecState* execCallee, ReturnAddressPtr returnAddress, CodeSpecializationKind kind)
     832{
     833    ExecState* exec = execCallee->callerFrame();
     834    JSGlobalData* globalData = &exec->globalData();
     835    NativeCallFrameTracer tracer(globalData, exec);
     836   
     837    JSValue calleeAsValue = execCallee->calleeAsValue();
     838    JSCell* calleeAsFunctionCell = getJSFunction(calleeAsValue);
     839    if (!calleeAsFunctionCell)
     840        return handleHostCall(execCallee, calleeAsValue, kind);
     841
     842    JSFunction* callee = asFunction(calleeAsFunctionCell);
     843    execCallee->setScopeChain(callee->scopeUnchecked());
     844    ExecutableBase* executable = callee->executable();
     845
     846    MacroAssemblerCodePtr codePtr;
     847    CodeBlock* codeBlock = 0;
     848    if (executable->isHostFunction())
     849        codePtr = executable->generatedJITCodeFor(kind).addressForCall();
     850    else {
     851        FunctionExecutable* functionExecutable = static_cast<FunctionExecutable*>(executable);
     852        JSObject* error = functionExecutable->compileFor(execCallee, callee->scope(), kind);
     853        if (error) {
     854            globalData->exception = createStackOverflowError(exec);
     855            return 0;
     856        }
     857        codeBlock = &functionExecutable->generatedBytecodeFor(kind);
     858        if (execCallee->argumentCountIncludingThis() < static_cast<size_t>(codeBlock->numParameters()))
     859            codePtr = functionExecutable->generatedJITCodeWithArityCheckFor(kind);
     860        else
     861            codePtr = functionExecutable->generatedJITCodeFor(kind).addressForCall();
     862    }
     863    CallLinkInfo& callLinkInfo = exec->codeBlock()->getCallLinkInfo(returnAddress);
     864    if (!callLinkInfo.seenOnce())
     865        callLinkInfo.setSeen();
     866    else
     867        dfgLinkFor(execCallee, callLinkInfo, codeBlock, callee, codePtr, kind);
     868    return codePtr.executableAddress();
     869}
     870
     871P_FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_E(operationLinkCall);
     872void* DFG_OPERATION operationLinkCallWithReturnAddress(ExecState* execCallee, ReturnAddressPtr returnAddress)
     873{
     874    return linkFor(execCallee, returnAddress, CodeForCall);
     875}
     876
     877P_FUNCTION_WRAPPER_WITH_RETURN_ADDRESS_E(operationLinkConstruct);
     878void* DFG_OPERATION operationLinkConstructWithReturnAddress(ExecState* execCallee, ReturnAddressPtr returnAddress)
     879{
     880    return linkFor(execCallee, returnAddress, CodeForConstruct);
     881}
     882
     883inline void* virtualFor(ExecState* execCallee, CodeSpecializationKind kind)
     884{
     885    ExecState* exec = execCallee->callerFrame();
     886    JSGlobalData* globalData = &exec->globalData();
     887    NativeCallFrameTracer tracer(globalData, exec);
     888
     889    JSValue calleeAsValue = execCallee->calleeAsValue();
     890    JSCell* calleeAsFunctionCell = getJSFunction(calleeAsValue);
     891    if (UNLIKELY(!calleeAsFunctionCell))
     892        return handleHostCall(execCallee, calleeAsValue, kind);
     893   
     894    JSFunction* function = asFunction(calleeAsFunctionCell);
     895    execCallee->setScopeChain(function->scopeUnchecked());
     896    ExecutableBase* executable = function->executable();
     897    if (UNLIKELY(!executable->hasJITCodeFor(kind))) {
     898        FunctionExecutable* functionExecutable = static_cast<FunctionExecutable*>(executable);
     899        JSObject* error = functionExecutable->compileFor(execCallee, function->scope(), kind);
     900        if (error) {
     901            exec->globalData().exception = error;
     902            return 0;
     903        }
     904    }
     905    return executable->generatedJITCodeWithArityCheckFor(kind).executableAddress();
     906}
     907
     908void* DFG_OPERATION operationVirtualCall(ExecState* execCallee)
     909{   
     910    return virtualFor(execCallee, CodeForCall);
     911}
     912
     913void* DFG_OPERATION operationVirtualConstruct(ExecState* execCallee)
     914{
     915    return virtualFor(execCallee, CodeForConstruct);
     916}
     917
     918EncodedJSValue DFG_OPERATION operationResolve(ExecState* exec, Identifier* propertyName)
     919{
     920    JSGlobalData* globalData = &exec->globalData();
     921    NativeCallFrameTracer tracer(globalData, exec);
     922   
     923    ScopeChainNode* scopeChain = exec->scopeChain();
     924    ScopeChainIterator iter = scopeChain->begin();
     925    ScopeChainIterator end = scopeChain->end();
     926    ASSERT(iter != end);
     927
     928    do {
     929        JSObject* record = iter->get();
     930        PropertySlot slot(record);
     931        if (record->getPropertySlot(exec, *propertyName, slot))
     932            return JSValue::encode(slot.getValue(exec, *propertyName));
     933    } while (++iter != end);
     934
     935    return throwVMError(exec, createUndefinedVariableError(exec, *propertyName));
     936}
     937
     938EncodedJSValue DFG_OPERATION operationResolveBase(ExecState* exec, Identifier* propertyName)
     939{
     940    JSGlobalData* globalData = &exec->globalData();
     941    NativeCallFrameTracer tracer(globalData, exec);
     942   
     943    return JSValue::encode(resolveBase(exec, *propertyName, exec->scopeChain(), false));
     944}
     945
     946EncodedJSValue DFG_OPERATION operationResolveBaseStrictPut(ExecState* exec, Identifier* propertyName)
     947{
     948    JSGlobalData* globalData = &exec->globalData();
     949    NativeCallFrameTracer tracer(globalData, exec);
     950   
     951    JSValue base = resolveBase(exec, *propertyName, exec->scopeChain(), true);
     952    if (!base)
     953        throwError(exec, createErrorForInvalidGlobalAssignment(exec, propertyName->ustring()));
     954    return JSValue::encode(base);
     955}
     956
     957EncodedJSValue DFG_OPERATION operationResolveGlobal(ExecState* exec, GlobalResolveInfo* resolveInfo, Identifier* propertyName)
     958{
     959    JSGlobalData* globalData = &exec->globalData();
     960    NativeCallFrameTracer tracer(globalData, exec);
     961   
     962    JSGlobalObject* globalObject = exec->lexicalGlobalObject();
     963
     964    PropertySlot slot(globalObject);
     965    if (globalObject->getPropertySlot(exec, *propertyName, slot)) {
     966        JSValue result = slot.getValue(exec, *propertyName);
     967
     968        if (slot.isCacheableValue() && !globalObject->structure()->isUncacheableDictionary() && slot.slotBase() == globalObject) {
     969            resolveInfo->structure.set(exec->globalData(), exec->codeBlock()->ownerExecutable(), globalObject->structure());
     970            resolveInfo->offset = slot.cachedOffset();
     971        }
     972
     973        return JSValue::encode(result);
     974    }
     975
     976    return throwVMError(exec, createUndefinedVariableError(exec, *propertyName));
     977}
     978
     979EncodedJSValue DFG_OPERATION operationToPrimitive(ExecState* exec, EncodedJSValue value)
     980{
     981    JSGlobalData* globalData = &exec->globalData();
     982    NativeCallFrameTracer tracer(globalData, exec);
     983   
     984    return JSValue::encode(JSValue::decode(value).toPrimitive(exec));
     985}
     986
     987EncodedJSValue DFG_OPERATION operationStrCat(ExecState* exec, void* start, size_t size)
     988{
     989    JSGlobalData* globalData = &exec->globalData();
     990    NativeCallFrameTracer tracer(globalData, exec);
     991   
     992    return JSValue::encode(jsString(exec, static_cast<Register*>(start), size));
     993}
     994
     995EncodedJSValue DFG_OPERATION operationNewArray(ExecState* exec, void* start, size_t size)
     996{
     997    JSGlobalData* globalData = &exec->globalData();
     998    NativeCallFrameTracer tracer(globalData, exec);
     999   
     1000    return JSValue::encode(constructArray(exec, static_cast<JSValue*>(start), size));
     1001}
     1002
     1003EncodedJSValue DFG_OPERATION operationNewArrayBuffer(ExecState* exec, size_t start, size_t size)
     1004{
     1005    return JSValue::encode(constructArray(exec, exec->codeBlock()->constantBuffer(start), size));
     1006}
     1007
     1008EncodedJSValue DFG_OPERATION operationNewRegexp(ExecState* exec, void* regexpPtr)
     1009{
     1010    RegExp* regexp = static_cast<RegExp*>(regexpPtr);
     1011    if (!regexp->isValid()) {
     1012        throwError(exec, createSyntaxError(exec, "Invalid flags supplied to RegExp constructor."));
     1013        return JSValue::encode(jsUndefined());
     1014    }
     1015   
     1016    return JSValue::encode(RegExpObject::create(exec->globalData(), exec->lexicalGlobalObject(), exec->lexicalGlobalObject()->regExpStructure(), regexp));
     1017}
     1018
     1019DFGHandlerEncoded DFG_OPERATION lookupExceptionHandler(ExecState* exec, uint32_t callIndex)
     1020{
     1021    JSGlobalData* globalData = &exec->globalData();
     1022    NativeCallFrameTracer tracer(globalData, exec);
     1023   
     1024    JSValue exceptionValue = exec->exception();
     1025    ASSERT(exceptionValue);
     1026
     1027    unsigned vPCIndex = exec->codeBlock()->bytecodeOffsetForCallAtIndex(callIndex);
     1028    HandlerInfo* handler = exec->globalData().interpreter->throwException(exec, exceptionValue, vPCIndex);
     1029
     1030    void* catchRoutine = handler ? handler->nativeCode.executableAddress() : (void*)ctiOpThrowNotCaught;
     1031    ASSERT(catchRoutine);
     1032    return dfgHandlerEncoded(exec, catchRoutine);
     1033}
     1034
     1035DFGHandlerEncoded DFG_OPERATION lookupExceptionHandlerInStub(ExecState* exec, StructureStubInfo* stubInfo)
     1036{
     1037    JSGlobalData* globalData = &exec->globalData();
     1038    NativeCallFrameTracer tracer(globalData, exec);
     1039   
     1040    JSValue exceptionValue = exec->exception();
     1041    ASSERT(exceptionValue);
     1042   
     1043    CodeOrigin codeOrigin = stubInfo->codeOrigin;
     1044    while (codeOrigin.inlineCallFrame)
     1045        codeOrigin = codeOrigin.inlineCallFrame->caller;
     1046
     1047    HandlerInfo* handler = exec->globalData().interpreter->throwException(exec, exceptionValue, codeOrigin.bytecodeIndex);
     1048
     1049    void* catchRoutine = handler ? handler->nativeCode.executableAddress() : (void*)ctiOpThrowNotCaught;
     1050    ASSERT(catchRoutine);
     1051    return dfgHandlerEncoded(exec, catchRoutine);
     1052}
     1053
     1054double DFG_OPERATION dfgConvertJSValueToNumber(ExecState* exec, EncodedJSValue value)
     1055{
     1056    JSGlobalData* globalData = &exec->globalData();
     1057    NativeCallFrameTracer tracer(globalData, exec);
     1058   
     1059    return JSValue::decode(value).toNumber(exec);
     1060}
     1061
     1062size_t DFG_OPERATION dfgConvertJSValueToInt32(ExecState* exec, EncodedJSValue value)
     1063{
     1064    JSGlobalData* globalData = &exec->globalData();
     1065    NativeCallFrameTracer tracer(globalData, exec);
     1066   
     1067    // toInt32/toUInt32 return the same value; we want the value zero extended to fill the register.
     1068    return JSValue::decode(value).toUInt32(exec);
     1069}
     1070
     1071size_t DFG_OPERATION dfgConvertJSValueToBoolean(ExecState* exec, EncodedJSValue encodedOp)
     1072{
     1073    JSGlobalData* globalData = &exec->globalData();
     1074    NativeCallFrameTracer tracer(globalData, exec);
     1075   
     1076    return JSValue::decode(encodedOp).toBoolean(exec);
     1077}
     1078
     1079#if DFG_ENABLE(VERBOSE_SPECULATION_FAILURE)
     1080void DFG_OPERATION debugOperationPrintSpeculationFailure(ExecState* exec, void* debugInfoRaw)
     1081{
     1082    JSGlobalData* globalData = &exec->globalData();
     1083    NativeCallFrameTracer tracer(globalData, exec);
     1084   
     1085    SpeculationFailureDebugInfo* debugInfo = static_cast<SpeculationFailureDebugInfo*>(debugInfoRaw);
     1086    CodeBlock* codeBlock = debugInfo->codeBlock;
     1087    CodeBlock* alternative = codeBlock->alternative();
     1088    dataLog("Speculation failure in %p at @%u with executeCounter = %d, reoptimizationRetryCounter = %u, optimizationDelayCounter = %u, success/fail %u/%u\n", codeBlock, debugInfo->nodeIndex, alternative ? alternative->jitExecuteCounter() : 0, alternative ? alternative->reoptimizationRetryCounter() : 0, alternative ? alternative->optimizationDelayCounter() : 0, codeBlock->speculativeSuccessCounter(), codeBlock->speculativeFailCounter());
     1089}
     1090#endif
     1091
     1092} // extern "C"
     1093} } // namespace JSC::DFG
     1094
     1095#endif
  • trunk/Source/JavaScriptCore/heap/Heap.h

    r108309 r108358  
    5151    class JSValue;
    5252    class LiveObjectIterator;
    53     class LLIntOffsetsExtractor;
    5453    class MarkedArgumentBuffer;
    5554    class RegisterFile;
     
    9796        inline bool isBusy();
    9897       
    99         MarkedAllocator& firstAllocatorWithoutDestructors() { return m_objectSpace.firstAllocator(); }
    10098        MarkedAllocator& allocatorForObjectWithoutDestructor(size_t bytes) { return m_objectSpace.allocatorFor(bytes); }
    10199        MarkedAllocator& allocatorForObjectWithDestructor(size_t bytes) { return m_objectSpace.destructorAllocatorFor(bytes); }
     
    139137
    140138    private:
    141         friend class CodeBlock;
    142         friend class LLIntOffsetsExtractor;
    143139        friend class MarkedSpace;
    144140        friend class MarkedAllocator;
     
    146142        friend class CopiedSpace;
    147143        friend class SlotVisitor;
     144        friend class CodeBlock;
    148145        template<typename T> friend void* allocateCell(Heap&);
    149146
  • trunk/Source/JavaScriptCore/heap/MarkStack.cpp

    r108309 r108358  
    304304
    305305    ASSERT(Heap::isMarked(cell));
    306    
     306
    307307    if (isJSString(cell)) {
    308308        JSString::visitChildren(const_cast<JSCell*>(cell), visitor);
  • trunk/Source/JavaScriptCore/heap/MarkedAllocator.h

    r108309 r108358  
    99class Heap;
    1010class MarkedSpace;
    11 class LLIntOffsetsExtractor;
    1211
    1312namespace DFG {
     
    3534   
    3635private:
    37     friend class LLIntOffsetsExtractor;
    38    
    3936    JS_EXPORT_PRIVATE void* allocateSlowCase();
    4037    void* tryAllocate();
  • trunk/Source/JavaScriptCore/heap/MarkedSpace.h

    r108309 r108358  
    4242class JSCell;
    4343class LiveObjectIterator;
    44 class LLIntOffsetsExtractor;
    4544class WeakGCHandle;
    4645class SlotVisitor;
     
    5352    MarkedSpace(Heap*);
    5453
    55     MarkedAllocator& firstAllocator();
    5654    MarkedAllocator& allocatorFor(size_t);
    5755    MarkedAllocator& allocatorFor(MarkedBlock*);
     
    8280
    8381private:
    84     friend class LLIntOffsetsExtractor;
    85    
    8682    // [ 32... 256 ]
    8783    static const size_t preciseStep = MarkedBlock::atomSize;
     
    132128    Functor functor;
    133129    return forEachCell(functor);
    134 }
    135 
    136 inline MarkedAllocator& MarkedSpace::firstAllocator()
    137 {
    138     return m_normalSpace.preciseAllocators[0];
    139130}
    140131
  • trunk/Source/JavaScriptCore/interpreter/CallFrame.cpp

    r108309 r108358  
    5151#endif
    5252
    53 #if USE(JSVALUE32_64)
    54 unsigned CallFrame::bytecodeOffsetForNonDFGCode() const
    55 {
    56     ASSERT(codeBlock());
    57     return currentVPC() - codeBlock()->instructions().begin();
    58 }
    59 
    60 void CallFrame::setBytecodeOffsetForNonDFGCode(unsigned offset)
    61 {
    62     ASSERT(codeBlock());
    63     setCurrentVPC(codeBlock()->instructions().begin() + offset);
    64 }
    65 #else
    66 Instruction* CallFrame::currentVPC() const
    67 {
    68     return codeBlock()->instructions().begin() + bytecodeOffsetForNonDFGCode();
    69 }
    70 void CallFrame::setCurrentVPC(Instruction* vpc)
    71 {
    72     setBytecodeOffsetForNonDFGCode(vpc - codeBlock()->instructions().begin());
    73 }
    74 #endif
    75    
    7653#if ENABLE(DFG_JIT)
    7754bool CallFrame::isInlineCallFrameSlow()
     
    166143
    167144    // Am I an inline call frame? If so, we're done.
    168     if (isInlineCallFrame())
     145    if (isInlineCallFrame() || !hasReturnPC())
    169146        return callerFrame()->removeHostCallFrameFlag();
    170147   
     
    177154   
    178155    // Figure out how we want to get the current code location.
    179     if (!hasReturnPC() || returnAddressIsInCtiTrampoline(returnPC()))
     156    if (hasHostCallFrameFlag() || returnAddressIsInCtiTrampoline(returnPC()))
    180157        return machineCaller->trueCallFrameFromVMCode()->removeHostCallFrameFlag();
    181158   
  • trunk/Source/JavaScriptCore/interpreter/CallFrame.h

    r108309 r108358  
    104104        CallFrame* callerFrame() const { return this[RegisterFile::CallerFrame].callFrame(); }
    105105#if ENABLE(JIT)
     106        bool hasReturnPC() const { return this[RegisterFile::ReturnPC].vPC(); }
    106107        ReturnAddressPtr returnPC() const { return ReturnAddressPtr(this[RegisterFile::ReturnPC].vPC()); }
    107         bool hasReturnPC() const { return !!this[RegisterFile::ReturnPC].vPC(); }
    108         void clearReturnPC() { registers()[RegisterFile::ReturnPC] = static_cast<Instruction*>(0); }
    109108#endif
    110109        AbstractPC abstractReturnPC(JSGlobalData& globalData) { return AbstractPC(globalData, this); }
    111 #if USE(JSVALUE32_64)
    112         unsigned bytecodeOffsetForNonDFGCode() const;
    113         void setBytecodeOffsetForNonDFGCode(unsigned offset);
    114 #else
    115         unsigned bytecodeOffsetForNonDFGCode() const
     110        unsigned bytecodeOffsetForNonDFGCode()
    116111        {
    117112            ASSERT(codeBlock());
     
    124119            this[RegisterFile::ArgumentCount].tag() = static_cast<int32_t>(offset);
    125120        }
    126 #endif
    127121
    128122#if ENABLE(DFG_JIT)
     
    141135#if ENABLE(CLASSIC_INTERPRETER)
    142136        Instruction* returnVPC() const { return this[RegisterFile::ReturnPC].vPC(); }
    143 #endif
    144 #if USE(JSVALUE32_64)
    145         Instruction* currentVPC() const
    146         {
    147             return bitwise_cast<Instruction*>(this[RegisterFile::ArgumentCount].tag());
    148         }
    149         void setCurrentVPC(Instruction* vpc)
    150         {
    151             this[RegisterFile::ArgumentCount].tag() = bitwise_cast<int32_t>(vpc);
    152         }
    153 #else
    154         Instruction* currentVPC() const;
    155         void setCurrentVPC(Instruction* vpc);
    156137#endif
    157138
  • trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp

    r108309 r108358  
    7070#endif
    7171
    72 #define WTF_USE_GCC_COMPUTED_GOTO_WORKAROUND ((ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER) || ENABLE(LLINT)) && !defined(__llvm__))
     72#define WTF_USE_GCC_COMPUTED_GOTO_WORKAROUND (ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER) && !defined(__llvm__))
    7373
    7474using namespace std;
     
    544544    , m_initialized(false)
    545545#endif
    546     , m_classicEnabled(false)
     546    , m_enabled(false)
    547547{
    548548}
    549549
    550 Interpreter::~Interpreter()
     550void Interpreter::initialize(bool canUseJIT)
    551551{
    552 #if ENABLE(LLINT)
    553     if (m_classicEnabled)
    554         delete[] m_opcodeTable;
    555 #endif
    556 }
    557 
    558 void Interpreter::initialize(LLInt::Data* llintData, bool canUseJIT)
    559 {
    560     UNUSED_PARAM(llintData);
    561     UNUSED_PARAM(canUseJIT);
    562 #if ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER) || ENABLE(LLINT)
    563 #if !ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER)
    564     // Having LLInt enabled, but not being able to use the JIT, and not having
    565     // a computed goto interpreter, is not supported. Not because we cannot
    566     // support it, but because I decided to draw the line at the number of
    567     // permutations of execution engines that I wanted this code to grok.
    568     ASSERT(canUseJIT);
    569 #endif
     552#if ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER)
    570553    if (canUseJIT) {
    571 #if ENABLE(LLINT)
    572         m_opcodeTable = llintData->opcodeMap();
    573         for (int i = 0; i < numOpcodeIDs; ++i)
    574             m_opcodeIDTable.add(m_opcodeTable[i], static_cast<OpcodeID>(i));
    575 #else
    576554        // If the JIT is present, don't use jump destinations for opcodes.
    577555       
     
    580558            m_opcodeTable[i] = opcode;
    581559        }
    582 #endif
    583560    } else {
    584 #if ENABLE(LLINT)
    585         m_opcodeTable = new Opcode[numOpcodeIDs];
    586 #endif
    587561        privateExecute(InitializeAndReturn, 0, 0);
    588562       
     
    590564            m_opcodeIDTable.add(m_opcodeTable[i], static_cast<OpcodeID>(i));
    591565       
    592         m_classicEnabled = true;
     566        m_enabled = true;
    593567    }
    594568#else
     569    UNUSED_PARAM(canUseJIT);
    595570#if ENABLE(CLASSIC_INTERPRETER)
    596     m_classicEnabled = true;
     571    m_enabled = true;
    597572#else
    598     m_classicEnabled = false;
     573    m_enabled = false;
    599574#endif
    600575#endif // ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER)
     
    693668bool Interpreter::isOpcode(Opcode opcode)
    694669{
    695 #if ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER) || ENABLE(LLINT)
    696 #if !ENABLE(LLINT)
    697     if (!m_classicEnabled)
     670#if ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER)
     671    if (!m_enabled)
    698672        return opcode >= 0 && static_cast<OpcodeID>(bitwise_cast<uintptr_t>(opcode)) <= op_end;
    699 #endif
    700673    return opcode != HashTraits<Opcode>::emptyValue()
    701674        && !HashTraits<Opcode>::isDeletedValue(opcode)
     
    754727#if ENABLE(JIT) && ENABLE(CLASSIC_INTERPRETER)
    755728    if (callerFrame->globalData().canUseJIT())
    756         bytecodeOffset = codeBlock->bytecodeOffset(callerFrame, callFrame->returnPC());
     729        bytecodeOffset = codeBlock->bytecodeOffset(callFrame->returnPC());
    757730    else
    758731        bytecodeOffset = codeBlock->bytecodeOffset(callFrame->returnVPC()) - 1;
    759732#elif ENABLE(JIT)
    760     bytecodeOffset = codeBlock->bytecodeOffset(callerFrame, callFrame->returnPC());
     733    bytecodeOffset = codeBlock->bytecodeOffset(callFrame->returnPC());
    761734#else
    762735    bytecodeOffset = codeBlock->bytecodeOffset(callFrame->returnVPC()) - 1;
     
    885858        } else
    886859    #endif
    887             bytecodeOffset = callerCodeBlock->bytecodeOffset(callerFrame, callFrame->returnPC());
     860            bytecodeOffset = callerCodeBlock->bytecodeOffset(callFrame->returnPC());
    888861#endif
    889862    }
     
    18431816   
    18441817    ASSERT(m_initialized);
    1845     ASSERT(m_classicEnabled);
     1818    ASSERT(m_enabled);
    18461819   
    18471820#if ENABLE(JIT)
     
    34943467      skip_put_by_id:
    34953468#endif
    3496     DEFINE_OPCODE(op_put_by_id_transition_direct)
    3497     DEFINE_OPCODE(op_put_by_id_transition_normal)
    34983469    DEFINE_OPCODE(op_put_by_id_transition) {
    34993470        /* op_put_by_id_transition base(r) property(id) value(r) oldStructure(sID) newStructure(sID) structureChain(chain) offset(n) direct(b)
     
    53295300#if ENABLE(JIT)
    53305301    else
    5331         bytecodeOffset = callerCodeBlock->bytecodeOffset(callerFrame, callFrame->returnPC());
     5302        bytecodeOffset = callerCodeBlock->bytecodeOffset(callFrame->returnPC());
    53325303#endif
    53335304#else
    5334     bytecodeOffset = callerCodeBlock->bytecodeOffset(callerFrame, callFrame->returnPC());
     5305    bytecodeOffset = callerCodeBlock->bytecodeOffset(callFrame->returnPC());
    53355306#endif
    53365307    lineNumber = callerCodeBlock->lineNumberForBytecodeOffset(bytecodeOffset - 1);
  • trunk/Source/JavaScriptCore/interpreter/Interpreter.h

    r108309 r108358  
    3535#include "JSValue.h"
    3636#include "JSObject.h"
    37 #include "LLIntData.h"
    3837#include "Opcode.h"
    3938#include "RegisterFile.h"
     
    4847    class FunctionExecutable;
    4948    class JSGlobalObject;
    50     class LLIntOffsetsExtractor;
    5149    class ProgramExecutable;
    5250    class Register;
     
    161159    class Interpreter {
    162160        WTF_MAKE_FAST_ALLOCATED;
     161        friend class JIT;
    163162        friend class CachedCall;
    164         friend class LLIntOffsetsExtractor;
    165         friend class JIT;
    166163    public:
    167164        Interpreter();
    168         ~Interpreter();
    169        
    170         void initialize(LLInt::Data*, bool canUseJIT);
     165       
     166        void initialize(bool canUseJIT);
    171167
    172168        RegisterFile& registerFile() { return m_registerFile; }
     
    175171        {
    176172            ASSERT(m_initialized);
    177 #if ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER) || ENABLE(LLINT)
     173#if ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER)
    178174            return m_opcodeTable[id];
    179175#else
     
    185181        {
    186182            ASSERT(m_initialized);
    187 #if ENABLE(LLINT)
     183#if ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER)
    188184            ASSERT(isOpcode(opcode));
    189             return m_opcodeIDTable.get(opcode);
    190 #elif ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER)
    191             ASSERT(isOpcode(opcode));
    192             if (!m_classicEnabled)
     185            if (!m_enabled)
    193186                return static_cast<OpcodeID>(bitwise_cast<uintptr_t>(opcode));
    194187
     
    197190            return opcode;
    198191#endif
    199         }
    200        
    201         bool classicEnabled()
    202         {
    203             return m_classicEnabled;
    204192        }
    205193
     
    272260        RegisterFile m_registerFile;
    273261       
    274 #if ENABLE(LLINT)
    275         Opcode* m_opcodeTable; // Maps OpcodeID => Opcode for compiling
    276         HashMap<Opcode, OpcodeID> m_opcodeIDTable; // Maps Opcode => OpcodeID for decompiling
    277 #elif ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER)
     262#if ENABLE(COMPUTED_GOTO_CLASSIC_INTERPRETER)
    278263        Opcode m_opcodeTable[numOpcodeIDs]; // Maps OpcodeID => Opcode for compiling
    279264        HashMap<Opcode, OpcodeID> m_opcodeIDTable; // Maps Opcode => OpcodeID for decompiling
     
    283268        bool m_initialized;
    284269#endif
    285         bool m_classicEnabled;
     270        bool m_enabled;
    286271    };
    287272
  • trunk/Source/JavaScriptCore/interpreter/RegisterFile.h

    r108309 r108358  
    4040    class ConservativeRoots;
    4141    class DFGCodeBlocks;
    42     class LLIntOffsetsExtractor;
    4342
    4443    class RegisterFile {
     
    8382
    8483    private:
    85         friend class LLIntOffsetsExtractor;
    86        
    8784        bool growSlowCase(Register*);
    8885        void releaseExcessCapacity();
  • trunk/Source/JavaScriptCore/jit/ExecutableAllocator.h

    r108309 r108358  
    9090}
    9191
     92#if ENABLE(JIT) && ENABLE(ASSEMBLER)
     93
    9294namespace JSC {
    9395
    9496typedef WTF::MetaAllocatorHandle ExecutableMemoryHandle;
    95 
    96 #if ENABLE(JIT) && ENABLE(ASSEMBLER)
    9797
    9898class ExecutableAllocator {
     
    236236};
    237237
     238} // namespace JSC
     239
    238240#endif // ENABLE(JIT) && ENABLE(ASSEMBLER)
    239241
    240 } // namespace JSC
    241 
    242242#endif // !defined(ExecutableAllocator)
  • trunk/Source/JavaScriptCore/jit/JIT.cpp

    r108309 r108358  
    326326        DEFINE_OP(op_push_new_scope)
    327327        DEFINE_OP(op_push_scope)
    328         case op_put_by_id_transition_direct:
    329         case op_put_by_id_transition_normal:
    330328        DEFINE_OP(op_put_by_id)
    331329        DEFINE_OP(op_put_by_index)
     
    489487        DEFINE_SLOWCASE_OP(op_pre_dec)
    490488        DEFINE_SLOWCASE_OP(op_pre_inc)
    491         case op_put_by_id_transition_direct:
    492         case op_put_by_id_transition_normal:
    493489        DEFINE_SLOWCASE_OP(op_put_by_id)
    494490        DEFINE_SLOWCASE_OP(op_put_by_val)
     
    530526JITCode JIT::privateCompile(CodePtr* functionEntryArityCheck)
    531527{
    532 #if ENABLE(JIT_VERBOSE_OSR)
    533     printf("Compiling JIT code!\n");
    534 #endif
    535    
    536528#if ENABLE(VALUE_PROFILER)
    537529    m_canBeOptimized = m_codeBlock->canCompileWithDFG();
     
    702694    }
    703695
    704 #if ENABLE(DFG_JIT) || ENABLE(LLINT)
    705     if (m_canBeOptimized
    706 #if ENABLE(LLINT)
    707         || true
    708 #endif
    709         ) {
     696#if ENABLE(DFG_JIT)
     697    if (m_canBeOptimized) {
    710698        CompactJITCodeMap::Encoder jitCodeMapEncoder;
    711699        for (unsigned bytecodeOffset = 0; bytecodeOffset < m_labels.size(); ++bytecodeOffset) {
  • trunk/Source/JavaScriptCore/jit/JITCode.h

    r108309 r108358  
    4949#endif
    5050    public:
    51         enum JITType { None, HostCallThunk, InterpreterThunk, BaselineJIT, DFGJIT };
     51        enum JITType { HostCallThunk, BaselineJIT, DFGJIT };
    5252       
    5353        static JITType bottomTierJIT()
     
    6767        }
    6868       
    69         static bool isOptimizingJIT(JITType jitType)
    70         {
    71             return jitType == DFGJIT;
    72         }
    73        
    74         static bool isBaselineCode(JITType jitType)
    75         {
    76             return jitType == InterpreterThunk || jitType == BaselineJIT;
    77         }
    78        
    7969#if ENABLE(JIT)
    8070        JITCode()
    81             : m_jitType(None)
    8271        {
    8372        }
     
    8776            , m_jitType(jitType)
    8877        {
    89             ASSERT(jitType != None);
    9078        }
    9179       
  • trunk/Source/JavaScriptCore/jit/JITDriver.h

    r108309 r108358  
    3434#include "DFGDriver.h"
    3535#include "JIT.h"
    36 #include "LLIntEntrypoints.h"
    3736
    3837namespace JSC {
     
    4140inline bool jitCompileIfAppropriate(JSGlobalData& globalData, OwnPtr<CodeBlockType>& codeBlock, JITCode& jitCode, JITCode::JITType jitType)
    4241{
    43     if (jitType == codeBlock->getJITType())
    44         return true;
    45    
    4642    if (!globalData.canUseJIT())
    4743        return true;
    48    
    49     codeBlock->unlinkIncomingCalls();
    5044   
    5145    bool dfgCompiled = false;
     
    6963inline bool jitCompileFunctionIfAppropriate(JSGlobalData& globalData, OwnPtr<FunctionCodeBlock>& codeBlock, JITCode& jitCode, MacroAssemblerCodePtr& jitCodeWithArityCheck, SharedSymbolTable*& symbolTable, JITCode::JITType jitType)
    7064{
    71     if (jitType == codeBlock->getJITType())
    72         return true;
    73    
    7465    if (!globalData.canUseJIT())
    7566        return true;
    76    
    77     codeBlock->unlinkIncomingCalls();
    7867   
    7968    bool dfgCompiled = false;
     
    9180        jitCode = JIT::compile(&globalData, codeBlock.get(), &jitCodeWithArityCheck);
    9281    }
     82   
    9383    codeBlock->setJITCode(jitCode, jitCodeWithArityCheck);
    9484   
  • trunk/Source/JavaScriptCore/jit/JITExceptions.cpp

    r108309 r108358  
    6565ExceptionHandler jitThrow(JSGlobalData* globalData, ExecState* callFrame, JSValue exceptionValue, ReturnAddressPtr faultLocation)
    6666{
    67     return genericThrow(globalData, callFrame, exceptionValue, callFrame->codeBlock()->bytecodeOffset(callFrame, faultLocation));
     67    return genericThrow(globalData, callFrame, exceptionValue, callFrame->codeBlock()->bytecodeOffset(faultLocation));
    6868}
    6969
  • trunk/Source/JavaScriptCore/jit/JITInlineMethods.h

    r108309 r108358  
    266266{
    267267    ASSERT(static_cast<int>(m_bytecodeOffset) >= 0);
    268     if (m_bytecodeOffset) {
    269 #if USE(JSVALUE32_64)
    270         storePtr(TrustedImmPtr(m_codeBlock->instructions().begin() + m_bytecodeOffset + 1), intTagFor(RegisterFile::ArgumentCount));
    271 #else
     268    if (m_bytecodeOffset)
    272269        store32(Imm32(m_bytecodeOffset + 1), intTagFor(RegisterFile::ArgumentCount));
    273 #endif
    274     }
    275270    storePtr(callFrameRegister, &m_globalData->topCallFrame);
    276271}
  • trunk/Source/JavaScriptCore/jit/JITStubs.cpp

    r108309 r108358  
    14471447    JSValue baseValue = stackFrame.args[0].jsValue();
    14481448    ASSERT(baseValue.isObject());
    1449    
    14501449    asObject(baseValue)->putDirect(callFrame->globalData(), ident, stackFrame.args[2].jsValue(), slot);
    14511450   
     
    19331932
    19341933#if ENABLE(JIT_VERBOSE_OSR)
    1935     dataLog("%p: Entered optimize_from_loop with executeCounter = %d, reoptimizationRetryCounter = %u, optimizationDelayCounter = %u\n", codeBlock, codeBlock->jitExecuteCounter(), codeBlock->reoptimizationRetryCounter(), codeBlock->optimizationDelayCounter());
     1934    dataLog("Entered optimize_from_loop with executeCounter = %d, reoptimizationRetryCounter = %u, optimizationDelayCounter = %u\n", codeBlock->jitExecuteCounter(), codeBlock->reoptimizationRetryCounter(), codeBlock->optimizationDelayCounter());
    19361935#endif
    19371936
     
    21882187}
    21892188
     2189inline CallFrame* arityCheckFor(CallFrame* callFrame, RegisterFile* registerFile, CodeSpecializationKind kind)
     2190{
     2191    JSFunction* callee = asFunction(callFrame->callee());
     2192    ASSERT(!callee->isHostFunction());
     2193    CodeBlock* newCodeBlock = &callee->jsExecutable()->generatedBytecodeFor(kind);
     2194    int argumentCountIncludingThis = callFrame->argumentCountIncludingThis();
     2195
     2196    // This ensures enough space for the worst case scenario of zero arguments passed by the caller.
     2197    if (!registerFile->grow(callFrame->registers() + newCodeBlock->numParameters() + newCodeBlock->m_numCalleeRegisters))
     2198        return 0;
     2199
     2200    ASSERT(argumentCountIncludingThis < newCodeBlock->numParameters());
     2201
     2202    // Too few arguments -- copy call frame and arguments, then fill in missing arguments with undefined.
     2203    size_t delta = newCodeBlock->numParameters() - argumentCountIncludingThis;
     2204    Register* src = callFrame->registers();
     2205    Register* dst = callFrame->registers() + delta;
     2206
     2207    int i;
     2208    int end = -CallFrame::offsetFor(argumentCountIncludingThis);
     2209    for (i = -1; i >= end; --i)
     2210        dst[i] = src[i];
     2211
     2212    end -= delta;
     2213    for ( ; i >= end; --i)
     2214        dst[i] = jsUndefined();
     2215
     2216    CallFrame* newCallFrame = CallFrame::create(dst);
     2217    ASSERT((void*)newCallFrame <= registerFile->end());
     2218    return newCallFrame;
     2219}
     2220
    21902221DEFINE_STUB_FUNCTION(void*, op_call_arityCheck)
    21912222{
     
    21942225    CallFrame* callFrame = stackFrame.callFrame;
    21952226
    2196     CallFrame* newCallFrame = CommonSlowPaths::arityCheckFor(callFrame, stackFrame.registerFile, CodeForCall);
     2227    CallFrame* newCallFrame = arityCheckFor(callFrame, stackFrame.registerFile, CodeForCall);
    21972228    if (!newCallFrame)
    21982229        return throwExceptionFromOpCall<void*>(stackFrame, callFrame, STUB_RETURN_ADDRESS, createStackOverflowError(callFrame->callerFrame()));
     
    22072238    CallFrame* callFrame = stackFrame.callFrame;
    22082239
    2209     CallFrame* newCallFrame = CommonSlowPaths::arityCheckFor(callFrame, stackFrame.registerFile, CodeForConstruct);
     2240    CallFrame* newCallFrame = arityCheckFor(callFrame, stackFrame.registerFile, CodeForConstruct);
    22102241    if (!newCallFrame)
    22112242        return throwExceptionFromOpCall<void*>(stackFrame, callFrame, STUB_RETURN_ADDRESS, createStackOverflowError(callFrame->callerFrame()));
     
    22842315
    22852316    CallFrame* callFrame = stackFrame.callFrame;
    2286    
    22872317    JSValue callee = callFrame->calleeAsValue();
    22882318
  • trunk/Source/JavaScriptCore/jit/JITStubs.h

    r108309 r108358  
    3838#include <wtf/HashMap.h>
    3939
     40#if ENABLE(JIT)
     41
    4042namespace JSC {
    4143
     
    261263
    262264#define JITSTACKFRAME_ARGS_INDEX (OBJECT_OFFSETOF(JITStackFrame, args) / sizeof(void*))
    263 
    264 #if ENABLE(JIT)
    265265
    266266#define STUB_ARGS_DECLARATION void** args
     
    457457} // extern "C"
    458458
     459} // namespace JSC
     460
    459461#endif // ENABLE(JIT)
    460462
    461 } // namespace JSC
    462 
    463463#endif // JITStubs_h
  • trunk/Source/JavaScriptCore/jit/JSInterfaceJIT.h

    r108309 r108358  
    2727#define JSInterfaceJIT_h
    2828
    29 #include "BytecodeConventions.h"
    3029#include "JITCode.h"
    3130#include "JITStubs.h"
    32 #include "JSString.h"
    3331#include "JSValue.h"
    3432#include "MacroAssembler.h"
  • trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h

    r108309 r108358  
    2828
    2929#include "CodeBlock.h"
    30 #include "CodeSpecializationKind.h"
    3130#include "ExceptionHelpers.h"
    3231#include "JSArray.h"
     
    4241
    4342namespace CommonSlowPaths {
    44 
    45 ALWAYS_INLINE ExecState* arityCheckFor(ExecState* exec, RegisterFile* registerFile, CodeSpecializationKind kind)
    46 {
    47     JSFunction* callee = asFunction(exec->callee());
    48     ASSERT(!callee->isHostFunction());
    49     CodeBlock* newCodeBlock = &callee->jsExecutable()->generatedBytecodeFor(kind);
    50     int argumentCountIncludingThis = exec->argumentCountIncludingThis();
    51 
    52     // This ensures enough space for the worst case scenario of zero arguments passed by the caller.
    53     if (!registerFile->grow(exec->registers() + newCodeBlock->numParameters() + newCodeBlock->m_numCalleeRegisters))
    54         return 0;
    55 
    56     ASSERT(argumentCountIncludingThis < newCodeBlock->numParameters());
    57 
    58     // Too few arguments -- copy call frame and arguments, then fill in missing arguments with undefined.
    59     size_t delta = newCodeBlock->numParameters() - argumentCountIncludingThis;
    60     Register* src = exec->registers();
    61     Register* dst = exec->registers() + delta;
    62 
    63     int i;
    64     int end = -ExecState::offsetFor(argumentCountIncludingThis);
    65     for (i = -1; i >= end; --i)
    66         dst[i] = src[i];
    67 
    68     end -= delta;
    69     for ( ; i >= end; --i)
    70         dst[i] = jsUndefined();
    71 
    72     ExecState* newExec = ExecState::create(dst);
    73     ASSERT((void*)newExec <= registerFile->end());
    74     return newExec;
    75 }
    7643
    7744ALWAYS_INLINE bool opInstanceOfSlow(ExecState* exec, JSValue value, JSValue baseVal, JSValue proto)
  • trunk/Source/JavaScriptCore/runtime/Executable.cpp

    r108309 r108358  
    3030#include "CodeBlock.h"
    3131#include "DFGDriver.h"
    32 #include "ExecutionHarness.h"
    3332#include "JIT.h"
    3433#include "JITDriver.h"
     
    9089static void jettisonCodeBlock(JSGlobalData& globalData, OwnPtr<T>& codeBlock)
    9190{
    92     ASSERT(JITCode::isOptimizingJIT(codeBlock->getJITType()));
     91    ASSERT(codeBlock->getJITType() != JITCode::BaselineJIT);
    9392    ASSERT(codeBlock->alternative());
    9493    OwnPtr<T> codeBlockToJettison = codeBlock.release();
     
    177176}
    178177
    179 #if ENABLE(JIT)
    180 void EvalExecutable::jitCompile(JSGlobalData& globalData)
    181 {
    182     bool result = jitCompileIfAppropriate(globalData, m_evalCodeBlock, m_jitCodeForCall, JITCode::bottomTierJIT());
    183     ASSERT_UNUSED(result, result);
    184 }
    185 #endif
    186 
    187 inline const char* samplingDescription(JITCode::JITType jitType)
    188 {
    189     switch (jitType) {
    190     case JITCode::InterpreterThunk:
    191         return "Interpreter Compilation (TOTAL)";
    192     case JITCode::BaselineJIT:
    193         return "Baseline Compilation (TOTAL)";
    194     case JITCode::DFGJIT:
    195         return "DFG Compilation (TOTAL)";
    196     default:
    197         ASSERT_NOT_REACHED();
    198         return 0;
    199     }
    200 }
    201 
    202178JSObject* EvalExecutable::compileInternal(ExecState* exec, ScopeChainNode* scopeChainNode, JITCode::JITType jitType)
    203179{
    204     SamplingRegion samplingRegion(samplingDescription(jitType));
     180    SamplingRegion samplingRegion(jitType == JITCode::BaselineJIT ? "Baseline Compilation (TOTAL)" : "DFG Compilation (TOTAL)");
    205181   
    206182#if !ENABLE(JIT)
     
    243219
    244220#if ENABLE(JIT)
    245     if (!prepareForExecution(*globalData, m_evalCodeBlock, m_jitCodeForCall, jitType))
     221    if (!jitCompileIfAppropriate(*globalData, m_evalCodeBlock, m_jitCodeForCall, jitType))
    246222        return 0;
    247223#endif
     
    328304}
    329305
    330 #if ENABLE(JIT)
    331 void ProgramExecutable::jitCompile(JSGlobalData& globalData)
    332 {
    333     bool result = jitCompileIfAppropriate(globalData, m_programCodeBlock, m_jitCodeForCall, JITCode::bottomTierJIT());
    334     ASSERT_UNUSED(result, result);
    335 }
    336 #endif
    337 
    338306JSObject* ProgramExecutable::compileInternal(ExecState* exec, ScopeChainNode* scopeChainNode, JITCode::JITType jitType)
    339307{
    340     SamplingRegion samplingRegion(samplingDescription(jitType));
     308    SamplingRegion samplingRegion(jitType == JITCode::BaselineJIT ? "Baseline Compilation (TOTAL)" : "DFG Compilation (TOTAL)");
    341309   
    342310#if !ENABLE(JIT)
     
    377345
    378346#if ENABLE(JIT)
    379     if (!prepareForExecution(*globalData, m_programCodeBlock, m_jitCodeForCall, jitType))
     347    if (!jitCompileIfAppropriate(*globalData, m_programCodeBlock, m_jitCodeForCall, jitType))
    380348        return 0;
    381349#endif
     
    453421        result = static_cast<FunctionCodeBlock*>(result->alternative());
    454422    ASSERT(result);
    455     ASSERT(JITCode::isBaselineCode(result->getJITType()));
     423    ASSERT(result->getJITType() == JITCode::BaselineJIT);
    456424    return result;
    457425}
     
    478446    return error;
    479447}
    480 
    481 #if ENABLE(JIT)
    482 void FunctionExecutable::jitCompileForCall(JSGlobalData& globalData)
    483 {
    484     bool result = jitCompileFunctionIfAppropriate(globalData, m_codeBlockForCall, m_jitCodeForCall, m_jitCodeForCallWithArityCheck, m_symbolTable, JITCode::bottomTierJIT());
    485     ASSERT_UNUSED(result, result);
    486 }
    487 
    488 void FunctionExecutable::jitCompileForConstruct(JSGlobalData& globalData)
    489 {
    490     bool result = jitCompileFunctionIfAppropriate(globalData, m_codeBlockForConstruct, m_jitCodeForConstruct, m_jitCodeForConstructWithArityCheck, m_symbolTable, JITCode::bottomTierJIT());
    491     ASSERT_UNUSED(result, result);
    492 }
    493 #endif
    494448
    495449FunctionCodeBlock* FunctionExecutable::codeBlockWithBytecodeFor(CodeSpecializationKind kind)
     
    537491JSObject* FunctionExecutable::compileForCallInternal(ExecState* exec, ScopeChainNode* scopeChainNode, JITCode::JITType jitType)
    538492{
    539     SamplingRegion samplingRegion(samplingDescription(jitType));
     493    SamplingRegion samplingRegion(jitType == JITCode::BaselineJIT ? "Baseline Compilation (TOTAL)" : "DFG Compilation (TOTAL)");
    540494   
    541495#if !ENABLE(JIT)
     
    559513
    560514#if ENABLE(JIT)
    561     if (!prepareFunctionForExecution(exec->globalData(), m_codeBlockForCall, m_jitCodeForCall, m_jitCodeForCallWithArityCheck, m_symbolTable, jitType, CodeForCall))
     515    if (!jitCompileFunctionIfAppropriate(exec->globalData(), m_codeBlockForCall, m_jitCodeForCall, m_jitCodeForCallWithArityCheck, m_symbolTable, jitType))
    562516        return 0;
    563517#endif
     
    579533JSObject* FunctionExecutable::compileForConstructInternal(ExecState* exec, ScopeChainNode* scopeChainNode, JITCode::JITType jitType)
    580534{
    581     SamplingRegion samplingRegion(samplingDescription(jitType));
     535    SamplingRegion samplingRegion(jitType == JITCode::BaselineJIT ? "Baseline Compilation (TOTAL)" : "DFG Compilation (TOTAL)");
    582536   
    583537#if !ENABLE(JIT)
     
    601555
    602556#if ENABLE(JIT)
    603     if (!prepareFunctionForExecution(exec->globalData(), m_codeBlockForConstruct, m_jitCodeForConstruct, m_jitCodeForConstructWithArityCheck, m_symbolTable, jitType, CodeForConstruct))
     557    if (!jitCompileFunctionIfAppropriate(exec->globalData(), m_codeBlockForConstruct, m_jitCodeForConstruct, m_jitCodeForConstructWithArityCheck, m_symbolTable, jitType))
    604558        return 0;
    605559#endif
  • trunk/Source/JavaScriptCore/runtime/Executable.h

    r108309 r108358  
    2828
    2929#include "CallData.h"
    30 #include "CodeSpecializationKind.h"
    3130#include "JSFunction.h"
    3231#include "Interpreter.h"
     
    4140    class EvalCodeBlock;
    4241    class FunctionCodeBlock;
    43     class LLIntOffsetsExtractor;
    4442    class ProgramCodeBlock;
    4543    class ScopeChainNode;
     
    4745    struct ExceptionInfo;
    4846   
     47    enum CodeSpecializationKind { CodeForCall, CodeForConstruct };
    4948    enum CompilationKind { FirstCompilation, OptimizingCompilation };
    5049
     
    327326
    328327    class EvalExecutable : public ScriptExecutable {
    329         friend class LLIntOffsetsExtractor;
    330328    public:
    331329        typedef ScriptExecutable Base;
     
    347345#if ENABLE(JIT)
    348346        void jettisonOptimizedCode(JSGlobalData&);
    349         void jitCompile(JSGlobalData&);
    350347#endif
    351348
     
    394391
    395392    class ProgramExecutable : public ScriptExecutable {
    396         friend class LLIntOffsetsExtractor;
    397393    public:
    398394        typedef ScriptExecutable Base;
     
    422418#if ENABLE(JIT)
    423419        void jettisonOptimizedCode(JSGlobalData&);
    424         void jitCompile(JSGlobalData&);
    425420#endif
    426421
     
    465460    class FunctionExecutable : public ScriptExecutable {
    466461        friend class JIT;
    467         friend class LLIntOffsetsExtractor;
    468462    public:
    469463        typedef ScriptExecutable Base;
     
    521515#if ENABLE(JIT)
    522516        void jettisonOptimizedCodeForCall(JSGlobalData&);
    523         void jitCompileForCall(JSGlobalData&);
    524517#endif
    525518
     
    549542#if ENABLE(JIT)
    550543        void jettisonOptimizedCodeForConstruct(JSGlobalData&);
    551         void jitCompileForConstruct(JSGlobalData&);
    552544#endif
    553545
     
    596588                jettisonOptimizedCodeForConstruct(globalData);
    597589            }
    598         }
    599        
    600         void jitCompileFor(JSGlobalData& globalData, CodeSpecializationKind kind)
    601         {
    602             if (kind == CodeForCall) {
    603                 jitCompileForCall(globalData);
    604                 return;
    605             }
    606             ASSERT(kind == CodeForConstruct);
    607             jitCompileForConstruct(globalData);
    608590        }
    609591#endif
  • trunk/Source/JavaScriptCore/runtime/JSArray.h

    r108309 r108358  
    2929
    3030    class JSArray;
    31     class LLIntOffsetsExtractor;
    3231
    3332    struct SparseArrayEntry : public WriteBarrier<Unknown> {
     
    124123
    125124    class JSArray : public JSNonFinalObject {
    126         friend class LLIntOffsetsExtractor;
    127125        friend class Walker;
    128126
  • trunk/Source/JavaScriptCore/runtime/JSCell.h

    r108309 r108358  
    3737
    3838    class JSGlobalObject;
    39     class LLIntOffsetsExtractor;
     39    class Structure;
    4040    class PropertyDescriptor;
    4141    class PropertyNameArray;
    42     class Structure;
    4342
    4443    enum EnumerationMode {
     
    165164
    166165    private:
    167         friend class LLIntOffsetsExtractor;
    168        
    169166        const ClassInfo* m_classInfo;
    170167        WriteBarrier<Structure> m_structure;
  • trunk/Source/JavaScriptCore/runtime/JSFunction.h

    r108309 r108358  
    3434    class JSActivation;
    3535    class JSGlobalObject;
    36     class LLIntOffsetsExtractor;
    3736    class NativeExecutable;
    3837    class SourceCode;
     
    142141
    143142    private:
    144         friend class LLIntOffsetsExtractor;
    145        
    146143        JS_EXPORT_PRIVATE bool isHostFunctionNonInline() const;
    147144
  • trunk/Source/JavaScriptCore/runtime/JSGlobalData.cpp

    r108309 r108358  
    3636#include "FunctionConstructor.h"
    3737#include "GetterSetter.h"
    38 #include "HostCallReturnValue.h"
    3938#include "Interpreter.h"
    4039#include "JSActivation.h"
     
    143142    , interpreter(0)
    144143    , heap(this, heapSize)
    145     , jsArrayClassInfo(&JSArray::s_info)
    146     , jsFinalObjectClassInfo(&JSFinalObject::s_info)
    147144#if ENABLE(DFG_JIT)
    148145    , sizeOfLastScratchBuffer(0)
     
    220217#endif
    221218
    222     interpreter->initialize(&llintData, this->canUseJIT());
    223    
    224     initializeHostCallReturnValue(); // This is needed to convince the linker not to drop host call return support.
     219    interpreter->initialize(this->canUseJIT());
    225220
    226221    heap.notifyIsSafeToCollect();
    227    
    228     llintData.performAssertions(*this);
    229222}
    230223
  • trunk/Source/JavaScriptCore/runtime/JSGlobalData.h

    r108309 r108358  
    3131
    3232#include "CachedTranscendentalFunction.h"
     33#include "Intrinsic.h"
    3334#include "DateInstanceCache.h"
    3435#include "ExecutableAllocator.h"
    3536#include "Heap.h"
    36 #include "Intrinsic.h"
     37#include "Strong.h"
    3738#include "JITStubs.h"
    3839#include "JSValue.h"
    39 #include "LLIntData.h"
    4040#include "NumericStrings.h"
    4141#include "SmallStrings.h"
    42 #include "Strong.h"
    4342#include "Terminator.h"
    4443#include "TimeoutChecker.h"
     
    6766    class JSObject;
    6867    class Keywords;
    69     class LLIntOffsetsExtractor;
    7068    class NativeExecutable;
    7169    class ParserArena;
     
    244242
    245243        JSValue exception;
    246 
    247         const ClassInfo* const jsArrayClassInfo;
    248         const ClassInfo* const jsFinalObjectClassInfo;
    249 
    250         LLInt::Data llintData;
    251 
     244#if ENABLE(JIT)
    252245        ReturnAddressPtr exceptionLocation;
    253246        JSValue hostCallReturnValue;
     
    279272        }
    280273#endif
     274#endif
    281275
    282276        HashMap<OpaqueJSClass*, OwnPtr<OpaqueJSClassContextData> > opaqueJSClassData;
     
    353347
    354348    private:
    355         friend class LLIntOffsetsExtractor;
    356        
    357349        JSGlobalData(GlobalDataType, ThreadStackType, HeapSize);
    358350        static JSGlobalData*& sharedInstanceInternal();
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h

    r108309 r108358  
    4545    class GetterSetter;
    4646    class GlobalCodeBlock;
    47     class LLIntOffsetsExtractor;
    4847    class NativeErrorConstructor;
    4948    class ProgramCodeBlock;
     
    342341
    343342    private:
    344         friend class LLIntOffsetsExtractor;
    345        
    346343        // FIXME: Fold reset into init.
    347344        JS_EXPORT_PRIVATE void init(JSObject* thisValue);
  • trunk/Source/JavaScriptCore/runtime/JSObject.h

    r108309 r108358  
    5050    class HashEntry;
    5151    class InternalFunction;
    52     class LLIntOffsetsExtractor;
    5352    class MarkedBlock;
    5453    class PropertyDescriptor;
     
    266265
    267266    private:
    268         friend class LLIntOffsetsExtractor;
    269        
    270267        // Nobody should ever ask any of these questions on something already known to be a JSObject.
    271268        using JSCell::isAPIValueWrapper;
     
    373370
    374371    private:
    375         friend class LLIntOffsetsExtractor;
    376        
    377372        explicit JSFinalObject(JSGlobalData& globalData, Structure* structure)
    378373            : JSObject(globalData, structure, m_inlineStorage)
  • trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h

    r108309 r108358  
    3939    class Identifier;
    4040    class JSObject;
    41     class LLIntOffsetsExtractor;
    4241
    4342    class JSPropertyNameIterator : public JSCell {
     
    9897
    9998    private:
    100         friend class LLIntOffsetsExtractor;
    101        
    10299        JSPropertyNameIterator(ExecState*, PropertyNameArrayData* propertyNameArrayData, size_t numCacheableSlot);
    103100
  • trunk/Source/JavaScriptCore/runtime/JSString.h

    r108309 r108358  
    3333
    3434    class JSString;
    35     class LLIntOffsetsExtractor;
    3635
    3736    JSString* jsEmptyString(JSGlobalData*);
     
    242241
    243242    private:
    244         friend class LLIntOffsetsExtractor;
    245        
    246243        JS_EXPORT_PRIVATE void resolveRope(ExecState*) const;
    247244        void resolveRopeSlowCase8(LChar*) const;
  • trunk/Source/JavaScriptCore/runtime/JSTypeInfo.h

    r108309 r108358  
    3434
    3535namespace JSC {
    36 
    37     class LLIntOffsetsExtractor;
    3836
    3937    static const unsigned MasqueradesAsUndefined = 1; // WebCore uses MasqueradesAsUndefined to make document.all undetectable.
     
    9088
    9189    private:
    92         friend class LLIntOffsetsExtractor;
    93        
    9490        bool isSetOnFlags1(unsigned flag) const { ASSERT(flag <= (1 << 7)); return m_flags & flag; }
    9591        bool isSetOnFlags2(unsigned flag) const { ASSERT(flag >= (1 << 8)); return m_flags2 & (flag >> 8); }
  • trunk/Source/JavaScriptCore/runtime/JSValue.cpp

    r108309 r108358  
    119119char* JSValue::description()
    120120{
    121     static const size_t size = 128;
     121    static const size_t size = 64;
    122122    static char description[size];
    123123
     
    128128    else if (isDouble()) {
    129129#if USE(JSVALUE64)
    130         snprintf(description, size, "Double: %lx, %lf", reinterpretDoubleToIntptr(asDouble()), asDouble());
     130        snprintf(description, size, "Double: %lf, %lx", asDouble(), reinterpretDoubleToIntptr(asDouble()));
    131131#else
    132132        union {
     
    135135        } u;
    136136        u.asDouble = asDouble();
    137         snprintf(description, size, "Double: %08x:%08x, %lf", u.asTwoInt32s[1], u.asTwoInt32s[0], asDouble());
     137        snprintf(description, size, "Double: %lf, %08x:%08x", asDouble(), u.asTwoInt32s[1], u.asTwoInt32s[0]);
    138138#endif
    139139    } else if (isCell())
  • trunk/Source/JavaScriptCore/runtime/JSValue.h

    r108309 r108358  
    5656    }
    5757#endif
    58     namespace LLInt {
    59         class Data;
    60     }
    6158
    6259    struct ClassInfo;
     
    122119        friend class DFG::SpeculativeJIT;
    123120#endif
    124         friend class LLInt::Data;
    125121
    126122    public:
  • trunk/Source/JavaScriptCore/runtime/JSVariableObject.h

    r108309 r108358  
    3939namespace JSC {
    4040
    41     class LLIntOffsetsExtractor;
    4241    class Register;
    4342
    4443    class JSVariableObject : public JSNonFinalObject {
    4544        friend class JIT;
    46         friend class LLIntOffsetsExtractor;
    4745
    4846    public:
  • trunk/Source/JavaScriptCore/runtime/Options.cpp

    r108309 r108358  
    5353unsigned maximumInliningDepth;
    5454
    55 int32_t executionCounterValueForJITAfterWarmUp;
    56 int32_t executionCounterValueForDontJITAnytimeSoon;
    57 int32_t executionCounterValueForJITSoon;
    58 
    5955int32_t executionCounterValueForOptimizeAfterWarmUp;
    6056int32_t executionCounterValueForOptimizeAfterLongWarmUp;
     
    142138    SET(maximumInliningDepth, 5);
    143139
    144     SET(executionCounterValueForJITAfterWarmUp,     -100);
    145     SET(executionCounterValueForDontJITAnytimeSoon, std::numeric_limits<int32_t>::min());
    146     SET(executionCounterValueForJITSoon,            -100);
    147 
    148140    SET(executionCounterValueForOptimizeAfterWarmUp,     -1000);
    149141    SET(executionCounterValueForOptimizeAfterLongWarmUp, -5000);
     
    193185    if (cpusToUse < 1)
    194186        cpusToUse = 1;
    195    
    196     cpusToUse = 1;
    197187   
    198188    SET(numberOfGCMarkers, cpusToUse);
  • trunk/Source/JavaScriptCore/runtime/Options.h

    r108309 r108358  
    3737
    3838extern unsigned maximumInliningDepth; // Depth of inline stack, so 1 = no inlining, 2 = one level, etc.
    39 
    40 extern int32_t executionCounterValueForJITAfterWarmUp;
    41 extern int32_t executionCounterValueForDontJITAnytimeSoon;
    42 extern int32_t executionCounterValueForJITSoon;
    4339
    4440extern int32_t executionCounterValueForOptimizeAfterWarmUp;
  • trunk/Source/JavaScriptCore/runtime/ScopeChain.h

    r108309 r108358  
    3131    class JSGlobalObject;
    3232    class JSObject;
    33     class LLIntOffsetsExtractor;
    3433    class ScopeChainIterator;
    3534    class SlotVisitor;
     
    9392
    9493    private:
    95         friend class LLIntOffsetsExtractor;
    96        
    9794        static const unsigned StructureFlags = OverridesVisitChildren;
    9895    };
  • trunk/Source/JavaScriptCore/runtime/Structure.cpp

    r108309 r108358  
    326326        return transition;
    327327    }
    328    
     328
    329329    Structure* transition = create(globalData, structure);
    330330
  • trunk/Source/JavaScriptCore/runtime/Structure.h

    r108309 r108358  
    4646namespace JSC {
    4747
    48     class LLIntOffsetsExtractor;
    4948    class PropertyNameArray;
    5049    class PropertyNameArrayData;
     
    208207
    209208    private:
    210         friend class LLIntOffsetsExtractor;
    211        
    212209        JS_EXPORT_PRIVATE Structure(JSGlobalData&, JSGlobalObject*, JSValue prototype, const TypeInfo&, const ClassInfo*);
    213210        Structure(JSGlobalData&);
  • trunk/Source/JavaScriptCore/runtime/StructureChain.h

    r108309 r108358  
    3838namespace JSC {
    3939
    40     class LLIntOffsetsExtractor;
    4140    class Structure;
    4241
     
    7675
    7776    private:
    78         friend class LLIntOffsetsExtractor;
    79        
    8077        StructureChain(JSGlobalData&, Structure*);
    8178        static void destroy(JSCell*);
  • trunk/Source/JavaScriptCore/wtf/InlineASM.h

    r108309 r108358  
    7171#endif
    7272
    73 // FIXME: figure out how this works on all the platforms. I know that
    74 // on Linux, the preferred form is ".Lstuff" as opposed to "Lstuff".
    75 // Don't know about any of the others.
    76 #if PLATFORM(MAC)
    77 #define LOCAL_LABEL_STRING(name) "L" #name
    78 #endif
    79 
    8073#endif // InlineASM_h
  • trunk/Source/JavaScriptCore/wtf/Platform.h

    r108309 r108358  
    929929#endif
    930930
    931 /* On some of the platforms where we have a JIT, we want to also have the
    932    low-level interpreter. */
    933 #if !defined(ENABLE_LLINT) && ENABLE(JIT) && OS(DARWIN) && (CPU(X86) || CPU(ARM_THUMB2)) && USE(JSVALUE32_64)
    934 #define ENABLE_LLINT 1
    935 #endif
    936 
    937931#if !defined(ENABLE_DFG_JIT) && ENABLE(JIT)
    938932/* Enable the DFG JIT on X86 and X86_64.  Only tested on Mac and GNU/Linux. */
  • trunk/Source/JavaScriptCore/wtf/SentinelLinkedList.h

    r108309 r108358  
    8787    iterator begin();
    8888    iterator end();
    89    
    90     bool isEmpty() { return begin() == end(); }
    9189
    9290private:
  • trunk/Source/JavaScriptCore/wtf/text/StringImpl.h

    r108309 r108358  
    4444namespace JSC {
    4545struct IdentifierCStringTranslator;
    46 namespace LLInt { class Data; }
    47 class LLIntOffsetsExtractor;
    4846template <typename T> struct IdentifierCharBufferTranslator;
    4947struct IdentifierLCharFromUCharTranslator;
     
    7573    friend struct WTF::UCharBufferTranslator;
    7674    friend class AtomicStringImpl;
    77     friend class JSC::LLInt::Data;
    78     friend class JSC::LLIntOffsetsExtractor;
    79    
     75
    8076private:
    8177    enum BufferOwnership {
  • trunk/Source/WebCore/CMakeLists.txt

    r108310 r108358  
    7676    "${JAVASCRIPTCORE_DIR}/interpreter"
    7777    "${JAVASCRIPTCORE_DIR}/jit"
    78     "${JAVASCRIPTCORE_DIR}/llint"
    7978    "${JAVASCRIPTCORE_DIR}/parser"
    8079    "${JAVASCRIPTCORE_DIR}/profiler"
  • trunk/Source/WebCore/ChangeLog

    r108356 r108358  
     12012-02-21  Adam Roben  <aroben@apple.com>
     2
     3        Roll out r108309, r108323, and r108326
     4
     5        They broke the 32-bit Lion build.
     6
     7        Original bugs is <http://webkit.org/b/75812> <rdar://problem/10079694>.
     8
     9        * CMakeLists.txt:
     10
    1112012-02-21  Alexander Pavlov  <apavlov@chromium.org>
    212
  • trunk/Source/WebKit/CMakeLists.txt

    r108309 r108358  
    4646    "${JAVASCRIPTCORE_DIR}/interpreter"
    4747    "${JAVASCRIPTCORE_DIR}/jit"
    48     "${JAVASCRIPTCORE_DIR}/llint"
    4948    "${JAVASCRIPTCORE_DIR}/parser"
    5049    "${JAVASCRIPTCORE_DIR}/profiler"
  • trunk/Source/WebKit/ChangeLog

    r108309 r108358  
     12012-02-21  Adam Roben  <aroben@apple.com>
     2
     3        Roll out r108309, r108323, and r108326
     4
     5        They broke the 32-bit Lion build.
     6
     7        Original bugs is <http://webkit.org/b/75812> <rdar://problem/10079694>.
     8
     9        * CMakeLists.txt:
     10
    1112012-02-20  Filip Pizlo  <fpizlo@apple.com>
    212
  • trunk/Tools/ChangeLog

    r108328 r108358  
     12012-02-21  Adam Roben  <aroben@apple.com>
     2
     3        Roll out r108309, r108323, and r108326
     4
     5        They broke the 32-bit Lion build.
     6
     7        Original bugs is <http://webkit.org/b/75812> <rdar://problem/10079694>.
     8
     9        * DumpRenderTree/efl/CMakeLists.txt:
     10
    1112012-02-21  Andras Becsi  <andras.becsi@nokia.com>
    212
  • trunk/Tools/DumpRenderTree/efl/CMakeLists.txt

    r108309 r108358  
    7171    ${JAVASCRIPTCORE_DIR}/API
    7272    ${JAVASCRIPTCORE_DIR}/assembler
    73     ${JAVASCRIPTCORE_DIR}/bytecode
    7473    ${JAVASCRIPTCORE_DIR}/dfg
    7574    ${JAVASCRIPTCORE_DIR}/heap
    7675    ${JAVASCRIPTCORE_DIR}/interpreter
    7776    ${JAVASCRIPTCORE_DIR}/jit
    78     ${JAVASCRIPTCORE_DIR}/llint
    7977    ${JAVASCRIPTCORE_DIR}/runtime
    8078    ${JAVASCRIPTCORE_DIR}/ForwardingHeaders
Note: See TracChangeset for help on using the changeset viewer.