Index: include/v8-platform.h |
diff --git a/src/hydrogen-bce.h b/include/v8-platform.h |
similarity index 58% |
copy from src/hydrogen-bce.h |
copy to include/v8-platform.h |
index c55dea7b7a5133b62b0e4fa81f1e4b3fa3022279..4fb8e6433544dffe0bf27411d9174fd9425b835b 100644 |
--- a/src/hydrogen-bce.h |
+++ b/include/v8-platform.h |
@@ -25,50 +25,51 @@ |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-#ifndef V8_HYDROGEN_BCE_H_ |
-#define V8_HYDROGEN_BCE_H_ |
+#ifndef V8_V8_PLATFORM_H_ |
+#define V8_V8_PLATFORM_H_ |
-#include "hydrogen.h" |
+#include "v8.h" |
namespace v8 { |
-namespace internal { |
- |
-class BoundsCheckBbData; |
-class BoundsCheckKey; |
-class BoundsCheckTable : private ZoneHashMap { |
+/** |
+ * A Task represents a unit of work. |
+ */ |
+class Task { |
public: |
- explicit BoundsCheckTable(Zone* zone); |
- |
- INLINE(BoundsCheckBbData** LookupOrInsert(BoundsCheckKey* key, Zone* zone)); |
- INLINE(void Insert(BoundsCheckKey* key, BoundsCheckBbData* data, Zone* zone)); |
- INLINE(void Delete(BoundsCheckKey* key)); |
+ virtual ~Task() {} |
- private: |
- DISALLOW_COPY_AND_ASSIGN(BoundsCheckTable); |
+ virtual void Run() = 0; |
Sven Panne
2013/11/21 07:43:25
I think that at some point we need something like
jochen (gone - plz use gerrit)
2013/11/21 10:43:42
perfectly it will fit!
The main purpose of this c
|
}; |
- |
-class HBoundsCheckEliminationPhase : public HPhase { |
+/** |
+ * V8 Platform abstraction layer. |
+ * |
+ * The embedder has to provide an implementation of this interface before |
+ * initializing the rest of V8. |
+ */ |
+class Platform { |
public: |
- explicit HBoundsCheckEliminationPhase(HGraph* graph) |
- : HPhase("H_Bounds checks elimination", graph), table_(zone()) { } |
- |
- void Run() { |
- EliminateRedundantBoundsChecks(graph()->entry_block()); |
- } |
- |
- private: |
- void EliminateRedundantBoundsChecks(HBasicBlock* bb); |
- BoundsCheckBbData* PreProcessBlock(HBasicBlock* bb); |
- void PostProcessBlock(HBasicBlock* bb, BoundsCheckBbData* data); |
- |
- BoundsCheckTable table_; |
- |
- DISALLOW_COPY_AND_ASSIGN(HBoundsCheckEliminationPhase); |
+ /** |
+ * Schedules a task to be invoked on a background thread. |task_is_slow| |
+ * indicates that the task will run a long time. The Platform implementation |
+ * takes ownership of |task|. There is no guarantee about order of execution |
+ * of tasks wrt order of scheduling, nor is there a guarantee about the |
+ * thread the task will be run on. |
+ */ |
+ virtual void CallOnBackgroundThread(Task* task, bool task_is_slow) = 0; |
Sven Panne
2013/11/21 07:43:25
Hmmm, why do we need task_is_slow? And what exactl
Benedikt Meurer
2013/11/21 07:49:27
In case we need to keep the "task_is_slow" paramet
jochen (gone - plz use gerrit)
2013/11/21 10:43:42
It's basically mirroring the windows threading API
jochen (gone - plz use gerrit)
2013/11/21 10:43:42
sure
|
+ |
+ /** |
+ * Schedules a task to be invoked on a foreground thread wrt a specific |
+ * |isolate|. Tasks posted for the same isolate should be execute in order of |
+ * scheduling. The definition of "foreground" is opaque to V8. |
+ */ |
+ virtual void CallOnForegroundThread(Isolate* isolate, Task* task) = 0; |
+ |
+ protected: |
+ virtual ~Platform() {} |
}; |
+} // namespace v8 |
-} } // namespace v8::internal |
- |
-#endif // V8_HYDROGEN_BCE_H_ |
+#endif // V8_V8_PLATFORM_H_ |