���� JFIF �� � ( %"1"%)+...383,7(-.-
![]() Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20 System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 User : apache ( 48) PHP Version : 7.4.20 Disable Function : NONE Directory : /home/real/node-v13.0.1/deps/v8/src/debug/ |
// Copyright 2012 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_DEBUG_LIVEEDIT_H_ #define V8_DEBUG_LIVEEDIT_H_ #include <vector> #include "src/common/globals.h" #include "src/handles/handles.h" namespace v8 { namespace debug { struct LiveEditResult; } namespace internal { class Script; class String; class Debug; class JavaScriptFrame; struct SourceChangeRange { int start_position; int end_position; int new_start_position; int new_end_position; }; /** Liveedit step-by-step: 1. calculate diff between old source and new source, 2. map function literals from old source to new source, 3. create new script for new_source, 4. mark literals with changed code as changed, all others as unchanged, 5. check that for changed literals there are no: - running generators in the heap, - non droppable frames (e.g. running generator) above them on stack. 6. mark the bottom most frame with changed function as scheduled for restart if any, 7. for unchanged functions: - deoptimize, - remove from cache, - update source positions, - move to new script, - reset feedback information and preparsed scope information if any, - replace any sfi in constant pool with changed one if any. 8. for changed functions: - deoptimize - remove from cache, - reset feedback information, - update all links from js functions to old shared with new one. 9. swap scripts. */ class V8_EXPORT_PRIVATE LiveEdit : AllStatic { public: static void InitializeThreadLocal(Debug* debug); // Restarts the call frame and completely drops all frames above it. static bool RestartFrame(JavaScriptFrame* frame); static void CompareStrings(Isolate* isolate, Handle<String> a, Handle<String> b, std::vector<SourceChangeRange>* diffs); static int TranslatePosition(const std::vector<SourceChangeRange>& changed, int position); static void PatchScript(Isolate* isolate, Handle<Script> script, Handle<String> source, bool preview, debug::LiveEditResult* result); // Architecture-specific constant. static const bool kFrameDropperSupported; }; } // namespace internal } // namespace v8 #endif // V8_DEBUG_LIVEEDIT_H_