[Lldb-commits] [lldb] r258038 - [RenderScript] Remove mips specific expressions

Ewan Crawford via lldb-commits lldb-commits at lists.llvm.org
Mon Jan 18 01:16:03 PST 2016


Author: ewancrawford
Date: Mon Jan 18 03:16:02 2016
New Revision: 258038

URL: http://llvm.org/viewvc/llvm-project?rev=258038&view=rev
Log:
[RenderScript] Remove mips specific expressions

Reverts earlier commit r254910, which used function pointers for jitted expressions
to avoid a Mips64 compiler bug. Bug has since been fixed, and compiler longer issues the problem instruction.

Author: Dean De Leo <dean at codeplay.com>

Modified:
    lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
    lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h

Modified: lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp?rev=258038&r1=258037&r2=258038&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp Mon Jan 18 03:16:02 2016
@@ -1374,136 +1374,61 @@ RenderScriptRuntime::EvalRSExpression(co
     return true;
 }
 
-namespace // anonymous
+// Used to index expression format strings
+enum ExpressionStrings
 {
-    // max length of an expanded expression
-    const int jit_max_expr_size = 768;
-
-    // Format strings containing the expressions we may need to evaluate.
-    const char runtimeExpressions[][256] =
-    {
-     // Mangled GetOffsetPointer(Allocation*, xoff, yoff, zoff, lod, cubemap)
-     "(int*)_Z12GetOffsetPtrPKN7android12renderscript10AllocationEjjjj23RsAllocationCubemapFace(0x%lx, %u, %u, %u, 0, 0)",
-
-     // Type* rsaAllocationGetType(Context*, Allocation*)
-     "(void*)rsaAllocationGetType(0x%lx, 0x%lx)",
-
-     // 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%u_t data[6]; (void*)rsaTypeGetNativeData(0x%lx, 0x%lx, data, 6); data[0]", // X dim
-     "uint%u_t data[6]; (void*)rsaTypeGetNativeData(0x%lx, 0x%lx, data, 6); data[1]", // Y dim
-     "uint%u_t data[6]; (void*)rsaTypeGetNativeData(0x%lx, 0x%lx, data, 6); data[2]", // Z dim
-     "uint%u_t data[6]; (void*)rsaTypeGetNativeData(0x%lx, 0x%lx, data, 6); data[5]", // Element ptr
-
-     // rsaElementGetNativeData(Context*, Element*, uint32_t* elemData,size)
-     // Pack mType; mKind; mNormalized; mVectorSize; NumSubElements into elemData
-     "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%lx, 0x%lx, data, 5); data[0]", // Type
-     "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%lx, 0x%lx, data, 5); data[1]", // Kind
-     "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%lx, 0x%lx, data, 5); data[3]", // Vector Size
-     "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%lx, 0x%lx, data, 5); data[4]", // Field Count
-
-      // 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
-     "void* ids[%u]; const char* names[%u]; size_t arr_size[%u];"
-     "(void*)rsaElementGetSubElements(0x%lx, 0x%lx, ids, names, arr_size, %u); ids[%u]",     // Element* of field
-
-     "void* ids[%u]; const char* names[%u]; size_t arr_size[%u];"
-     "(void*)rsaElementGetSubElements(0x%lx, 0x%lx, ids, names, arr_size, %u); names[%u]",   // Name of field
-
-     "void* ids[%u]; const char* names[%u]; size_t arr_size[%u];"
-     "(void*)rsaElementGetSubElements(0x%lx, 0x%lx, ids, names, arr_size, %u); arr_size[%u]" // Array size of field
-    };
-
-
-    // Temporary workaround for MIPS, until the compiler emits the JAL instruction when invoking directly the function.
-    // At the moment, when evaluating an expression involving a function call, the LLVM codegen for Mips  emits a JAL
-    // instruction, which is able to jump in the range +/- 128MB with respect to the current program counter ($pc). If
-    // the requested function happens to reside outside the above region, the function address will be truncated and the
-    // function invocation will fail. This is a problem in the RS plugin as we rely on the RS API to probe the number and
-    // the nature of allocations. A proper solution in the MIPS compiler is currently being investigated. As temporary
-    // work around for this context, we'll invoke the RS API through function pointers, which cause the compiler to emit a
-    // register based JALR instruction.
-    const char runtimeExpressions_mips[][512] =
-    {
-    // Mangled GetOffsetPointer(Allocation*, xoff, yoff, zoff, lod, cubemap)
-    "int* (*f) (void*, int, int, int, int, int) = (int* (*) (void*, int, int, int, int, int)) "
-        "_Z12GetOffsetPtrPKN7android12renderscript10AllocationEjjjj23RsAllocationCubemapFace; "
-        "(int*) f((void*) 0x%lx, %u, %u, %u, 0, 0)",
-
-    // Type* rsaAllocationGetType(Context*, Allocation*)
-    "void* (*f) (void*, void*) = (void* (*) (void*, void*)) rsaAllocationGetType; (void*) f((void*) 0x%lx, (void*) 0x%lx)",
-
-    // 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%u_t data[6]; void* (*f)(void*, void*, uintptr_t*, uint32_t) = (void* (*)(void*, void*, uintptr_t*, uint32_t)) "
-        "rsaTypeGetNativeData; (void*) f((void*) 0x%lx, (void*) 0x%lx, data, 6); data[0]",
-    "uint%u_t data[6]; void* (*f)(void*, void*, uintptr_t*, uint32_t) = (void* (*)(void*, void*, uintptr_t*, uint32_t)) "
-        "rsaTypeGetNativeData; (void*) f((void*) 0x%lx, (void*) 0x%lx, data, 6); data[1]",
-    "uint%u_t data[6]; void* (*f)(void*, void*, uintptr_t*, uint32_t) = (void* (*)(void*, void*, uintptr_t*, uint32_t)) "
-        "rsaTypeGetNativeData; (void*) f((void*) 0x%lx, (void*) 0x%lx, data, 6); data[2]",
-    "uint%u_t data[6]; void* (*f)(void*, void*, uintptr_t*, uint32_t) = (void* (*)(void*, void*, uintptr_t*, uint32_t)) "
-        "rsaTypeGetNativeData; (void*) f((void*) 0x%lx, (void*) 0x%lx, data, 6); data[5]",
-
-    // rsaElementGetNativeData(Context*, Element*, uint32_t* elemData,size)
-    // Pack mType; mKind; mNormalized; mVectorSize; NumSubElements into elemData
-    "uint32_t data[5]; void* (*f)(void*, void*, uint32_t*, uint32_t) = (void* (*)(void*, void*, uint32_t*, uint32_t)) "
-        "rsaElementGetNativeData; (void*) f((void*) 0x%lx, (void*) 0x%lx, data, 5); data[0]", // Type
-    "uint32_t data[5]; void* (*f)(void*, void*, uint32_t*, uint32_t) = (void* (*)(void*, void*, uint32_t*, uint32_t)) "
-        "rsaElementGetNativeData; (void*) f((void*) 0x%lx, (void*) 0x%lx, data, 5); data[1]", // Kind
-    "uint32_t data[5]; void* (*f)(void*, void*, uint32_t*, uint32_t) = (void* (*)(void*, void*, uint32_t*, uint32_t)) "
-        "rsaElementGetNativeData; (void*) f((void*) 0x%lx, (void*) 0x%lx, data, 5); data[3]", // Vector size
-    "uint32_t data[5]; void* (*f)(void*, void*, uint32_t*, uint32_t) = (void* (*)(void*, void*, uint32_t*, uint32_t)) "
-        "rsaElementGetNativeData; (void*) f((void*) 0x%lx, (void*) 0x%lx, data, 5); data[4]", // Field count
-
-    // 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
-   "void* ids[%u]; const char* names[%u]; size_t arr_size[%u];"
-        "void* (*f) (void*, void*, uintptr_t*, const char**, size_t*, uint32_t) = "
-        "(void* (*) (void*, void*, uintptr_t*, const char**, size_t*, uint32_t)) rsaElementGetSubElements;"
-        "(void*) f((void*) 0x%lx, (void*) 0x%lx, (uintptr_t*) ids, names, arr_size, (uint32_t) %u);"
-        "ids[%u]", // Element* of field
-   "void* ids[%u]; const char* names[%u]; size_t arr_size[%u];"
-        "void* (*f) (void*, void*, uintptr_t*, const char**, size_t*, uint32_t) = "
-        "(void* (*) (void*, void*, uintptr_t*, const char**, size_t*, uint32_t)) rsaElementGetSubElements;"
-        "(void*) f((void*) 0x%lx, (void*) 0x%lx, (uintptr_t*) ids, names, arr_size, (uint32_t) %u);"
-        "names[%u]", // Name of field
-   "void* ids[%u]; const char* names[%u]; size_t arr_size[%u];"
-        "void* (*f) (void*, void*, uintptr_t*, const char**, size_t*, uint32_t) = "
-        "(void* (*) (void*, void*, uintptr_t*, const char**, size_t*, uint32_t)) rsaElementGetSubElements;"
-        "(void*) f((void*) 0x%lx, (void*) 0x%lx, (uintptr_t*) ids, names, arr_size, (uint32_t) %u);"
-        "arr_size[%u]" // Array size of field
-    };
-
-} // end of the anonymous namespace
-
-
-// Retrieve the string to JIT for the given expression
-const char*
-RenderScriptRuntime::JITTemplate(ExpressionStrings e)
-{
-    // be nice to your Mips friend when adding new expression strings
-    static_assert(sizeof(runtimeExpressions)/sizeof(runtimeExpressions[0]) ==
-            sizeof(runtimeExpressions_mips)/sizeof(runtimeExpressions_mips[0]),
-            "#runtimeExpressions != #runtimeExpressions_mips");
-
-    assert((e >= eExprGetOffsetPtr && e <= eExprSubelementsArrSize) &&
-           "Expression string out of bounds");
-
-    llvm::Triple::ArchType arch = GetTargetRef().GetArchitecture().GetMachine();
-
-    // mips JAL workaround
-    if(arch == llvm::Triple::ArchType::mips64el || arch == llvm::Triple::ArchType::mipsel)
-        return runtimeExpressions_mips[e];
-    else
-        return runtimeExpressions[e];
-}
-
+   eExprGetOffsetPtr = 0,
+   eExprAllocGetType,
+   eExprTypeDimX,
+   eExprTypeDimY,
+   eExprTypeDimZ,
+   eExprTypeElemPtr,
+   eExprElementType,
+   eExprElementKind,
+   eExprElementVec,
+   eExprElementFieldCount,
+   eExprSubelementsId,
+   eExprSubelementsName,
+   eExprSubelementsArrSize
+};
+
+// Format strings containing the expressions we may need to evaluate.
+const char runtimeExpressions[][256] =
+{
+ // Mangled GetOffsetPointer(Allocation*, xoff, yoff, zoff, lod, cubemap)
+ "(int*)_Z12GetOffsetPtrPKN7android12renderscript10AllocationEjjjj23RsAllocationCubemapFace(0x%lx, %u, %u, %u, 0, 0)",
+
+ // Type* rsaAllocationGetType(Context*, Allocation*)
+ "(void*)rsaAllocationGetType(0x%lx, 0x%lx)",
+
+ // 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%u_t data[6]; (void*)rsaTypeGetNativeData(0x%lx, 0x%lx, data, 6); data[0]", // X dim
+ "uint%u_t data[6]; (void*)rsaTypeGetNativeData(0x%lx, 0x%lx, data, 6); data[1]", // Y dim
+ "uint%u_t data[6]; (void*)rsaTypeGetNativeData(0x%lx, 0x%lx, data, 6); data[2]", // Z dim
+ "uint%u_t data[6]; (void*)rsaTypeGetNativeData(0x%lx, 0x%lx, data, 6); data[5]", // Element ptr
+
+ // rsaElementGetNativeData(Context*, Element*, uint32_t* elemData,size)
+ // Pack mType; mKind; mNormalized; mVectorSize; NumSubElements into elemData
+ "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%lx, 0x%lx, data, 5); data[0]", // Type
+ "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%lx, 0x%lx, data, 5); data[1]", // Kind
+ "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%lx, 0x%lx, data, 5); data[3]", // Vector Size
+ "uint32_t data[5]; (void*)rsaElementGetNativeData(0x%lx, 0x%lx, data, 5); data[4]", // Field Count
+
+  // 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
+ "void* ids[%u]; const char* names[%u]; size_t arr_size[%u];"
+ "(void*)rsaElementGetSubElements(0x%lx, 0x%lx, ids, names, arr_size, %u); ids[%u]",     // Element* of field
+
+ "void* ids[%u]; const char* names[%u]; size_t arr_size[%u];"
+ "(void*)rsaElementGetSubElements(0x%lx, 0x%lx, ids, names, arr_size, %u); names[%u]",   // Name of field
+
+ "void* ids[%u]; const char* names[%u]; size_t arr_size[%u];"
+ "(void*)rsaElementGetSubElements(0x%lx, 0x%lx, ids, names, arr_size, %u); arr_size[%u]" // Array size of field
+};
 
 // JITs the RS runtime for the internal data pointer of an allocation.
 // Is passed x,y,z coordinates for the pointer to a specific element.
