Changeset 188311 in webkit


Ignore:
Timestamp:
Aug 11, 2015 4:50:02 PM (9 years ago)
Author:
ap@apple.com
Message:

Make ASan build not depend on asan.xcconfig
https://bugs.webkit.org/show_bug.cgi?id=147840
rdar://problem/21093702

Reviewed by Daniel Bates.

Source/JavaScriptCore:

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::OSREntryData::dump):
(JSC::DFG::prepareOSREntry):

  • ftl/FTLOSREntry.cpp:

(JSC::FTL::prepareOSREntry):

  • heap/ConservativeRoots.cpp:

(JSC::ConservativeRoots::genericAddPointer):
(JSC::ConservativeRoots::genericAddSpan):

  • heap/MachineStackMarker.cpp:

(JSC::MachineThreads::removeThreadIfFound):
(JSC::MachineThreads::gatherFromCurrentThread):
(JSC::MachineThreads::Thread::captureStack):
(JSC::copyMemory):

  • interpreter/Register.h:

(JSC::Register::operator=):
(JSC::Register::asanUnsafeJSValue):
(JSC::Register::jsValue):

Tools:

  • asan/asan.xcconfig:
  • asan/webkit-asan-ignore.txt: Removed. It's no longer needed, as unsafe functions

are now marked in source code.

