summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/dfg/DFGJITCode.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGJITCode.h')
-rw-r--r--Source/JavaScriptCore/dfg/DFGJITCode.h32
1 files changed, 26 insertions, 6 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGJITCode.h b/Source/JavaScriptCore/dfg/DFGJITCode.h
index 0e771e046..243e353a3 100644
--- a/Source/JavaScriptCore/dfg/DFGJITCode.h
+++ b/Source/JavaScriptCore/dfg/DFGJITCode.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -26,10 +26,9 @@
#ifndef DFGJITCode_h
#define DFGJITCode_h
-#include <wtf/Platform.h>
-
#if ENABLE(DFG_JIT)
+#include "CodeBlock.h"
#include "CompilationResult.h"
#include "DFGCommonData.h"
#include "DFGMinifiedGraph.h"
@@ -40,7 +39,11 @@
#include "JITCode.h"
#include <wtf/SegmentedVector.h>
-namespace JSC { namespace DFG {
+namespace JSC {
+
+class TrackedReferences;
+
+namespace DFG {
class JITCompiler;
@@ -109,7 +112,20 @@ public:
void setOptimizationThresholdBasedOnCompilationResult(CodeBlock*, CompilationResult);
#endif // ENABLE(FTL_JIT)
+ void validateReferences(const TrackedReferences&) override;
+
void shrinkToFit();
+
+ RegisterSet liveRegistersToPreserveAtExceptionHandlingCallSite(CodeBlock*, CallSiteIndex) override;
+#if ENABLE(FTL_JIT)
+ CodeBlock* osrEntryBlock() { return m_osrEntryBlock.get(); }
+ void setOSREntryBlock(VM& vm, const JSCell* owner, CodeBlock* osrEntryBlock) { m_osrEntryBlock.set(vm, owner, osrEntryBlock); }
+ void clearOSREntryBlock() { m_osrEntryBlock.clear(); }
+#endif
+
+ static ptrdiff_t commonDataOffset() { return OBJECT_OFFSETOF(JITCode, common); }
+
+ Optional<CodeOrigin> findPC(CodeBlock*, void* pc) override;
private:
friend class JITCompiler; // Allow JITCompiler to call setCodeRef().
@@ -122,8 +138,12 @@ public:
DFG::VariableEventStream variableEventStream;
DFG::MinifiedGraph minifiedDFG;
#if ENABLE(FTL_JIT)
- ExecutionCounter tierUpCounter;
- RefPtr<CodeBlock> osrEntryBlock;
+ uint8_t nestedTriggerIsSet { 0 };
+ uint8_t neverExecutedEntry { 1 };
+ UpperTierExecutionCounter tierUpCounter;
+ WriteBarrier<CodeBlock> m_osrEntryBlock;
+ unsigned osrEntryRetry;
+ bool abandonOSREntry;
#endif // ENABLE(FTL_JIT)
};