| Index: src/compiler.h
|
| diff --git a/src/compiler.h b/src/compiler.h
|
| index 6df21de357ae9c10bb1aa3419a6018f365b64ebc..5465a2dedab84e97533b7003115afc9b362ffb4c 100644
|
| --- a/src/compiler.h
|
| +++ b/src/compiler.h
|
| @@ -39,7 +39,7 @@ class ScriptDataImpl;
|
|
|
| // CompilationInfo encapsulates some information known at compile time. It
|
| // is constructed based on the resources available at compile-time.
|
| -class CompilationInfo BASE_EMBEDDED {
|
| +class CompilationInfo {
|
| public:
|
| CompilationInfo(Handle<Script> script, Zone* zone);
|
| CompilationInfo(Handle<SharedFunctionInfo> shared_info, Zone* zone);
|
| @@ -180,6 +180,13 @@ class CompilationInfo BASE_EMBEDDED {
|
| deferred_handles_ = deferred_handles;
|
| }
|
|
|
| + void SaveHandles() {
|
| + SaveHandle(&closure_);
|
| + SaveHandle(&shared_info_);
|
| + SaveHandle(&calling_context_);
|
| + SaveHandle(&script_);
|
| + }
|
| +
|
| private:
|
| Isolate* isolate_;
|
|
|
| @@ -268,6 +275,14 @@ class CompilationInfo BASE_EMBEDDED {
|
|
|
| DeferredHandles* deferred_handles_;
|
|
|
| + template<typename T>
|
| + void SaveHandle(Handle<T> *object) {
|
| + if (!object->is_null()) {
|
| + Handle<T> handle(*(*object));
|
| + *object = handle;
|
| + }
|
| + }
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(CompilationInfo);
|
| };
|
|
|
| @@ -346,6 +361,12 @@ class OptimizingCompiler: public ZoneObject {
|
| Status last_status() const { return last_status_; }
|
| CompilationInfo* info() const { return info_; }
|
|
|
| + MUST_USE_RESULT Status AbortOptimization() {
|
| + info_->AbortOptimization();
|
| + info_->shared_info()->DisableOptimization();
|
| + return SetLastStatus(BAILED_OUT);
|
| + }
|
| +
|
| private:
|
| CompilationInfo* info_;
|
| TypeFeedbackOracle* oracle_;
|
| @@ -362,11 +383,6 @@ class OptimizingCompiler: public ZoneObject {
|
| return last_status_;
|
| }
|
| void RecordOptimizationStats();
|
| - MUST_USE_RESULT Status AbortOptimization() {
|
| - info_->AbortOptimization();
|
| - info_->shared_info()->DisableOptimization();
|
| - return SetLastStatus(BAILED_OUT);
|
| - }
|
|
|
| struct Timer {
|
| Timer(OptimizingCompiler* compiler, int64_t* location)
|
| @@ -432,6 +448,8 @@ class Compiler : public AllStatic {
|
| // success and false if the compilation resulted in a stack overflow.
|
| static bool CompileLazy(CompilationInfo* info);
|
|
|
| + static void RecompileParallel(Handle<JSFunction> function);
|
| +
|
| // Compile a shared function info object (the function is possibly lazily
|
| // compiled).
|
| static Handle<SharedFunctionInfo> BuildFunctionInfo(FunctionLiteral* node,
|
| @@ -443,6 +461,8 @@ class Compiler : public AllStatic {
|
| bool is_toplevel,
|
| Handle<Script> script);
|
|
|
| + static void InstallOptimizedCode(OptimizingCompiler* info);
|
| +
|
| #ifdef ENABLE_DEBUGGER_SUPPORT
|
| static bool MakeCodeForLiveEdit(CompilationInfo* info);
|
| #endif
|
|
|