Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(434)

Unified Diff: runtime/vm/object_test.cc

Issue 1129113002: Delta encode pc descriptors. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/vm/object_test.cc
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index 8dbbb529db8c22ca3b45522c40a93d7e6c6833f6..4d4b92d6c5752b6e899b0a507dfbf50a604da9ad 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -15,6 +15,7 @@
#include "vm/simulator.h"
#include "vm/symbols.h"
#include "vm/unit_test.h"
+#include "vm/code_descriptors.h"
namespace dart {
@@ -2865,16 +2866,17 @@ TEST_CASE(ExceptionHandlers) {
TEST_CASE(PcDescriptors) {
- const int kNumEntries = 6;
- // Add PcDescriptors to the code.
+ DescriptorList* builder = new DescriptorList(0);
+
+ builder->AddDescriptor(RawPcDescriptors::kOther, 10, 1, 20, 1);
+ builder->AddDescriptor(RawPcDescriptors::kDeopt, 20, 2, 30, 0);
+ builder->AddDescriptor(RawPcDescriptors::kOther, 30, 3, 40, 1);
+ builder->AddDescriptor(RawPcDescriptors::kOther, 10, 4, 40, 2);
+ builder->AddDescriptor(RawPcDescriptors::kOther, 10, 5, 80, 3);
+ builder->AddDescriptor(RawPcDescriptors::kOther, 80, 6, 150, 3);
Florian Schneider 2015/05/11 11:10:56 Please add a few test cases with larger deltas is
rmacnak 2015/05/11 20:27:04 Done.
+
PcDescriptors& descriptors = PcDescriptors::Handle();
- descriptors ^= PcDescriptors::New(kNumEntries, true);
- descriptors.AddDescriptor(0, 10, RawPcDescriptors::kOther, 1, 20, 1);
- descriptors.AddDescriptor(1, 20, RawPcDescriptors::kDeopt, 2, 30, 0);
- descriptors.AddDescriptor(2, 30, RawPcDescriptors::kOther, 3, 40, 1);
- descriptors.AddDescriptor(3, 10, RawPcDescriptors::kOther, 4, 40, 2);
- descriptors.AddDescriptor(4, 10, RawPcDescriptors::kOther, 5, 80, 3);
- descriptors.AddDescriptor(5, 80, RawPcDescriptors::kOther, 6, 150, 3);
+ descriptors ^= builder->FinalizePcDescriptors(0);
extern void GenerateIncrement(Assembler* assembler);
Assembler _assembler_;
@@ -2919,51 +2921,6 @@ TEST_CASE(PcDescriptors) {
}
-TEST_CASE(PcDescriptorsCompressed) {
- const int kNumEntries = 6;
- // Add PcDescriptors to the code.
- PcDescriptors& descriptors = PcDescriptors::Handle();
- // PcDescriptors have no try-index.
- descriptors ^= PcDescriptors::New(kNumEntries, false);
- descriptors.AddDescriptor(0, 10, RawPcDescriptors::kOther, 1, 20, -1);
- descriptors.AddDescriptor(1, 20, RawPcDescriptors::kDeopt, 2, 30, -1);
- descriptors.AddDescriptor(2, 30, RawPcDescriptors::kOther, 3, 40, -1);
- descriptors.AddDescriptor(3, 10, RawPcDescriptors::kOther, 4, 40, -1);
- descriptors.AddDescriptor(4, 10, RawPcDescriptors::kOther, 5, 80, -1);
- descriptors.AddDescriptor(5, 80, RawPcDescriptors::kOther, 6, 150, -1);
-
- extern void GenerateIncrement(Assembler* assembler);
- Assembler _assembler_;
- GenerateIncrement(&_assembler_);
- Code& code = Code::Handle(Code::FinalizeCode(
- *CreateFunction("Test_Code"), &_assembler_));
- code.set_pc_descriptors(descriptors);
-
- // Verify the PcDescriptor entries by accessing them.
- const PcDescriptors& pc_descs = PcDescriptors::Handle(code.pc_descriptors());
- PcDescriptors::Iterator iter(pc_descs, RawPcDescriptors::kAnyKind);
-
- EXPECT_EQ(true, iter.MoveNext());
- EXPECT_EQ(static_cast<uword>(10), iter.PcOffset());
- EXPECT_EQ(-1, iter.TryIndex());
- EXPECT_EQ(1, iter.DeoptId());
- EXPECT_EQ(20, iter.TokenPos());
-
- EXPECT_EQ(true, iter.MoveNext());
- EXPECT_EQ(true, iter.MoveNext());
- EXPECT_EQ(true, iter.MoveNext());
- EXPECT_EQ(true, iter.MoveNext());
- EXPECT_EQ(true, iter.MoveNext());
-
- EXPECT_EQ(-1, iter.TryIndex());
- EXPECT_EQ(static_cast<uword>(80), iter.PcOffset());
- EXPECT_EQ(150, iter.TokenPos());
-
- EXPECT_EQ(false, iter.MoveNext());
-}
-
-
-
static RawClass* CreateTestClass(const char* name) {
const String& class_name = String::Handle(Symbols::New(name));
const Class& cls = Class::Handle(

Powered by Google App Engine
This is Rietveld 408576698