| Index: src/runtime/runtime-internal.cc
|
| diff --git a/src/runtime/runtime-internal.cc b/src/runtime/runtime-internal.cc
|
| index 724d679bbc1aab088a46db8cbe55aa9ae5e97aed..66cb77f683ab1f1a15ef3aaafffd03966616f46d 100644
|
| --- a/src/runtime/runtime-internal.cc
|
| +++ b/src/runtime/runtime-internal.cc
|
| @@ -237,102 +237,6 @@ RUNTIME_FUNCTION(Runtime_RenderCallSite) {
|
| }
|
|
|
|
|
| -RUNTIME_FUNCTION(Runtime_GetFromCacheRT) {
|
| - SealHandleScope shs(isolate);
|
| - // This is only called from codegen, so checks might be more lax.
|
| - CONVERT_ARG_CHECKED(JSFunctionResultCache, cache, 0);
|
| - CONVERT_ARG_CHECKED(Object, key, 1);
|
| -
|
| - {
|
| - DisallowHeapAllocation no_alloc;
|
| -
|
| - int finger_index = cache->finger_index();
|
| - Object* o = cache->get(finger_index);
|
| - if (o == key) {
|
| - // The fastest case: hit the same place again.
|
| - return cache->get(finger_index + 1);
|
| - }
|
| -
|
| - for (int i = finger_index - 2; i >= JSFunctionResultCache::kEntriesIndex;
|
| - i -= 2) {
|
| - o = cache->get(i);
|
| - if (o == key) {
|
| - cache->set_finger_index(i);
|
| - return cache->get(i + 1);
|
| - }
|
| - }
|
| -
|
| - int size = cache->size();
|
| - DCHECK(size <= cache->length());
|
| -
|
| - for (int i = size - 2; i > finger_index; i -= 2) {
|
| - o = cache->get(i);
|
| - if (o == key) {
|
| - cache->set_finger_index(i);
|
| - return cache->get(i + 1);
|
| - }
|
| - }
|
| - }
|
| -
|
| - // There is no value in the cache. Invoke the function and cache result.
|
| - HandleScope scope(isolate);
|
| -
|
| - Handle<JSFunctionResultCache> cache_handle(cache);
|
| - Handle<Object> key_handle(key, isolate);
|
| - Handle<Object> value;
|
| - {
|
| - Handle<JSFunction> factory(JSFunction::cast(
|
| - cache_handle->get(JSFunctionResultCache::kFactoryIndex)));
|
| - // TODO(antonm): consider passing a receiver when constructing a cache.
|
| - Handle<JSObject> receiver(isolate->global_proxy());
|
| - // This handle is nor shared, nor used later, so it's safe.
|
| - Handle<Object> argv[] = {key_handle};
|
| - ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| - isolate, value,
|
| - Execution::Call(isolate, factory, receiver, arraysize(argv), argv));
|
| - }
|
| -
|
| -#ifdef VERIFY_HEAP
|
| - if (FLAG_verify_heap) {
|
| - cache_handle->JSFunctionResultCacheVerify();
|
| - }
|
| -#endif
|
| -
|
| - // Function invocation may have cleared the cache. Reread all the data.
|
| - int finger_index = cache_handle->finger_index();
|
| - int size = cache_handle->size();
|
| -
|
| - // If we have spare room, put new data into it, otherwise evict post finger
|
| - // entry which is likely to be the least recently used.
|
| - int index = -1;
|
| - if (size < cache_handle->length()) {
|
| - cache_handle->set_size(size + JSFunctionResultCache::kEntrySize);
|
| - index = size;
|
| - } else {
|
| - index = finger_index + JSFunctionResultCache::kEntrySize;
|
| - if (index == cache_handle->length()) {
|
| - index = JSFunctionResultCache::kEntriesIndex;
|
| - }
|
| - }
|
| -
|
| - DCHECK(index % 2 == 0);
|
| - DCHECK(index >= JSFunctionResultCache::kEntriesIndex);
|
| - DCHECK(index < cache_handle->length());
|
| -
|
| - cache_handle->set(index, *key_handle);
|
| - cache_handle->set(index + 1, *value);
|
| - cache_handle->set_finger_index(index);
|
| -
|
| -#ifdef VERIFY_HEAP
|
| - if (FLAG_verify_heap) {
|
| - cache_handle->JSFunctionResultCacheVerify();
|
| - }
|
| -#endif
|
| -
|
| - return *value;
|
| -}
|
| -
|
| -
|
| RUNTIME_FUNCTION(Runtime_MessageGetStartPosition) {
|
| SealHandleScope shs(isolate);
|
| DCHECK(args.length() == 1);
|
| @@ -413,15 +317,6 @@ RUNTIME_FUNCTION(Runtime_IS_VAR) {
|
| }
|
|
|
|
|
| -RUNTIME_FUNCTION(Runtime_GetFromCache) {
|
| - HandleScope scope(isolate);
|
| - DCHECK(args.length() == 2);
|
| - CONVERT_SMI_ARG_CHECKED(id, 0);
|
| - args[0] = isolate->native_context()->jsfunction_result_caches()->get(id);
|
| - return __RT_impl_Runtime_GetFromCacheRT(args, isolate);
|
| -}
|
| -
|
| -
|
| RUNTIME_FUNCTION(Runtime_IncrementStatsCounter) {
|
| SealHandleScope shs(isolate);
|
| DCHECK(args.length() == 1);
|
|
|