Fix broken C Loop LLINT build.
authormark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 24 Oct 2013 16:10:59 +0000 (16:10 +0000)
committermark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 24 Oct 2013 16:10:59 +0000 (16:10 +0000)
commita62f8ed9eebd1ee4ddf5a3e19998591bf7d190c4
treecc5d3c186c423297a3d4d9aa88509d2bb09861e9
parent37e259e21750d00e5813a30456ed407b81e18579
Fix broken C Loop LLINT build.
https://bugs.webkit.org/show_bug.cgi?id=123271.

Reviewed by Michael Saboff.

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::printGetByIdCacheStatus): Added an UNUSED_PARAM().
(JSC::CodeBlock::dumpBytecode): Added #if ENABLE(JIT) to JIT only code.
* bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeFor): Added an UNUSED_PARAM().
* bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeFor): Added an UNUSED_PARAM().
* bytecode/StructureStubInfo.h:
- Added a stub StubInfoMap for non-JIT builds. StubInfoMap is still used
  in function prototypes even when !ENABLE(JIT). Rather that adding #if's
  in many places, we just provide a stub/placeholder implementation that
  is unused but keeps the compiler happy.
* jit/JITOperations.h: Added #if ENABLE(JIT).
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
- The putByVal() macro reifies a slow path which is never taken in one case.
  This translates into a label that is never used in the C Loop LLINT. The
  C++ compiler doesn't like unused labels. So, we fix this by adding a
  cloopUnusedLabel offline asm instruction that synthesizes the following:

      if (false) goto unusedLabel;

  This keeps the C++ compiler happy without changing code behavior.
* offlineasm/cloop.rb: Implementing cloopUnusedLabel.
* offlineasm/instructions.rb: Declaring cloopUnusedLabel.
* runtime/Executable.cpp:
(JSC::setupJIT): Added UNUSED_PARAM()s.
(JSC::ScriptExecutable::prepareForExecutionImpl):
- run-javascriptcore-tests have phases that forces the LLINT to be off
  which in turn asserts that the JIT is enabled. With the C Loop LLINT,
  this combination is illegal. So, we override the setup code here to
  always use the LLINT if !ENABLE(JIT) regardless of what options are
  passed in.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@157932 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/bytecode/CodeBlock.cpp
Source/JavaScriptCore/bytecode/GetByIdStatus.cpp
Source/JavaScriptCore/bytecode/PutByIdStatus.cpp
Source/JavaScriptCore/bytecode/StructureStubInfo.h
Source/JavaScriptCore/jit/JITOperations.h
Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
Source/JavaScriptCore/offlineasm/cloop.rb
Source/JavaScriptCore/offlineasm/instructions.rb
Source/JavaScriptCore/runtime/Executable.cpp