Ignore:
Timestamp:
Nov 9, 2015, 6:15:21 AM (10 years ago)
Author:
[email protected]
Message:

JS Built-ins functions should be able to assert
https://bugs.webkit.org/show_bug.cgi?id=150333

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

Introduced @assert to enable asserting in JS built-ins.
Adding a new bytecode 'assert' to implement it.
In debug builds, @assert generates 'assert' bytecodes.
In release builds, no byte code is produced for @assert.

In case assert is false, the JS built-in and the line number are dumped.

  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitAssert):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp: Generating op_assert bytecode for @assert for Debug builds.

(JSC::BytecodeIntrinsicNode::emit_intrinsic_assert):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_assert):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_create_assert):

  • llint/LowLevelInterpreter.asm:
  • runtime/CommonIdentifiers.h: Adding @assert identifier as intrinsic.
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:

Source/WebCore:

  • Modules/streams/ReadableStreamInternals.js:

(privateInitializeReadableStreamReader): Activating an @assert.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp

    r192147 r192155  
    773773{
    774774    return (this->*m_emitter)(generator, dst);
     775}
     776
     777RegisterID* BytecodeIntrinsicNode::emit_intrinsic_assert(BytecodeGenerator& generator, RegisterID* dst)
     778{
     779#ifndef NDEBUG
     780    ArgumentListNode* node = m_args->m_listNode;
     781    RefPtr<RegisterID> condition = generator.emitNode(node);
     782    generator.emitAssert(condition.get(), node->firstLine());
     783    return dst;
     784#else
     785    UNUSED_PARAM(generator);
     786    return dst;
     787#endif
    775788}
    776789
Note: See TracChangeset for help on using the changeset viewer.