Changeset 251457 in webkit for trunk/Source/JavaScriptCore/interpreter
- Timestamp:
- Oct 22, 2019, 2:23:26 PM (6 years ago)
- Location:
- trunk/Source/JavaScriptCore/interpreter
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/interpreter/CallFrame.cpp
r251425 r251457 234 234 } 235 235 236 SourceOrigin CallFrame::callerSourceOrigin( )236 SourceOrigin CallFrame::callerSourceOrigin(VM& vm) 237 237 { 238 238 RELEASE_ASSERT(callee().isCell()); 239 VM* vm = &this->vm();240 239 SourceOrigin sourceOrigin; 241 240 bool haveSkippedFirstFrame = false; … … 293 292 case FunctionCode: 294 293 if (jsCallee()) 295 return getCalculatedDisplayName( vm(), jsCallee());294 return getCalculatedDisplayName(codeBlock->vm(), jsCallee()); 296 295 return emptyString(); 297 296 } -
trunk/Source/JavaScriptCore/interpreter/CallFrame.h
r251425 r251457 137 137 JSGlobalObject* lexicalGlobalObject() const; 138 138 139 VM& vm() const; 139 // FIXME: Remove this function 140 // https://bugs.webkit.org/show_bug.cgi?id=203272 141 VM& deprecatedVM() const; 140 142 141 143 static CallFrame* create(Register* callFrameBase) { return static_cast<CallFrame*>(callFrameBase); } … … 152 154 JS_EXPORT_PRIVATE CallFrame* callerFrame(EntryFrame*&) const; 153 155 154 JS_EXPORT_PRIVATE SourceOrigin callerSourceOrigin( );156 JS_EXPORT_PRIVATE SourceOrigin callerSourceOrigin(VM&); 155 157 156 158 static ptrdiff_t callerFrameOffset() { return OBJECT_OFFSETOF(CallerFrameAndPC, callerFrame); } … … 281 283 // receiver. We should always be using StackVisitor directly. 282 284 // It's only valid to call this from a non-wasm top frame. 283 template <StackVisitor::EmptyEntryFrameAction action = StackVisitor::ContinueIfTopEntryFrameIsEmpty, typename Functor> void iterate(const Functor& functor) 284 { 285 VM* vm; 285 template <StackVisitor::EmptyEntryFrameAction action = StackVisitor::ContinueIfTopEntryFrameIsEmpty, typename Functor> void iterate(VM& vm, const Functor& functor) 286 { 286 287 void* rawThis = this; 287 if (!!rawThis) {288 if (!!rawThis) 288 289 RELEASE_ASSERT(callee().isCell()); 289 vm = &this->vm();290 } else291 vm = nullptr;292 290 StackVisitor::visit<action, Functor>(this, vm, functor); 293 291 } -
trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp
r251425 r251457 177 177 } 178 178 179 unsigned sizeOfVarargs(JSGlobalObject* globalObject, CallFrame* callFrame,JSValue arguments, uint32_t firstVarArgOffset)180 { 181 VM& vm = callFrame->vm();179 unsigned sizeOfVarargs(JSGlobalObject* globalObject, JSValue arguments, uint32_t firstVarArgOffset) 180 { 181 VM& vm = globalObject->vm(); 182 182 auto scope = DECLARE_THROW_SCOPE(vm); 183 183 … … 242 242 auto scope = DECLARE_THROW_SCOPE(vm); 243 243 244 unsigned length = sizeOfVarargs(globalObject, callFrame,arguments, firstVarArgOffset);244 unsigned length = sizeOfVarargs(globalObject, arguments, firstVarArgOffset); 245 245 RETURN_IF_EXCEPTION(scope, 0); 246 246 … … 441 441 size_t framesCount = 0; 442 442 size_t maxFramesCountNeeded = maxStackSize + framesToSkip; 443 StackVisitor::visit(callFrame, &vm, [&] (StackVisitor&) -> StackVisitor::Status {443 StackVisitor::visit(callFrame, vm, [&] (StackVisitor&) -> StackVisitor::Status { 444 444 if (++framesCount < maxFramesCountNeeded) 445 445 return StackVisitor::Continue; … … 453 453 454 454 GetStackTraceFunctor functor(vm, owner, results, framesToSkip, framesCount); 455 StackVisitor::visit(callFrame, &vm, functor);455 StackVisitor::visit(callFrame, vm, functor); 456 456 ASSERT(results.size() == results.capacity()); 457 457 } … … 628 628 HandlerInfo* handler = nullptr; 629 629 UnwindFunctor functor(vm, callFrame, isTerminatedExecutionException(vm, exception), codeBlock, handler); 630 StackVisitor::visit<StackVisitor::TerminateIfTopEntryFrameIsEmpty>(callFrame, &vm, functor);630 StackVisitor::visit<StackVisitor::TerminateIfTopEntryFrameIsEmpty>(callFrame, vm, functor); 631 631 if (!handler) 632 632 return nullptr; … … 650 650 else { 651 651 GetCatchHandlerFunctor functor; 652 StackVisitor::visit(callFrame, &vm, functor);652 StackVisitor::visit(callFrame, vm, functor); 653 653 HandlerInfo* handler = functor.handler(); 654 654 ASSERT(!handler || handler->isCatchHandler()); … … 1215 1215 NEVER_INLINE void Interpreter::debug(CallFrame* callFrame, DebugHookType debugHookType) 1216 1216 { 1217 VM& vm = callFrame-> vm();1217 VM& vm = callFrame->deprecatedVM(); 1218 1218 auto scope = DECLARE_CATCH_SCOPE(vm); 1219 1219 Debugger* debugger = callFrame->lexicalGlobalObject()->debugger(); -
trunk/Source/JavaScriptCore/interpreter/Interpreter.h
r251425 r251457 168 168 } 169 169 170 unsigned sizeOfVarargs(JSGlobalObject*, CallFrame*,JSValue arguments, uint32_t firstVarArgOffset);170 unsigned sizeOfVarargs(JSGlobalObject*, JSValue arguments, uint32_t firstVarArgOffset); 171 171 static constexpr unsigned maxArguments = 0x10000; 172 172 unsigned sizeFrameForVarargs(JSGlobalObject*, CallFrame*, VM&, JSValue arguments, unsigned numUsedStackSlots, uint32_t firstVarArgOffset); -
trunk/Source/JavaScriptCore/interpreter/ShadowChicken.cpp
r251425 r251457 174 174 Vector<Frame> stackRightNow; 175 175 StackVisitor::visit( 176 callFrame, &vm, [&] (StackVisitor& visitor) -> StackVisitor::Status {176 callFrame, vm, [&] (StackVisitor& visitor) -> StackVisitor::Status { 177 177 if (visitor->isInlinedFrame()) 178 178 return StackVisitor::Continue; … … 295 295 Vector<Frame> toPush; 296 296 StackVisitor::visit( 297 callFrame, &vm, [&] (StackVisitor& visitor) -> StackVisitor::Status {297 callFrame, vm, [&] (StackVisitor& visitor) -> StackVisitor::Status { 298 298 if (visitor->isInlinedFrame()) { 299 299 // FIXME: Handle inlining. -
trunk/Source/JavaScriptCore/interpreter/StackVisitor.cpp
r251425 r251457 40 40 namespace JSC { 41 41 42 StackVisitor::StackVisitor(CallFrame* startFrame, VM *vm)42 StackVisitor::StackVisitor(CallFrame* startFrame, VM& vm) 43 43 { 44 44 m_frame.m_index = 0; … … 46 46 CallFrame* topFrame; 47 47 if (startFrame) { 48 ASSERT(vm); 49 ASSERT(!vm->topCallFrame || reinterpret_cast<void*>(vm->topCallFrame) != vm->topEntryFrame); 50 51 m_frame.m_entryFrame = vm->topEntryFrame; 52 topFrame = vm->topCallFrame; 48 ASSERT(!vm.topCallFrame || reinterpret_cast<void*>(vm.topCallFrame) != vm.topEntryFrame); 49 50 m_frame.m_entryFrame = vm.topEntryFrame; 51 topFrame = vm.topCallFrame; 53 52 54 53 if (topFrame && topFrame->isStackOverflowFrame()) { 55 54 topFrame = topFrame->callerFrame(m_frame.m_entryFrame); 56 m_topEntryFrameIsEmpty = (m_frame.m_entryFrame != vm ->topEntryFrame);57 if (startFrame == vm ->topCallFrame)55 m_topEntryFrameIsEmpty = (m_frame.m_entryFrame != vm.topEntryFrame); 56 if (startFrame == vm.topCallFrame) 58 57 startFrame = topFrame; 59 58 } … … 304 303 JSCell* callee = this->callee().asCell(); 305 304 if (callee) 306 traceLine = getCalculatedDisplayName(callFrame()-> vm(), jsCast<JSObject*>(callee)).impl();305 traceLine = getCalculatedDisplayName(callFrame()->deprecatedVM(), jsCast<JSObject*>(callee)).impl(); 307 306 break; 308 307 } 309 308 case CodeType::Function: 310 traceLine = getCalculatedDisplayName(callFrame()-> vm(), jsCast<JSObject*>(this->callee().asCell())).impl();309 traceLine = getCalculatedDisplayName(callFrame()->deprecatedVM(), jsCast<JSObject*>(this->callee().asCell())).impl(); 311 310 break; 312 311 case CodeType::Global: -
trunk/Source/JavaScriptCore/interpreter/StackVisitor.h
r251425 r251457 143 143 144 144 template <EmptyEntryFrameAction action = ContinueIfTopEntryFrameIsEmpty, typename Functor> 145 static void visit(CallFrame* startFrame, VM *vm, const Functor& functor)145 static void visit(CallFrame* startFrame, VM& vm, const Functor& functor) 146 146 { 147 147 StackVisitor visitor(startFrame, vm); … … 163 163 164 164 private: 165 JS_EXPORT_PRIVATE StackVisitor(CallFrame* startFrame, VM *);165 JS_EXPORT_PRIVATE StackVisitor(CallFrame* startFrame, VM&); 166 166 167 167 JS_EXPORT_PRIVATE void gotoNextFrame();
Note:
See TracChangeset
for help on using the changeset viewer.