blob: 80ba9a9a4a7bdb16f05a337aaa47323132c9b802 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
/*******************************************************************************
* Copyright (c) 2013, 2014 Ericsson
*
* All rights reserved. This program and the accompanying materials are made
* available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Patrick Tasse - Initial API and implementation
* Bernd Hufmann - Updated for new parent class
*******************************************************************************/
package org.eclipse.tracecompass.tmf.ctf.core.event.lookup;
import java.util.Objects;
import org.eclipse.tracecompass.ctf.core.event.CTFCallsite;
import org.eclipse.tracecompass.tmf.core.event.lookup.ITmfCallsite;
import org.eclipse.tracecompass.tmf.core.event.lookup.TmfCallsite;
/**
* CTF TMF call site information for source code lookup.
*
* @author Patrick Tasse
* @since 3.0
*/
public class CtfTmfCallsite extends TmfCallsite {
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
/** The event name. */
private final String fEventName;
/** The instruction pointer. */
private final long fInstructionPointer;
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
/**
* Standard Constructor.
*
* @param callsite
* - a CTF call site
*/
public CtfTmfCallsite(CTFCallsite callsite) {
super(callsite.getFileName(), callsite.getLineNumber());
fEventName = callsite.getEventName();
fInstructionPointer = callsite.getIp();
}
/**
* Constructor to wrap a ITmfCallsite
*
* @param callsite
* the callsite
* @param eventName
* the event name
* @since 4.2
*/
public CtfTmfCallsite(ITmfCallsite callsite, String eventName) {
super(callsite.getFileName(), callsite.getLineNo());
fEventName = eventName;
fInstructionPointer = 0;
}
// ------------------------------------------------------------------------
// Accessors
// ------------------------------------------------------------------------
/**
* Returns the event name of the call site.
*
* @return the event name
*/
public String getEventName() {
return fEventName;
}
/**
* Returns the instruction pointer of the call site.
*
* @return the instruction pointer
*/
public long getIntructionPointer() {
return fInstructionPointer;
}
// ------------------------------------------------------------------------
// Accessors
// ------------------------------------------------------------------------
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((fEventName == null) ? 0 : fEventName.hashCode());
result = prime * result + (int) (fInstructionPointer ^ (fInstructionPointer >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!super.equals(obj)) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
CtfTmfCallsite other = (CtfTmfCallsite) obj;
if (!Objects.equals(fEventName, other.fEventName)) {
return false;
}
return (fInstructionPointer == other.fInstructionPointer);
}
@Override
public String toString() {
return getEventName() + "@0x" + Long.toHexString(fInstructionPointer) + ": " + //$NON-NLS-1$ //$NON-NLS-2$
getFileName() + ':' + String.valueOf(getLineNo()) + ' ' + getFileName() + "()"; //$NON-NLS-1$
}
}
|