Skip to content

Instantly share code, notes, and snippets.

@goyalankit
Created November 15, 2014 07:16
Show Gist options
  • Save goyalankit/348ad6c8edc62477a8b1 to your computer and use it in GitHub Desktop.
Save goyalankit/348ad6c8edc62477a8b1 to your computer and use it in GitHub Desktop.
Compile using - `g++ test_avl.cpp -I/perfexpert/tools/macpo/common`
#include <cassert>
#include <map>
#include <vector>
#include "avl_tree.h"
// creates a bit mask with bits between a and b from the right as 1.
// example: b = 4, a = 2 => 0000001100
#define BIT_MASK(a, b) (size_t)(((size_t) -1 >> ((sizeof(size_t)*8) \
- (b))) & ~((1U << (a)) - 1))
unsigned address_to_set(size_t address) {
return ((address & BIT_MASK(6, 12)) >> 6);
}
//#include "analysis_defs.h"
int main() {
avl_tree *avl = new avl_tree();
mem_info_t *meminfo1 = new mem_info_t();
meminfo1->address = 1168214315012;
avl->insert(meminfo1); // rd = 0
std::cout << avl->get_distance(18253348672) << " SB: 0 - " << address_to_set(meminfo1->address) << "CL: " << (meminfo1->address >> 6) << std::endl;
mem_info_t *meminfo2 = new mem_info_t();
meminfo2->address = 1168214319108;
avl->insert(meminfo2); // rd = 1
std::cout << avl->get_distance(18253348672) << " SB: 1 - " << address_to_set(meminfo2->address) << "CL: " << (meminfo2->address >> 6) << std::endl;
mem_info_t *meminfo3 = new mem_info_t();
meminfo3->address = 1168214323208;
avl->insert(meminfo3); // rd = 2
std::cout << avl->get_distance(18253348672) << " SB: 2 - " << address_to_set(meminfo3->address) << "CL: " << (meminfo3->address >> 6) << std::endl;
mem_info_t *meminfo4 = new mem_info_t();
meminfo4->address = 1168214327304;
avl->insert(meminfo4); // rd = 3
std::cout << avl->get_distance(18253348672) << " SB: 3 - " << address_to_set(meminfo4->address) << "CL: " << (meminfo4->address >> 6) << std::endl;
mem_info_t *meminfo5 = new mem_info_t();
meminfo5->address = 1168214364184;
avl->insert(meminfo5); // rd = 4
std::cout << avl->get_distance(18253348672) << " SB: 4 - " << address_to_set(meminfo5->address) << "CL: " << (meminfo5->address >> 6) << std::endl;
mem_info_t *meminfo6 = new mem_info_t();
meminfo6->address = 1168214368264;
avl->insert(meminfo6); // rd = 5
std::cout << avl->get_distance(18253348672) << " SB: 5 - " << address_to_set(meminfo6->address) << "CL: " << (meminfo6->address >> 6) << std::endl;
mem_info_t *meminfo7 = new mem_info_t();
meminfo7->address = 1168214372360;
avl->insert(meminfo7); // rd = 6
std::cout << avl->get_distance(18253348672) << " SB: 6 - " << address_to_set(meminfo7->address) << "CL: " << (meminfo7->address >> 6) << std::endl;
mem_info_t *meminfo8 = new mem_info_t();
meminfo8->address = 1168214376456;
avl->insert(meminfo8); // rd = 7
std::cout << avl->get_distance(18253348672) << " SB: 7 - " << address_to_set(meminfo8->address) << "CL: " << (meminfo8->address >> 6) << std::endl;
avl->insert(meminfo1); // rd = 8
std::cout << avl->get_distance(18253348672) << " SB: 8 - " << address_to_set(meminfo1->address) << "CL: " << (meminfo1->address >> 6) << std::endl;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment