[Lldb-commits] [PATCH] D32184: Teach RenderScriptRuntime about changed context representation.

2017-04-18 Thread David Gross via Phabricator via lldb-commits
dgross created this revision.

The runtime discovers contexts through RenderScriptRuntime::Capture*()
methods.  These methods see the low-level context representation.
However, the runtime calls APIs that require the high-level context
representation.  Therefore, it needs to call yet another API to find
the high-level representation associated with a given low-level
representation.


https://reviews.llvm.org/D32184

Files:
  
source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp

Index: source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
===
--- source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
+++ source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
@@ -1806,64 +1806,73 @@
 const int jit_max_expr_size = 512;
 
 // Retrieve the string to JIT for the given expression
+#define JIT_TEMPLATE_CONTEXT "void* ctxt = (void*)rsDebugGetContextWrapper(0x%" PRIx64 "); "
 const char *JITTemplate(ExpressionStrings e) {
   // Format strings containing the expressions we may need to evaluate.
   static std::array runtime_expressions = {
   {// Mangled GetOffsetPointer(Allocation*, xoff, yoff, zoff, lod, cubemap)
"(int*)_"
"Z12GetOffsetPtrPKN7android12renderscript10AllocationE23RsAllocation"
"CubemapFace"
-   "(0x%" PRIx64 ", %" PRIu32 ", %" PRIu32 ", %" PRIu32 ", 0, 0)",
+   "(0x%" PRIx64 ", %" PRIu32 ", %" PRIu32 ", %" PRIu32 ", 0, 0)", // eExprGetOffsetPtr
 
// Type* rsaAllocationGetType(Context*, Allocation*)
-   "(void*)rsaAllocationGetType(0x%" PRIx64 ", 0x%" PRIx64 ")",
+   JIT_TEMPLATE_CONTEXT "(void*)rsaAllocationGetType(ctxt, 0x%" PRIx64 ")", // eExprAllocGetType
 
// rsaTypeGetNativeData(Context*, Type*, void* typeData, size) Pack the
// data in the following way mHal.state.dimX; mHal.state.dimY;
// mHal.state.dimZ; mHal.state.lodCount; mHal.state.faces; mElement; into
// typeData Need to specify 32 or 64 bit for uint_t since this differs
// between devices
-   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 6); data[0]", // X dim
-   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 6); data[1]", // Y dim
-   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 6); data[2]", // Z dim
-   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 6); data[5]", // Element ptr
+   JIT_TEMPLATE_CONTEXT
+   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 6); data[0]", // eExprTypeDimX
+   JIT_TEMPLATE_CONTEXT
+   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 6); data[1]", // eExprTypeDimY
+   JIT_TEMPLATE_CONTEXT
+   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 6); data[2]", // eExprTypeDimZ
+   JIT_TEMPLATE_CONTEXT
+   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 6); data[5]", // eExprTypeElemPtr
 
// rsaElementGetNativeData(Context*, Element*, uint32_t* elemData,size)
// Pack mType; mKind; mNormalized; mVectorSize; NumSubElements into
// elemData
-   "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 5); data[0]", // Type
-   "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 5); data[1]", // Kind
-   "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 5); data[3]", // Vector Size
-   "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 5); data[4]", // Field Count
+   JIT_TEMPLATE_CONTEXT
+   "uint32_t data[5]; (void*)rsaElementGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 5); data[0]", // eExprElementType
+   JIT_TEMPLATE_CONTEXT
+   "uint32_t data[5]; (void*)rsaElementGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 5); data[1]", // eExprElementKind
+   JIT_TEMPLATE_CONTEXT
+   "uint32_t data[5]; (void*)rsaElementGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 5); data[3]", // eExprElementVec
+   JIT_TEMPLATE_CONTEXT
+   "uint32_t data[5]; (void*)rsaElementGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 5); data[4]", // eExprElementFieldCount
 
// rsaElementGetSubElements(RsContext con, RsElement elem, uintptr_t
// *ids, const char **names, size_t *arraySizes, uint32_t dataSize)
// Needed for Allocations of structs to gather details about
// fields/Subelements Element* of field
-   "void* ids[%" PRIu32 "

[Lldb-commits] [PATCH] D32184: Teach RenderScriptRuntime about changed context representation.

2017-04-18 Thread David Gross via Phabricator via lldb-commits
dgross added a comment.

Context representation changed here: 
https://android-review.googlesource.com/#/c/343816/