Location:
trunk
Files:
1 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r188299 r188311  
     12015-08-11  Alexey Proskuryakov  <ap@apple.com>
     2
     3        Make ASan build not depend on asan.xcconfig
     4        https://bugs.webkit.org/show_bug.cgi?id=147840
     5        rdar://problem/21093702
     6
     7        Reviewed by Daniel Bates.
     8
     9        * dfg/DFGOSREntry.cpp:
     10        (JSC::DFG::OSREntryData::dump):
     11        (JSC::DFG::prepareOSREntry):
     12        * ftl/FTLOSREntry.cpp:
     13        (JSC::FTL::prepareOSREntry):
     14        * heap/ConservativeRoots.cpp:
     15        (JSC::ConservativeRoots::genericAddPointer):
     16        (JSC::ConservativeRoots::genericAddSpan):
     17        * heap/MachineStackMarker.cpp:
     18        (JSC::MachineThreads::removeThreadIfFound):
     19        (JSC::MachineThreads::gatherFromCurrentThread):
     20        (JSC::MachineThreads::Thread::captureStack):
     21        (JSC::copyMemory):
     22        * interpreter/Register.h:
     23        (JSC::Register::operator=):
     24        (JSC::Register::asanUnsafeJSValue):
     25        (JSC::Register::jsValue):
     26
    1272015-08-11  Yusuke Suzuki  <utatane.tea@gmail.com>
    228
  • trunk/Source/JavaScriptCore/dfg/DFGOSREntry.cpp

    r186691 r188311  
    9191}
    9292
     93SUPPRESS_ASAN
    9394void* prepareOSREntry(ExecState* exec, CodeBlock* codeBlock, unsigned bytecodeIndex)
    9495{
     
    203204        int localOffset = virtualRegisterForLocal(local).offset();
    204205        if (entry->m_localsForcedDouble.get(local)) {
    205             if (!exec->registers()[localOffset].jsValue().isNumber()) {
     206            if (!exec->registers()[localOffset].asanUnsafeJSValue().isNumber()) {
    206207                if (Options::verboseOSR()) {
    207208                    dataLog(
    208209                        "    OSR failed because variable ", localOffset, " is ",
    209                         exec->registers()[localOffset].jsValue(), ", expected number.\n");
     210                        exec->registers()[localOffset].asanUnsafeJSValue(), ", expected number.\n");
    210211                }
    211212                return 0;
     
    214215        }
    215216        if (entry->m_localsForcedMachineInt.get(local)) {
    216             if (!exec->registers()[localOffset].jsValue().isMachineInt()) {
     217            if (!exec->registers()[localOffset].asanUnsafeJSValue().isMachineInt()) {
    217218                if (Options::verboseOSR()) {
    218219                    dataLog(
    219220                        "    OSR failed because variable ", localOffset, " is ",
    220                         exec->registers()[localOffset].jsValue(), ", expected ",
     221                        exec->registers()[localOffset].asanUnsafeJSValue(), ", expected ",
    221222                        "machine int.\n");
    222223                }
     
    225226            continue;
    226227        }
    227         if (!entry->m_expectedValues.local(local).validate(exec->registers()[localOffset].jsValue())) {
     228        if (!entry->m_expectedValues.local(local).validate(exec->registers()[localOffset].asanUnsafeJSValue())) {
    228229            if (Options::verboseOSR()) {
    229230                dataLog(
    230231                    "    OSR failed because variable ", localOffset, " is ",
    231                     exec->registers()[localOffset].jsValue(), ", expected ",
     232                    exec->registers()[localOffset].asanUnsafeJSValue(), ", expected ",
    232233                    entry->m_expectedValues.local(local), ".\n");
    233234            }
     
    281282        if (reg.isLocal()) {
    282283            if (entry->m_localsForcedDouble.get(reg.toLocal())) {
    283                 *bitwise_cast<double*>(pivot + index) = exec->registers()[reg.offset()].jsValue().asNumber();
     284                *bitwise_cast<double*>(pivot + index) = exec->registers()[reg.offset()].asanUnsafeJSValue().asNumber();
    284285                continue;
    285286            }
    286287           
    287288            if (entry->m_localsForcedMachineInt.get(reg.toLocal())) {
    288                 *bitwise_cast<int64_t*>(pivot + index) = exec->registers()[reg.offset()].jsValue().asMachineInt() << JSValue::int52ShiftAmount;
     289                *bitwise_cast<int64_t*>(pivot + index) = exec->registers()[reg.offset()].asanUnsafeJSValue().asMachineInt() << JSValue::int52ShiftAmount;
    289290                continue;
    290291            }
    291292        }
    292293       
    293         pivot[index] = exec->registers()[reg.offset()].jsValue();
     294        pivot[index] = exec->registers()[reg.offset()].asanUnsafeJSValue();
    294295    }
    295296   
     
    297298    Vector<JSValue> temporaryLocals(entry->m_reshufflings.size());
    298299    for (unsigned i = entry->m_reshufflings.size(); i--;)
    299         temporaryLocals[i] = pivot[VirtualRegister(entry->m_reshufflings[i].fromOffset).toLocal()].jsValue();
     300        temporaryLocals[i] = pivot[VirtualRegister(entry->m_reshufflings[i].fromOffset).toLocal()].asanUnsafeJSValue();
    300301    for (unsigned i = entry->m_reshufflings.size(); i--;)
    301302        pivot[VirtualRegister(entry->m_reshufflings[i].toOffset).toLocal()] = temporaryLocals[i];
  • trunk/Source/JavaScriptCore/ftl/FTLOSREntry.cpp

    r172129 r188311  
    3939namespace JSC { namespace FTL {
    4040
     41SUPPRESS_ASAN
    4142void* prepareOSREntry(
    4243    ExecState* exec, CodeBlock* dfgCodeBlock, CodeBlock* entryCodeBlock,
     
    7273   
    7374    for (int argument = values.numberOfArguments(); argument--;) {
    74         JSValue valueOnStack = exec->r(virtualRegisterForArgument(argument).offset()).jsValue();
     75        JSValue valueOnStack = exec->r(virtualRegisterForArgument(argument).offset()).asanUnsafeJSValue();
    7576        JSValue reconstructedValue = values.argument(argument);
    7677        if (valueOnStack == reconstructedValue || !argument)
  • trunk/Source/JavaScriptCore/heap/ConservativeRoots.cpp

    r164500 r188311  
    9393
    9494template<typename MarkHook>
     95SUPPRESS_ASAN
    9596void ConservativeRoots::genericAddSpan(void* begin, void* end, MarkHook& markHook)
    9697{
  • trunk/Source/JavaScriptCore/heap/MachineStackMarker.cpp

    r188169 r188311  
    336336    }
    337337}
    338    
     338
     339SUPPRESS_ASAN
    339340void MachineThreads::gatherFromCurrentThread(ConservativeRoots& conservativeRoots, JITStubRoutineSet& jitStubRoutines, CodeBlockSet& codeBlocks, void* stackOrigin, void* stackTop, RegisterState& calleeSavedRegisters)
    340341{
     
    520521}
    521522
     523SUPPRESS_ASAN
    522524static void copyMemory(void* dst, const void* src, size_t size)
    523525{
  • trunk/Source/JavaScriptCore/interpreter/Register.h

    r183935 r188311  
    5252        Register& operator=(const JSValue&);
    5353        JSValue jsValue() const;
     54        JSValue asanUnsafeJSValue() const;
    5455        EncodedJSValue encodedJSValue() const;
    5556       
     
    111112    }
    112113
     114    // FIXME (rdar://problem/19379214): ASan only needs to be suppressed for Register::jsValue() when called from prepareOSREntry(), but there is currently no way to express this short of adding a separate copy of the function.
     115    SUPPRESS_ASAN ALWAYS_INLINE JSValue Register::asanUnsafeJSValue() const
     116    {
     117        return JSValue::decode(u.value);
     118    }
     119
    113120    ALWAYS_INLINE JSValue Register::jsValue() const
    114121    {
  • trunk/Source/WTF/wtf/Compiler.h

    r187819 r188311  
    138138#endif
    139139
     140#if ASAN_ENABLED
     141#define SUPPRESS_ASAN __attribute__((no_sanitize_address))
     142#else
     143#define SUPPRESS_ASAN
     144#endif
     145
    140146/* ==== Compiler-independent macros for various compiler features, in alphabetical order ==== */
    141147
  • trunk/Tools/ChangeLog

    r188310 r188311  
     12015-08-11  Alexey Proskuryakov  <ap@apple.com>
     2
     3        Make ASan build not depend on asan.xcconfig
     4        https://bugs.webkit.org/show_bug.cgi?id=147840
     5        rdar://problem/21093702
     6
     7        Reviewed by Daniel Bates.
     8
     9        * asan/asan.xcconfig:
     10        * asan/webkit-asan-ignore.txt: Removed. It's no longer needed, as unsafe functions
     11        are now marked in source code.
     12
    1132015-08-11  Filip Pizlo  <fpizlo@apple.com>
    214
  • trunk/Tools/asan/asan.xcconfig

    r184862 r188311  
    1313CLANG_ADDRESS_SANITIZER=YES
    1414
    15 ASAN_OTHER_CFLAGS = -fsanitize-blacklist=$(ASAN_IGNORE) -fno-omit-frame-pointer -g;
     15ASAN_OTHER_CFLAGS = -fno-omit-frame-pointer -g;
    1616ASAN_OTHER_CPLUSPLUSFLAGS = $(ASAN_OTHER_CFLAGS);
    1717
Note: See TracChangeset for help on using the changeset viewer.