@@ -1522,17 +1447,18 @@ RenderScriptRuntime::JITDataPointer(Allo
         return false;
     }
 
-    const char* expr_cstr = JITTemplate(eExprGetOffsetPtr);
-    char buffer[jit_max_expr_size];
+    const char* expr_cstr = runtimeExpressions[eExprGetOffsetPtr];
+    const int max_expr_size = 512; // Max expression size
+    char buffer[max_expr_size];
 
-    int chars_written = snprintf(buffer, jit_max_expr_size, expr_cstr, *allocation->address.get(), x, y, z);
+    int chars_written = snprintf(buffer, max_expr_size, expr_cstr, *allocation->address.get(), x, y, z);
     if (chars_written < 0)
     {
         if (log)
             log->Printf("RenderScriptRuntime::JITDataPointer - Encoding error in snprintf()");
         return false;
     }
-    else if (chars_written >= jit_max_expr_size)
+    else if (chars_written >= max_expr_size)
     {
         if (log)
             log->Printf("RenderScriptRuntime::JITDataPointer - Expression too long");
@@ -1564,17 +1490,18 @@ RenderScriptRuntime::JITTypePointer(Allo
         return false;
     }
 
-    const char* expr_cstr = JITTemplate(eExprAllocGetType);
-    char buffer[jit_max_expr_size];
+    const char* expr_cstr = runtimeExpressions[eExprAllocGetType];
+    const int max_expr_size = 512; // Max expression size
+    char buffer[max_expr_size];
 
-    int chars_written = snprintf(buffer, jit_max_expr_size, expr_cstr, *allocation->context.get(), *allocation->address.get());
+    int chars_written = snprintf(buffer, max_expr_size, expr_cstr, *allocation->context.get(), *allocation->address.get());
     if (chars_written < 0)
     {
         if (log)
             log->Printf("RenderScriptRuntime::JITDataPointer - Encoding error in snprintf()");
         return false;
     }
-    else if (chars_written >= jit_max_expr_size)
+    else if (chars_written >= max_expr_size)
     {
         if (log)
             log->Printf("RenderScriptRuntime::JITTypePointer - Expression too long");
@@ -1614,13 +1541,13 @@ RenderScriptRuntime::JITTypePacked(Alloc
     const unsigned int num_exprs = 4;
     assert(num_exprs == (eExprTypeElemPtr - eExprTypeDimX + 1) && "Invalid number of expressions");
 
-    char buffer[num_exprs][jit_max_expr_size];
+    const int max_expr_size = 512; // Max expression size
+    char buffer[num_exprs][max_expr_size];
     uint64_t results[num_exprs];
 
     for (unsigned int i = 0; i < num_exprs; ++i)
     {
-        const char* expr_cstr = JITTemplate((ExpressionStrings) (eExprTypeDimX + i));
-        int chars_written = snprintf(buffer[i], jit_max_expr_size, expr_cstr, bits,
+        int chars_written = snprintf(buffer[i], max_expr_size, runtimeExpressions[eExprTypeDimX + i], bits,
                                      *allocation->context.get(), *allocation->type_ptr.get());
         if (chars_written < 0)
         {
@@ -1628,7 +1555,7 @@ RenderScriptRuntime::JITTypePacked(Alloc
                 log->Printf("RenderScriptRuntime::JITDataPointer - Encoding error in snprintf()");
             return false;
         }
-        else if (chars_written >= jit_max_expr_size)
+        else if (chars_written >= max_expr_size)
         {
             if (log)
                 log->Printf("RenderScriptRuntime::JITTypePacked - Expression too long");
@@ -1676,20 +1603,20 @@ RenderScriptRuntime::JITElementPacked(El
     const unsigned int num_exprs = 4;
     assert(num_exprs == (eExprElementFieldCount - eExprElementType + 1) && "Invalid number of expressions");
 
-    char buffer[num_exprs][jit_max_expr_size];
+    const int max_expr_size = 512; // Max expression size
+    char buffer[num_exprs][max_expr_size];
     uint64_t results[num_exprs];
 
     for (unsigned int i = 0; i < num_exprs; i++)
     {
-        const char* expr_cstr = JITTemplate((ExpressionStrings) (eExprElementType + i));
-        int chars_written = snprintf(buffer[i], jit_max_expr_size, expr_cstr, context, *elem.element_ptr.get());
+        int chars_written = snprintf(buffer[i], max_expr_size, runtimeExpressions[eExprElementType + i], context, *elem.element_ptr.get());
         if (chars_written < 0)
         {
             if (log)
                 log->Printf("RenderScriptRuntime::JITElementPacked - Encoding error in snprintf()");
             return false;
         }
-        else if (chars_written >= jit_max_expr_size)
+        else if (chars_written >= max_expr_size)
         {
             if (log)
                 log->Printf("RenderScriptRuntime::JITElementPacked - Expression too long");
@@ -1736,7 +1663,8 @@ RenderScriptRuntime::JITSubelements(Elem
     const short num_exprs = 3;
     assert(num_exprs == (eExprSubelementsArrSize - eExprSubelementsId + 1) && "Invalid number of expressions");
 
-    char expr_buffer[jit_max_expr_size];
+    const int max_expr_size = 512; // Max expression size
+    char expr_buffer[max_expr_size];
     uint64_t results;
 
     // Iterate over struct fields.
@@ -1746,8 +1674,7 @@ RenderScriptRuntime::JITSubelements(Elem
         Element child;
         for (unsigned int expr_index = 0; expr_index < num_exprs; ++expr_index)
         {
-            const char* expr_cstr = JITTemplate((ExpressionStrings) (eExprSubelementsId + expr_index));
-            int chars_written = snprintf(expr_buffer, jit_max_expr_size, expr_cstr,
+            int chars_written = snprintf(expr_buffer, max_expr_size, runtimeExpressions[eExprSubelementsId + expr_index],
                                          field_count, field_count, field_count,
                                          context, *elem.element_ptr.get(), field_count, field_index);
             if (chars_written < 0)
@@ -1756,7 +1683,7 @@ RenderScriptRuntime::JITSubelements(Elem
                     log->Printf("RenderScriptRuntime::JITSubelements - Encoding error in snprintf()");
                 return false;
             }
-            else if (chars_written >= jit_max_expr_size)
+            else if (chars_written >= max_expr_size)
             {
                 if (log)
                     log->Printf("RenderScriptRuntime::JITSubelements - Expression too long");
@@ -1848,15 +1775,16 @@ RenderScriptRuntime::JITAllocationSize(A
         return true;
     }
 
-    const char* expr_cstr = JITTemplate(eExprGetOffsetPtr);
-    char buffer[jit_max_expr_size];
+    const char* expr_cstr = runtimeExpressions[eExprGetOffsetPtr];
+    const int max_expr_size = 512;
+    char buffer[max_expr_size];
 
     // Calculate last element
     dim_x = dim_x == 0 ? 0 : dim_x - 1;
     dim_y = dim_y == 0 ? 0 : dim_y - 1;
     dim_z = dim_z == 0 ? 0 : dim_z - 1;
 
-    int chars_written = snprintf(buffer, jit_max_expr_size, expr_cstr, *allocation->address.get(),
+    int chars_written = snprintf(buffer, max_expr_size, expr_cstr, *allocation->address.get(),
                                  dim_x, dim_y, dim_z);
     if (chars_written < 0)
     {
@@ -1864,7 +1792,7 @@ RenderScriptRuntime::JITAllocationSize(A
             log->Printf("RenderScriptRuntime::JITAllocationSize - Encoding error in snprintf()");
         return false;
     }
-    else if (chars_written >= jit_max_expr_size)
+    else if (chars_written >= max_expr_size)
     {
         if (log)
             log->Printf("RenderScriptRuntime::JITAllocationSize - Expression too long");
@@ -1897,10 +1825,11 @@ RenderScriptRuntime::JITAllocationStride
         return false;
     }
 
-    const char* expr_cstr = JITTemplate(eExprGetOffsetPtr);
-    char buffer[jit_max_expr_size];
+    const char* expr_cstr = runtimeExpressions[eExprGetOffsetPtr];
+    const int max_expr_size = 512; // Max expression size
+    char buffer[max_expr_size];
 
-    int chars_written = snprintf(buffer, jit_max_expr_size, expr_cstr, *allocation->address.get(),
+    int chars_written = snprintf(buffer, max_expr_size, expr_cstr, *allocation->address.get(),
                                  0, 1, 0);
     if (chars_written < 0)
     {
@@ -1908,7 +1837,7 @@ RenderScriptRuntime::JITAllocationStride
             log->Printf("RenderScriptRuntime::JITAllocationStride - Encoding error in snprintf()");
         return false;
     }
-    else if (chars_written >= jit_max_expr_size)
+    else if (chars_written >= max_expr_size)
     {
         if (log)
             log->Printf("RenderScriptRuntime::JITAllocationStride - Expression too long");
@@ -2907,11 +2836,12 @@ RenderScriptRuntime::DumpAllocation(Stre
                     expr_options.SetHideName(true);
 
                     // Setup expression as derefrencing a pointer cast to element address.
-                    char expr_char_buffer[jit_max_expr_size];
-                    int chars_written = snprintf(expr_char_buffer, jit_max_expr_size, "*(%s*) 0x%" PRIx64,
+                    const int max_expr_size = 512;
+                    char expr_char_buffer[max_expr_size];
+                    int chars_written = snprintf(expr_char_buffer, max_expr_size, "*(%s*) 0x%" PRIx64,
                                         alloc->element.type_name.AsCString(), *alloc->data_ptr.get() + offset);
 
-                    if (chars_written < 0 || chars_written >= jit_max_expr_size)
+                    if (chars_written < 0 || chars_written >= max_expr_size)
                     {
                         if (log)
                             log->Printf("RenderScriptRuntime::DumpAllocation- Error in snprintf()");

Modified: lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h?rev=258038&r1=258037&r2=258038&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h Mon Jan 18 03:16:02 2016
@@ -290,24 +290,6 @@ protected:
     static const size_t s_runtimeHookCount;
 
 private:
-    // Used to index expression format strings
-    enum ExpressionStrings
-    {
-       eExprGetOffsetPtr = 0,
-       eExprAllocGetType,
-       eExprTypeDimX,
-       eExprTypeDimY,
-       eExprTypeDimZ,
-       eExprTypeElemPtr,
-       eExprElementType,
-       eExprElementKind,
-       eExprElementVec,
-       eExprElementFieldCount,
-       eExprSubelementsId,
-       eExprSubelementsName,
-       eExprSubelementsArrSize
-    };
-
     RenderScriptRuntime(Process *process); // Call CreateInstance instead.
     
     static bool HookCallback(void *baton, StoppointCallbackContext *ctx, lldb::user_id_t break_id,
@@ -338,8 +320,6 @@ private:
     //
     // Helper functions for jitting the runtime
     //
-    const char* JITTemplate(ExpressionStrings e);
-
     bool JITDataPointer(AllocationDetails* allocation, StackFrame* frame_ptr,
                         unsigned int x = 0, unsigned int y = 0, unsigned int z = 0);
 




More information about the lldb-commits mailing list