New API added here: https://android-review.googlesource.com/#/c/365839/


https://reviews.llvm.org/D32184



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D32184: Teach RenderScriptRuntime about changed context representation.

2017-04-19 Thread David Gross via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rL300727: Teach RenderScriptRuntime about changed context 
representation. (authored by dgross).

Changed prior to commit:
  https://reviews.llvm.org/D32184?vs=95609&id=95787#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D32184

Files:
  
lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp

Index: lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
===
--- lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
+++ lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
@@ -1810,64 +1810,73 @@
 const int jit_max_expr_size = 512;
 
 // Retrieve the string to JIT for the given expression
+#define JIT_TEMPLATE_CONTEXT "void* ctxt = (void*)rsDebugGetContextWrapper(0x%" PRIx64 "); "
 const char *JITTemplate(ExpressionStrings e) {
   // Format strings containing the expressions we may need to evaluate.
   static std::array runtime_expressions = {
   {// Mangled GetOffsetPointer(Allocation*, xoff, yoff, zoff, lod, cubemap)
"(int*)_"
"Z12GetOffsetPtrPKN7android12renderscript10AllocationE23RsAllocation"
"CubemapFace"
-   "(0x%" PRIx64 ", %" PRIu32 ", %" PRIu32 ", %" PRIu32 ", 0, 0)",
+   "(0x%" PRIx64 ", %" PRIu32 ", %" PRIu32 ", %" PRIu32 ", 0, 0)", // eExprGetOffsetPtr
 
// Type* rsaAllocationGetType(Context*, Allocation*)
-   "(void*)rsaAllocationGetType(0x%" PRIx64 ", 0x%" PRIx64 ")",
+   JIT_TEMPLATE_CONTEXT "(void*)rsaAllocationGetType(ctxt, 0x%" PRIx64 ")", // eExprAllocGetType
 
// rsaTypeGetNativeData(Context*, Type*, void* typeData, size) Pack the
// data in the following way mHal.state.dimX; mHal.state.dimY;
// mHal.state.dimZ; mHal.state.lodCount; mHal.state.faces; mElement; into
// typeData Need to specify 32 or 64 bit for uint_t since this differs
// between devices
-   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 6); data[0]", // X dim
-   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 6); data[1]", // Y dim
-   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 6); data[2]", // Z dim
-   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 6); data[5]", // Element ptr
+   JIT_TEMPLATE_CONTEXT
+   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 6); data[0]", // eExprTypeDimX
+   JIT_TEMPLATE_CONTEXT
+   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 6); data[1]", // eExprTypeDimY
+   JIT_TEMPLATE_CONTEXT
+   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 6); data[2]", // eExprTypeDimZ
+   JIT_TEMPLATE_CONTEXT
+   "uint%" PRIu32 "_t data[6]; (void*)rsaTypeGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 6); data[5]", // eExprTypeElemPtr
 
// rsaElementGetNativeData(Context*, Element*, uint32_t* elemData,size)
// Pack mType; mKind; mNormalized; mVectorSize; NumSubElements into
// elemData
-   "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 5); data[0]", // Type
-   "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 5); data[1]", // Kind
-   "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 5); data[3]", // Vector Size
-   "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%" PRIx64
-   ", 0x%" PRIx64 ", data, 5); data[4]", // Field Count
+   JIT_TEMPLATE_CONTEXT
+   "uint32_t data[5]; (void*)rsaElementGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 5); data[0]", // eExprElementType
+   JIT_TEMPLATE_CONTEXT
+   "uint32_t data[5]; (void*)rsaElementGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 5); data[1]", // eExprElementKind
+   JIT_TEMPLATE_CONTEXT
+   "uint32_t data[5]; (void*)rsaElementGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 5); data[3]", // eExprElementVec
+   JIT_TEMPLATE_CONTEXT
+   "uint32_t data[5]; (void*)rsaElementGetNativeData(ctxt"
+   ", 0x%" PRIx64 ", data, 5); data[4]", // eExprElementFieldCount
 
// rsaElementGetSubElements(RsContext con, RsElement elem, uintptr_t
// *ids, const char **names, size_t *arraySizes, uint32_t dataSize)
// Needed for Allocations of structs to gather details about
// fields/Subelements Element* of field
-   "void* ids[%" PRIu32 "]; const char* names[%" PRIu32
+   JIT_TEMPLA