Merge "Check and propogate errors from llvm." into honeycomb
This commit is contained in:
@@ -56,6 +56,9 @@ public class ScriptC extends Script {
|
|||||||
protected ScriptC(RenderScript rs, Resources resources, int resourceID) {
|
protected ScriptC(RenderScript rs, Resources resources, int resourceID) {
|
||||||
super(0, rs);
|
super(0, rs);
|
||||||
int id = internalCreate(rs, resources, resourceID);
|
int id = internalCreate(rs, resources, resourceID);
|
||||||
|
if (id == 0) {
|
||||||
|
throw new RSRuntimeException("Loading of ScriptC script failed.");
|
||||||
|
}
|
||||||
setID(id);
|
setID(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -467,7 +467,7 @@ extern const char rs_runtime_lib_bc[];
|
|||||||
extern unsigned rs_runtime_lib_bc_size;
|
extern unsigned rs_runtime_lib_bc_size;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void ScriptCState::runCompiler(Context *rsc,
|
bool ScriptCState::runCompiler(Context *rsc,
|
||||||
ScriptC *s,
|
ScriptC *s,
|
||||||
const char *resName,
|
const char *resName,
|
||||||
const char *cacheDir) {
|
const char *cacheDir) {
|
||||||
@@ -482,7 +482,7 @@ void ScriptCState::runCompiler(Context *rsc,
|
|||||||
s->mEnviroment.mScriptText,
|
s->mEnviroment.mScriptText,
|
||||||
s->mEnviroment.mScriptTextLength, 0) != 0) {
|
s->mEnviroment.mScriptTextLength, 0) != 0) {
|
||||||
LOGE("bcc: FAILS to read bitcode");
|
LOGE("bcc: FAILS to read bitcode");
|
||||||
// Handle Fatal Error
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
@@ -493,14 +493,14 @@ void ScriptCState::runCompiler(Context *rsc,
|
|||||||
/*"1" means skip buffer here, and let libbcc decide*/,
|
/*"1" means skip buffer here, and let libbcc decide*/,
|
||||||
0) != 0) {
|
0) != 0) {
|
||||||
LOGE("bcc: FAILS to link bitcode");
|
LOGE("bcc: FAILS to link bitcode");
|
||||||
// Handle Fatal Error
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
char *cachePath = genCacheFileName(cacheDir, resName, ".oBCC");
|
char *cachePath = genCacheFileName(cacheDir, resName, ".oBCC");
|
||||||
|
|
||||||
if (bccPrepareExecutable(s->mBccScript, cachePath, 0) != 0) {
|
if (bccPrepareExecutable(s->mBccScript, cachePath, 0) != 0) {
|
||||||
LOGE("bcc: FAILS to prepare executable");
|
LOGE("bcc: FAILS to prepare executable");
|
||||||
// Handle Fatal Error
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(cachePath);
|
free(cachePath);
|
||||||
@@ -547,7 +547,7 @@ void ScriptCState::runCompiler(Context *rsc,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
LOGE("Invalid version pragma value: %s\n", values[i]);
|
LOGE("Invalid version pragma value: %s\n", values[i]);
|
||||||
// Handle Fatal Error
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(keys[i], "stateVertex")) {
|
if (!strcmp(keys[i], "stateVertex")) {
|
||||||
@@ -559,7 +559,7 @@ void ScriptCState::runCompiler(Context *rsc,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
LOGE("Unrecognized value %s passed to stateVertex", values[i]);
|
LOGE("Unrecognized value %s passed to stateVertex", values[i]);
|
||||||
// Handle Fatal Error
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(keys[i], "stateRaster")) {
|
if (!strcmp(keys[i], "stateRaster")) {
|
||||||
@@ -571,7 +571,7 @@ void ScriptCState::runCompiler(Context *rsc,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
LOGE("Unrecognized value %s passed to stateRaster", values[i]);
|
LOGE("Unrecognized value %s passed to stateRaster", values[i]);
|
||||||
// Handle Fatal Error
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(keys[i], "stateFragment")) {
|
if (!strcmp(keys[i], "stateFragment")) {
|
||||||
@@ -583,7 +583,7 @@ void ScriptCState::runCompiler(Context *rsc,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
LOGE("Unrecognized value %s passed to stateFragment", values[i]);
|
LOGE("Unrecognized value %s passed to stateFragment", values[i]);
|
||||||
// Handle Fatal Error
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(keys[i], "stateStore")) {
|
if (!strcmp(keys[i], "stateStore")) {
|
||||||
@@ -595,9 +595,10 @@ void ScriptCState::runCompiler(Context *rsc,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
LOGE("Unrecognized value %s passed to stateStore", values[i]);
|
LOGE("Unrecognized value %s passed to stateStore", values[i]);
|
||||||
// Handle Fatal Error
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
@@ -630,7 +631,11 @@ RsScript rsi_ScriptCCreate(Context *rsc,
|
|||||||
ss->mScript.clear();
|
ss->mScript.clear();
|
||||||
s->incUserRef();
|
s->incUserRef();
|
||||||
|
|
||||||
ss->runCompiler(rsc, s.get(), resName, cacheDir);
|
if (!ss->runCompiler(rsc, s.get(), resName, cacheDir)) {
|
||||||
|
// Error during compile, destroy s and return null.
|
||||||
|
s->zeroUserRef();
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
ss->clear(rsc);
|
ss->clear(rsc);
|
||||||
return s.get();
|
return s.get();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ public:
|
|||||||
void init(Context *rsc);
|
void init(Context *rsc);
|
||||||
|
|
||||||
void clear(Context *rsc);
|
void clear(Context *rsc);
|
||||||
void runCompiler(Context *rsc, ScriptC *s, const char *resName, const char *cacheDir);
|
bool runCompiler(Context *rsc, ScriptC *s, const char *resName, const char *cacheDir);
|
||||||
|
|
||||||
struct SymbolTable_t {
|
struct SymbolTable_t {
|
||||||
const char * mName;
|
const char * mName;
|
||||||
|
|||||||
Reference in New Issue
Block a user