Changeset 185930 in webkit for trunk/Source/JavaScriptCore/bytecode/CallLinkInfo.cpp
- Timestamp:
- Jun 24, 2015, 3:37:30 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecode/CallLinkInfo.cpp
r185161 r185930 38 38 namespace JSC { 39 39 40 void CallLinkInfo::clearStub() 41 { 42 if (!stub()) 43 return; 44 45 m_stub.clear(); 46 } 47 40 48 void CallLinkInfo::unlink(RepatchBuffer& repatchBuffer) 41 49 { … … 49 57 unlinkFor( 50 58 repatchBuffer, *this, 51 ( callType == Construct ||callType == ConstructVarargs)? CodeForConstruct : CodeForCall,52 isFTL ? MustPreserveRegisters : RegisterPreservationNotRequired);59 (m_callType == Construct || m_callType == ConstructVarargs)? CodeForConstruct : CodeForCall, 60 m_isFTL ? MustPreserveRegisters : RegisterPreservationNotRequired); 53 61 54 62 // It will be on a list if the callee has a code block. … … 61 69 auto handleSpecificCallee = [&] (JSFunction* callee) { 62 70 if (Heap::isMarked(callee->executable())) 63 hasSeenClosure = true;71 m_hasSeenClosure = true; 64 72 else 65 clearedByGC = true;73 m_clearedByGC = true; 66 74 }; 67 75 68 76 if (isLinked()) { 69 if (stub ) {70 if (!stub ->visitWeak(repatchBuffer)) {77 if (stub()) { 78 if (!stub()->visitWeak(repatchBuffer)) { 71 79 if (Options::verboseOSR()) { 72 80 dataLog( 73 81 "Clearing closure call from ", *repatchBuffer.codeBlock(), " to ", 74 listDump(stub ->variants()), ", stub routine ", RawPointer(stub.get()),82 listDump(stub()->variants()), ", stub routine ", RawPointer(stub()), 75 83 ".\n"); 76 84 } 77 85 unlink(repatchBuffer); 78 clearedByGC = true;86 m_clearedByGC = true; 79 87 } 80 } else if (!Heap::isMarked( callee.get())) {88 } else if (!Heap::isMarked(m_callee.get())) { 81 89 if (Options::verboseOSR()) { 82 90 dataLog( 83 91 "Clearing call from ", *repatchBuffer.codeBlock(), " to ", 84 RawPointer( callee.get()), " (",85 callee.get()->executable()->hashFor(specializationKind()),92 RawPointer(m_callee.get()), " (", 93 m_callee.get()->executable()->hashFor(specializationKind()), 86 94 ").\n"); 87 95 } 88 handleSpecificCallee( callee.get());96 handleSpecificCallee(m_callee.get()); 89 97 unlink(repatchBuffer); 90 98 } 91 99 } 92 if ( !!lastSeenCallee && !Heap::isMarked(lastSeenCallee.get())) {93 handleSpecificCallee(lastSeenCallee .get());94 lastSeenCallee.clear();100 if (haveLastSeenCallee() && !Heap::isMarked(lastSeenCallee())) { 101 handleSpecificCallee(lastSeenCallee()); 102 clearLastSeenCallee(); 95 103 } 96 104 }
Note:
See TracChangeset
for help on using the changeset viewer.