diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/dfg/DFGClobberize.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/JavaScriptCore/dfg/DFGClobberize.cpp')
-rw-r--r-- | Source/JavaScriptCore/dfg/DFGClobberize.cpp | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/Source/JavaScriptCore/dfg/DFGClobberize.cpp b/Source/JavaScriptCore/dfg/DFGClobberize.cpp index be6185629..a693ba41b 100644 --- a/Source/JavaScriptCore/dfg/DFGClobberize.cpp +++ b/Source/JavaScriptCore/dfg/DFGClobberize.cpp @@ -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 @@ -28,26 +28,53 @@ #if ENABLE(DFG_JIT) -#include "Operations.h" +#include "JSCInlines.h" namespace JSC { namespace DFG { bool doesWrites(Graph& graph, Node* node) { - NoOpClobberize addRead; + NoOpClobberize noOp; CheckClobberize addWrite; - clobberize(graph, node, addRead, addWrite); + clobberize(graph, node, noOp, addWrite, noOp); return addWrite.result(); } +bool accessesOverlap(Graph& graph, Node* node, AbstractHeap heap) +{ + NoOpClobberize noOp; + AbstractHeapOverlaps addAccess(heap); + clobberize(graph, node, addAccess, addAccess, noOp); + return addAccess.result(); +} + bool writesOverlap(Graph& graph, Node* node, AbstractHeap heap) { - NoOpClobberize addRead; + NoOpClobberize noOp; AbstractHeapOverlaps addWrite(heap); - clobberize(graph, node, addRead, addWrite); + clobberize(graph, node, noOp, addWrite, noOp); return addWrite.result(); } +bool clobbersHeap(Graph& graph, Node* node) +{ + bool result = false; + clobberize( + graph, node, NoOpClobberize(), + [&] (AbstractHeap heap) { + switch (heap.kind()) { + case World: + case Heap: + result = true; + break; + default: + break; + } + }, + NoOpClobberize()); + return result; +} + } } // namespace JSC::DFG #endif // ENABLE(DFG_JIT) |