Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Side by Side Diff: src/deoptimizer.h

Issue 2730323002: [deoptimizer] When deoptimizing code, unlink all functions referring to that code. (Closed)
Patch Set: Fix typo Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/debug/liveedit.cc ('k') | src/deoptimizer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_DEOPTIMIZER_H_ 5 #ifndef V8_DEOPTIMIZER_H_
6 #define V8_DEOPTIMIZER_H_ 6 #define V8_DEOPTIMIZER_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/deoptimize-reason.h" 9 #include "src/deoptimize-reason.h"
10 #include "src/macro-assembler.h" 10 #include "src/macro-assembler.h"
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 int frame_index_; 346 int frame_index_;
347 int value_index_; 347 int value_index_;
348 }; 348 };
349 std::deque<ObjectPosition> object_positions_; 349 std::deque<ObjectPosition> object_positions_;
350 }; 350 };
351 351
352 352
353 class OptimizedFunctionVisitor BASE_EMBEDDED { 353 class OptimizedFunctionVisitor BASE_EMBEDDED {
354 public: 354 public:
355 virtual ~OptimizedFunctionVisitor() {} 355 virtual ~OptimizedFunctionVisitor() {}
356
357 // Function which is called before iteration of any optimized functions
358 // from given native context.
359 virtual void EnterContext(Context* context) = 0;
360
361 virtual void VisitFunction(JSFunction* function) = 0; 356 virtual void VisitFunction(JSFunction* function) = 0;
362
363 // Function which is called after iteration of all optimized functions
364 // from given native context.
365 virtual void LeaveContext(Context* context) = 0;
366 }; 357 };
367 358
368 class Deoptimizer : public Malloced { 359 class Deoptimizer : public Malloced {
369 public: 360 public:
370 enum BailoutType { EAGER, LAZY, SOFT, kLastBailoutType = SOFT }; 361 enum BailoutType { EAGER, LAZY, SOFT, kLastBailoutType = SOFT };
371 362
372 enum class BailoutState { 363 enum class BailoutState {
373 NO_REGISTERS, 364 NO_REGISTERS,
374 TOS_REGISTER, 365 TOS_REGISTER,
375 }; 366 };
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 460
470 // Deoptimizes all optimized code that has been previously marked 461 // Deoptimizes all optimized code that has been previously marked
471 // (via code->set_marked_for_deoptimization) and unlinks all functions that 462 // (via code->set_marked_for_deoptimization) and unlinks all functions that
472 // refer to that code. 463 // refer to that code.
473 static void DeoptimizeMarkedCode(Isolate* isolate); 464 static void DeoptimizeMarkedCode(Isolate* isolate);
474 465
475 // Visit all the known optimized functions in a given isolate. 466 // Visit all the known optimized functions in a given isolate.
476 static void VisitAllOptimizedFunctions( 467 static void VisitAllOptimizedFunctions(
477 Isolate* isolate, OptimizedFunctionVisitor* visitor); 468 Isolate* isolate, OptimizedFunctionVisitor* visitor);
478 469
470 static void UnlinkOptimizedCode(Code* code, Context* native_context);
471
479 // The size in bytes of the code required at a lazy deopt patch site. 472 // The size in bytes of the code required at a lazy deopt patch site.
480 static int patch_size(); 473 static int patch_size();
481 474
482 ~Deoptimizer(); 475 ~Deoptimizer();
483 476
484 void MaterializeHeapObjects(JavaScriptFrameIterator* it); 477 void MaterializeHeapObjects(JavaScriptFrameIterator* it);
485 478
486 static void ComputeOutputFrames(Deoptimizer* deoptimizer); 479 static void ComputeOutputFrames(Deoptimizer* deoptimizer);
487 480
488 481
(...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after
1107 std::vector<Handle<Object> > expression_stack_; 1100 std::vector<Handle<Object> > expression_stack_;
1108 int source_position_; 1101 int source_position_;
1109 1102
1110 friend class Deoptimizer; 1103 friend class Deoptimizer;
1111 }; 1104 };
1112 1105
1113 } // namespace internal 1106 } // namespace internal
1114 } // namespace v8 1107 } // namespace v8
1115 1108
1116 #endif // V8_DEOPTIMIZER_H_ 1109 #endif // V8_DEOPTIMIZER_H_
OLDNEW
« no previous file with comments | « src/debug/liveedit.cc ('k') | src/deoptimizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698