Revert "Introduce SymbolResolver and its subclasses."
This reverts commit ee69009f3590748aac4db17c0f9774252326d6cb.
diff --git a/lib/ExecutionEngine/Compiler.cpp b/lib/ExecutionEngine/Compiler.cpp
index c4a0870..a56c11c 100644
--- a/lib/ExecutionEngine/Compiler.cpp
+++ b/lib/ExecutionEngine/Compiler.cpp
@@ -23,13 +23,11 @@
#include "Disassembler/Disassembler.h"
#endif
-#include "BCCRuntimeSymbolResolver.h"
#include "DebugHelper.h"
+#include "Runtime.h"
#include "ScriptCompiled.h"
#include "Sha1Helper.h"
#include "CompilerOption.h"
-#include "SymbolResolverProxy.h"
-#include "SymbolResolvers.h"
#include "librsloader.h"
@@ -404,20 +402,10 @@
return 0;
// Load the ELF Object
- {
- BCCRuntimeSymbolResolver BCCRuntimesResolver;
- LookupFunctionSymbolResolver<void*> RSSymbolResolver(mpSymbolLookupFn,
- mpSymbolLookupContext);
-
- SymbolResolverProxy Resolver;
- Resolver.chainResolver(BCCRuntimesResolver);
- Resolver.chainResolver(RSSymbolResolver);
-
- mRSExecutable =
- rsloaderCreateExec((unsigned char *)&*mEmittedELFExecutable.begin(),
- mEmittedELFExecutable.size(),
- SymbolResolverProxy::LookupFunction, &Resolver);
- }
+ mRSExecutable =
+ rsloaderCreateExec((unsigned char *)&*mEmittedELFExecutable.begin(),
+ mEmittedELFExecutable.size(),
+ &resolveSymbolAdapter, this);
if (!mRSExecutable) {
setError("Fail to load emitted ELF relocatable file");
@@ -664,6 +652,25 @@
return rsloaderGetSymbolAddress(mRSExecutable, name);
}
+
+void *Compiler::resolveSymbolAdapter(void *context, char const *name) {
+ Compiler *self = reinterpret_cast<Compiler *>(context);
+
+ if (void *Addr = FindRuntimeFunction(name)) {
+ return Addr;
+ }
+
+ if (self->mpSymbolLookupFn) {
+ if (void *Addr = self->mpSymbolLookupFn(self->mpSymbolLookupContext, name)) {
+ return Addr;
+ }
+ }
+
+ ALOGE("Unable to resolve symbol: %s\n", name);
+ return NULL;
+}
+
+
Compiler::~Compiler() {
rsloaderDisposeExec(mRSExecutable);