Index: src/allocation-site-scopes.h |
diff --git a/src/hydrogen-osr.h b/src/allocation-site-scopes.h |
similarity index 56% |
copy from src/hydrogen-osr.h |
copy to src/allocation-site-scopes.h |
index ae72ce650c59d198056c5b13db48c258f90109f4..7158317dc967a90bde1b2de5528291ce07c87d17 100644 |
--- a/src/hydrogen-osr.h |
+++ b/src/allocation-site-scopes.h |
@@ -25,53 +25,60 @@ |
// (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_OSR_H_ |
-#define V8_HYDROGEN_OSR_H_ |
+#ifndef V8_ALLOCATION_SITE_SCOPES_H_ |
+#define V8_ALLOCATION_SITE_SCOPES_H_ |
-#include "hydrogen.h" |
#include "ast.h" |
#include "zone.h" |
+#include "objects.h" |
Hannes Payer (out of office)
2013/10/11 12:55:44
alphabetic order
mvstanton
2013/10/11 13:41:47
Done.
|
+#include "handles.h" |
namespace v8 { |
namespace internal { |
-// Responsible for building graph parts related to OSR and otherwise |
-// setting up the graph to do an OSR compile. |
-class HOsrBuilder : public ZoneObject { |
+ |
+class AllocationSiteContext { |
public: |
- explicit HOsrBuilder(HOptimizedGraphBuilder* builder) |
- : unoptimized_frame_slots_(0), |
- builder_(builder), |
- osr_entry_(NULL), |
- osr_loop_entry_(NULL), |
- osr_values_(NULL) { } |
+ AllocationSiteContext(Isolate* isolate, bool activated) { |
+ isolate_ = isolate; |
+ activated_ = activated; |
+ }; |
+ Handle<AllocationSite> top() { return top_; } |
+ Handle<AllocationSite> current() { return current_; } |
+ // If activated, then recursively create sites/mementos |
+ bool activated() const { return activated_; } |
- // Creates the loop entry block for the given statement, setting up OSR |
- // entries as necessary, and sets the current block to the new block. |
- HBasicBlock* BuildOsrLoopEntry(IterationStatement* statement); |
+ private: |
+ friend class AllocationSiteCreationScope; |
+ friend class AllocationSiteUsageScope; |
- // Process the hydrogen graph after it has been completed, performing |
- // any OSR-specific cleanups or changes. |
- void FinishGraph(); |
+ Isolate* isolate_; |
+ Handle<AllocationSite> top_; |
+ Handle<AllocationSite> current_; |
+ bool activated_; |
+}; |
- // Process the OSR values and phis after initial graph optimization. |
- void FinishOsrValues(); |
- // Return the number of slots in the unoptimized frame at the entry to OSR. |
- int UnoptimizedFrameSlots() const { |
- return unoptimized_frame_slots_; |
- } |
+class AllocationSiteCreationScope { |
+ public: |
+ explicit AllocationSiteCreationScope(AllocationSiteContext* context); |
+ Handle<Object> RecordTransitionInfo(Handle<Object> transition_info); |
+ private: |
+ AllocationSiteContext* site_context_; |
+ Handle<AllocationSite> current_; |
+}; |
- bool HasOsrEntryAt(IterationStatement* statement); |
- private: |
- int unoptimized_frame_slots_; |
- HOptimizedGraphBuilder* builder_; |
- HBasicBlock* osr_entry_; |
- HBasicBlock* osr_loop_entry_; |
- ZoneList<HUnknownOSRValue*>* osr_values_; |
+class AllocationSiteUsageScope { |
+ public: |
+ AllocationSiteUsageScope(AllocationSiteContext* context, |
+ Handle<Object> expected_transition_info); |
+ AllocationSiteUsageScope(AllocationSiteContext* context, |
+ Handle<AllocationSite> top, |
+ Handle<Object> expected_transition_info); |
}; |
+ |
} } // namespace v8::internal |
-#endif // V8_HYDROGEN_OSR_H_ |
+#endif // V8_ALLOCATION_SITE_SCOPES_H_ |