Ignore:
Timestamp:
Oct 24, 2013, 9:10:59 AM (12 years ago)
Author:
[email protected]
Message:

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.
File:
1 edited

Legend:

Unmodified
Added
Removed
Note: See TracChangeset for help on using the changeset viewer.