OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 13002 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13013 Handle<Object> argv[] = { key_handle }; | 13013 Handle<Object> argv[] = { key_handle }; |
13014 bool pending_exception; | 13014 bool pending_exception; |
13015 value = Execution::Call(factory, | 13015 value = Execution::Call(factory, |
13016 receiver, | 13016 receiver, |
13017 ARRAY_SIZE(argv), | 13017 ARRAY_SIZE(argv), |
13018 argv, | 13018 argv, |
13019 &pending_exception); | 13019 &pending_exception); |
13020 if (pending_exception) return Failure::Exception(); | 13020 if (pending_exception) return Failure::Exception(); |
13021 } | 13021 } |
13022 | 13022 |
13023 #ifdef DEBUG | 13023 #ifdef VERIFY_HEAP |
13024 if (FLAG_verify_heap) { | 13024 if (FLAG_verify_heap) { |
13025 cache_handle->JSFunctionResultCacheVerify(); | 13025 cache_handle->JSFunctionResultCacheVerify(); |
13026 } | 13026 } |
13027 #endif | 13027 #endif |
13028 | 13028 |
13029 // Function invocation may have cleared the cache. Reread all the data. | 13029 // Function invocation may have cleared the cache. Reread all the data. |
13030 finger_index = cache_handle->finger_index(); | 13030 finger_index = cache_handle->finger_index(); |
13031 size = cache_handle->size(); | 13031 size = cache_handle->size(); |
13032 | 13032 |
13033 // If we have spare room, put new data into it, otherwise evict post finger | 13033 // If we have spare room, put new data into it, otherwise evict post finger |
(...skipping 10 matching lines...) Expand all Loading... |
13044 } | 13044 } |
13045 | 13045 |
13046 ASSERT(index % 2 == 0); | 13046 ASSERT(index % 2 == 0); |
13047 ASSERT(index >= JSFunctionResultCache::kEntriesIndex); | 13047 ASSERT(index >= JSFunctionResultCache::kEntriesIndex); |
13048 ASSERT(index < cache_handle->length()); | 13048 ASSERT(index < cache_handle->length()); |
13049 | 13049 |
13050 cache_handle->set(index, *key_handle); | 13050 cache_handle->set(index, *key_handle); |
13051 cache_handle->set(index + 1, *value); | 13051 cache_handle->set(index + 1, *value); |
13052 cache_handle->set_finger_index(index); | 13052 cache_handle->set_finger_index(index); |
13053 | 13053 |
13054 #ifdef DEBUG | 13054 #ifdef VERIFY_HEAP |
13055 if (FLAG_verify_heap) { | 13055 if (FLAG_verify_heap) { |
13056 cache_handle->JSFunctionResultCacheVerify(); | 13056 cache_handle->JSFunctionResultCacheVerify(); |
13057 } | 13057 } |
13058 #endif | 13058 #endif |
13059 | 13059 |
13060 return *value; | 13060 return *value; |
13061 } | 13061 } |
13062 | 13062 |
13063 | 13063 |
13064 RUNTIME_FUNCTION(MaybeObject*, Runtime_NewMessageObject) { | 13064 RUNTIME_FUNCTION(MaybeObject*, Runtime_NewMessageObject) { |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13279 // Handle last resort GC and make sure to allow future allocations | 13279 // Handle last resort GC and make sure to allow future allocations |
13280 // to grow the heap without causing GCs (if possible). | 13280 // to grow the heap without causing GCs (if possible). |
13281 isolate->counters()->gc_last_resort_from_js()->Increment(); | 13281 isolate->counters()->gc_last_resort_from_js()->Increment(); |
13282 isolate->heap()->CollectAllGarbage(Heap::kNoGCFlags, | 13282 isolate->heap()->CollectAllGarbage(Heap::kNoGCFlags, |
13283 "Runtime::PerformGC"); | 13283 "Runtime::PerformGC"); |
13284 } | 13284 } |
13285 } | 13285 } |
13286 | 13286 |
13287 | 13287 |
13288 } } // namespace v8::internal | 13288 } } // namespace v8::internal |
OLD | NEW |