In particular prevent high order bits to be lost when processing on
64bits traces on 32bits platforms.
_writeByte(trace::TYPE_NULL);
}
_writeByte(trace::TYPE_NULL);
}
-void Writer::writeOpaque(const void *addr) {
+void Writer::writePointer(unsigned long long addr) {
if (!addr) {
Writer::writeNull();
return;
}
_writeByte(trace::TYPE_OPAQUE);
if (!addr) {
Writer::writeNull();
return;
}
_writeByte(trace::TYPE_OPAQUE);
- _writeUInt((size_t)addr);
void writeEnum(const EnumSig *sig, signed long long value);
void writeBitmask(const BitmaskSig *sig, unsigned long long value);
void writeNull(void);
void writeEnum(const EnumSig *sig, signed long long value);
void writeBitmask(const BitmaskSig *sig, unsigned long long value);
void writeNull(void);
- void writeOpaque(const void *ptr);
+ void writePointer(unsigned long long addr);
void writeCall(Call *call);
void writeCall(Call *call);
#define _TRACE_WRITER_LOCAL_HPP_
#define _TRACE_WRITER_LOCAL_HPP_
#include "os_thread.hpp"
#include "trace_writer.hpp"
#include "os_thread.hpp"
#include "trace_writer.hpp"
}
void visit(Pointer *node) {
}
void visit(Pointer *node) {
- writer.writeOpaque((const void *) (size_t) node->value);
+ writer.writePointer(node->value);
}
void visit(Call *call) {
}
void visit(Call *call) {
deleteStructSig(str);
} else if (type == pointerType) {
ApiPointer apiPtr = var.value<ApiPointer>();
deleteStructSig(str);
} else if (type == pointerType) {
ApiPointer apiPtr = var.value<ApiPointer>();
- //writer.beginArray(1);
- //writer.beginElement();
- writer.writeOpaque((const void*)apiPtr.value());
- //writer.endElement();
- //writer.endArray();
+ writer.writePointer(apiPtr.value());
} else if (type == enumType) {
ApiEnum apiEnum = var.value<ApiEnum>();
trace::EnumSig *sig = createEnumSig(apiEnum, ++id);
} else if (type == enumType) {
ApiEnum apiEnum = var.value<ApiEnum>();
trace::EnumSig *sig = createEnumSig(apiEnum, ++id);
LPD3DXBUFFER pDisassembly = NULL;
HRESULT hr;
LPD3DXBUFFER pDisassembly = NULL;
HRESULT hr;
- hr = pfnD3DXDisassembleShader( (DWORD *)tokens, FALSE, NULL, &pDisassembly);
+ hr = pfnD3DXDisassembleShader(tokens, FALSE, NULL, &pDisassembly);
if (hr == D3D_OK) {
writer.writeString((const char *)pDisassembly->GetBufferPointer());
}
if (hr == D3D_OK) {
writer.writeString((const char *)pDisassembly->GetBufferPointer());
}
- writer.writeOpaque(tokens);
+ writer.writePointer((UINT_PTR)tokens);
print ' if (ctx->profile == gltrace::PROFILE_COMPAT)'
print ' __glGetIntegerv(GL_PIXEL_UNPACK_BUFFER_BINDING, &__unpack_buffer);'
print ' if (__unpack_buffer) {'
print ' if (ctx->profile == gltrace::PROFILE_COMPAT)'
print ' __glGetIntegerv(GL_PIXEL_UNPACK_BUFFER_BINDING, &__unpack_buffer);'
print ' if (__unpack_buffer) {'
- print ' trace::localWriter.writeOpaque(%s);' % arg.name
+ print ' trace::localWriter.writePointer((uintptr_t)%s);' % arg.name
print ' } else {'
Tracer.serializeArgValue(self, function, arg)
print ' }'
print ' } else {'
Tracer.serializeArgValue(self, function, arg)
print ' }'
print ' }'
def visitIntPointer(self, pointer, instance):
print ' }'
def visitIntPointer(self, pointer, instance):
- print ' trace::localWriter.writeOpaque((const void *)%s);' % instance
+ print ' trace::localWriter.writePointer((uintptr_t)%s);' % instance
def visitObjPointer(self, pointer, instance):
def visitObjPointer(self, pointer, instance):
- print ' trace::localWriter.writeOpaque((const void *)%s);' % instance
+ print ' trace::localWriter.writePointer((uintptr_t)%s);' % instance
def visitLinearPointer(self, pointer, instance):
def visitLinearPointer(self, pointer, instance):
- print ' trace::localWriter.writeOpaque((const void *)%s);' % instance
+ print ' trace::localWriter.writePointer((uintptr_t)%s);' % instance
def visitReference(self, reference, instance):
self.visit(reference.type, instance)
def visitReference(self, reference, instance):
self.visit(reference.type, instance)
self.visit(alias.type, instance)
def visitOpaque(self, opaque, instance):
self.visit(alias.type, instance)
def visitOpaque(self, opaque, instance):
- print ' trace::localWriter.writeOpaque((const void *)%s);' % instance
+ print ' trace::localWriter.writePointer((uintptr_t)%s);' % instance
def visitInterface(self, interface, instance):
def visitInterface(self, interface, instance):
- print ' trace::localWriter.writeOpaque((const void *)&%s);' % instance
def visitPolymorphic(self, polymorphic, instance):
print ' _write__%s(%s, %s);' % (polymorphic.tag, polymorphic.switchExpr, instance)
def visitPolymorphic(self, polymorphic, instance):
print ' _write__%s(%s, %s);' % (polymorphic.tag, polymorphic.switchExpr, instance)
print ' static const trace::FunctionSig __sig = {%u, "%s", %u, __args};' % (method.id, interface.name + '::' + method.name, len(method.args) + 1)
print ' unsigned __call = trace::localWriter.beginEnter(&__sig);'
print ' trace::localWriter.beginArg(0);'
print ' static const trace::FunctionSig __sig = {%u, "%s", %u, __args};' % (method.id, interface.name + '::' + method.name, len(method.args) + 1)
print ' unsigned __call = trace::localWriter.beginEnter(&__sig);'
print ' trace::localWriter.beginArg(0);'
- print ' trace::localWriter.writeOpaque((const void *)m_pInstance);'
+ print ' trace::localWriter.writePointer((uintptr_t)m_pInstance);'
print ' trace::localWriter.endArg();'
for arg in method.args:
if not arg.output:
print ' trace::localWriter.endArg();'
for arg in method.args:
if not arg.output:
def emit_memcpy(self, dest, src, length):
print ' unsigned __call = trace::localWriter.beginEnter(&trace::memcpy_sig);'
print ' trace::localWriter.beginArg(0);'
def emit_memcpy(self, dest, src, length):
print ' unsigned __call = trace::localWriter.beginEnter(&trace::memcpy_sig);'
print ' trace::localWriter.beginArg(0);'
- print ' trace::localWriter.writeOpaque(%s);' % dest
+ print ' trace::localWriter.writePointer((uintptr_t)%s);' % dest
print ' trace::localWriter.endArg();'
print ' trace::localWriter.beginArg(1);'
print ' trace::localWriter.writeBlob(%s, %s);' % (src, length)
print ' trace::localWriter.endArg();'
print ' trace::localWriter.beginArg(1);'
print ' trace::localWriter.writeBlob(%s, %s);' % (src, length)