#include <stdint.h>
#ifdef __cplusplus
+#include <functional>
#include <vector>
#endif
#include "toolbox/list.hpp"
-#include "vm/method.h"
+#include "vm/method.hpp"
#include "vm/jit/jit.hpp"
#include "vm/jit/code.hpp"
inline int32_t get_linenumber() const { return _linenumber; }
inline void* get_pc () const { return _pc; }
- void resolve(codeinfo* code);
+ void resolve(const codeinfo* code);
+};
+
+
+/**
+ * Unary function to resolve Linenumber objects.
+ */
+class LinenumberResolver : public std::binary_function<Linenumber, codeinfo*, void> {
+public:
+ // Unary resolve function.
+ void operator() (Linenumber& ln, const codeinfo* code) const
+ {
+ ln.resolve(code);
+ }
};
private:
std::vector<Linenumber> _linenumbers;
+ // Comparator class.
+ class comparator : public std::binary_function<Linenumber, void*, bool> {
+ public:
+ bool operator() (const Linenumber& ln, const void* pc) const
+ {
+ return (pc >= ln.get_pc());
+ }
+ };
+
public:
LinenumberTable(jitdata* jd);
~LinenumberTable();
typedef struct LinenumberTable LinenumberTable;
-#include "vm/jit/codegen-common.hpp"
-
-int32_t linenumbertable_linenumber_for_pc(methodinfo** m, codeinfo* code, void* pc);
-
#endif
#include "vm/jit/codegen-common.hpp"
} // extern "C"
#endif
-
#endif // _LINENUMBERTABLE_HPP