Chromium Code Reviews| Index: src/runtime/runtime.cc |
| diff --git a/src/runtime/runtime.cc b/src/runtime/runtime.cc |
| index 15451c5c6e3828f356df456fe720d834ae633518..8533aa4b30074b6f24e9310c8be3d736fa9501e2 100644 |
| --- a/src/runtime/runtime.cc |
| +++ b/src/runtime/runtime.cc |
| @@ -4,6 +4,7 @@ |
| #include "src/runtime/runtime.h" |
| +#include "src/assembler.h" |
| #include "src/contexts.h" |
| #include "src/handles-inl.h" |
| #include "src/heap/heap.h" |
| @@ -94,6 +95,31 @@ const Runtime::Function* Runtime::FunctionForId(Runtime::FunctionId id) { |
| } |
| +static Runtime::Function* kRedirectedIntrinsicFunctions = nullptr; |
| + |
| + |
| +const Runtime::Function* Runtime::RuntimeFunctionTable(Isolate* isolate) { |
| + if (isolate->external_reference_redirector()) { |
| + // When running with the simulator we need to provide a table which has |
| + // redirected runtime entry addresses. |
| + if (!kRedirectedIntrinsicFunctions) { |
|
Michael Starzinger
2015/09/29 08:28:34
This is not thread-safe when multiple isolates are
rmcilroy
2015/10/01 17:02:45
Put this on the isolate in RuntimeState as disscus
Michael Starzinger
2015/10/01 17:43:47
Acknowledged. Looks good.
|
| + kRedirectedIntrinsicFunctions = reinterpret_cast<Runtime::Function*>( |
| + malloc(sizeof(kIntrinsicFunctions))); |
|
Michael Starzinger
2015/09/29 08:28:34
Hmm, allocated but never freed AFAICT. How about w
rmcilroy
2015/10/01 17:02:45
Put this on the isolate in RuntimeState as disscus
Michael Starzinger
2015/10/01 17:43:47
Acknowledged. Looks good.
|
| + memcpy(kRedirectedIntrinsicFunctions, kIntrinsicFunctions, |
| + sizeof(kIntrinsicFunctions)); |
| + for (int i = 0; i < sizeof(kIntrinsicFunctions) / sizeof(Function); i++) { |
|
oth
2015/09/29 09:33:36
nit: arraysize()
rmcilroy
2015/10/01 17:02:45
Done.
|
| + ExternalReference redirected_entry(static_cast<Runtime::FunctionId>(i), |
| + isolate); |
| + kRedirectedIntrinsicFunctions[i].entry = redirected_entry.address(); |
| + } |
|
rmcilroy
2015/09/28 16:20:47
Note: To get this working on the simulator I've ne
Michael Starzinger
2015/09/29 08:28:34
Acknowledged. I'm fine with this, just the mechani
rmcilroy
2015/10/01 17:02:45
Acknowledged.
|
| + } |
| + return kRedirectedIntrinsicFunctions; |
| + } else { |
| + return kIntrinsicFunctions; |
| + } |
| +} |
| + |
| + |
| std::ostream& operator<<(std::ostream& os, Runtime::FunctionId id) { |
| return os << Runtime::FunctionForId(id)->name; |
| } |