summaryrefslogtreecommitdiff
path: root/runtime/lambda
AgeCommit message (Collapse)Author
2016-08-09Revert experimental lambda feature. Narayan Kamath
This is a revert of the following changes : 30c475a2046951a81769c2db0b2dad66cd71e189. lambda: Minor capture-variable/liberate-variable clean-up after post-merge reviews. 6918bf13eb855b3aa8ccdddda2d27ae8c60cec56. lambda: Experimental support for capture-variable and liberate-variable fc1ccd740b7c8e96dfac675cfc580122cd1b40a6. lambda: Infrastructure to support capture/liberate-variable dex opcodes e2facc5b18cd756a8b5500fb3d90da69c9ee0fb7. runtime: Add lambda box/unbox object equality 2ee54e249ad21c74f29a161e248bebe7d22fddf1. runtime: Partially implement box-lambda and unbox-lambda experimental opcodes 158f35c98e2ec0d40d2c032b8cdce5fb60944a7f. interpreter: Add experimental lambda opcodes for invoke/create-lambda a3bb72036f5454e410467f7151dc89f725ae1151. Added format 25x to dexdump(2). Plus surrounding cleanups. Test: make test-art Change-Id: Ic6f999ad17385ef933f763641049cf721510b202
2016-05-13Fix misc-macro-parentheses warnings. Chih-Hung Hsieh
* Add parentheses to fix warnings. * Use NOLINT to suppress wrong clang-tidy warnings. Bug: 28705665 Change-Id: Icc8bc9b59583dee0ea17ab83e0ff0383b8599c3e
2015-11-24Revert "lambda: Add support for invoke-interface for boxed innate lambdas" Nicolas Geoffray
955-lambda is flaky Bug: 24618608 Bug: 25107649 This reverts commit 457e874459ae638145cab6d572e34d48480e39d2. Change-Id: I24884344d21d7a4262e53e3f5dba57032687ddb7
2015-11-20lambda: Add support for invoke-interface for boxed innate lambdas Igor Murashkin
Lambda closures created with the 'create-lambda' instruction (termed "innate lambdas") can be turned into an object with 'box-lambda'. This CL enables support for those kinds of lambdas to work with 'invoke-interface' by generating a proxy class for the lambda. Note: MIPS32/64 support not included. Bug: 24618608 Bug: 25107649 Change-Id: Ic8f1bb66ebeaed4097e758a50becf1cff6ccaefb
2015-11-18Remove incorrect iterator increment Mathieu Chartier
Erase already goes to the next element. Bug: 25738102 Change-Id: Iea31a7fb27ce9f810acf019a7b59dda7704b8f26
2015-11-02lambda: Minor capture-variable/liberate-variable clean-up after post-merge ↵ Igor Murashkin
reviews. Change-Id: I64f867d4ed5a5efcac138097f38efe4bb7f1281d
2015-09-27Revert "Revert "lambda: Experimental support for capture-variable and ↵ Igor Murashkin
liberate-variable"" This reverts commit 7bbb80ab52c203e44d2ded2c947b3b03b4b31ec4. Change-Id: If806ce5c6c5e96fdb2c3761dee096f74e7e5b001
2015-09-27Revert "lambda: Experimental support for capture-variable and liberate-variable" Nicolas Geoffray
Test fails. This reverts commit b72123440d8541362ebdb131436f9dbdda5fd329. Change-Id: Ic9ed92f8c826d8465eb36b746dc44af05caf041c
2015-09-25lambda: Experimental support for capture-variable and liberate-variable Igor Murashkin
Supports capturing/liberating any primitive variables. No support for capturing objects/lambdas yet since they would both need GC changes to track roots through closures. Change-Id: Ibfb68bfe4c579dbf93823aac4c0e6ac8f6360c5d
2015-09-04Fix the read barrier config build. Hiroshi Yamauchi
Change-Id: I580d85609e8fa9b8c65466c6596d65bc3b155330
2015-09-04Merge "lambda: Infrastructure to support capture/liberate-variable dex opcodes" Igor Murashkin
2015-09-03lambda: Infrastructure to support capture/liberate-variable dex opcodes Igor Murashkin
* ArtLambdaMethod - wrap an ArtMethod with extra runtime lambda info * Closure - data representation for a runtime lambda closure (read-only) * ClosureBuilder - writer for creating a Closure at runtime * ShortyFieldType - char/enum wrapper for shorty_field_type in dex Tests: * Closure, ClosureBuilder, ShortyFieldType have full unit test coverage. * ArtLambdaMethod does not, but it is tested indirectly and is otherwise trivial getters. Future CLs will include interpreter integration with minimal changes to this Closure infrastructure. Change-Id: I38a7aea8df1da7b154fd6623258c6c228c8e51df
2015-09-03Some fixes for the CC collector. Hiroshi Yamauchi
- Remove a DCHECK in DisableMarkingCheckpoint, which caused occasional (false) failures. - Check the thread-local GetWeakRefAccessEnabled in boxed lambdas weak access. - Add missing BroadcastForNewAllocationRecords and BroadcastForNewWeakBoxedLambdas. The lack of the former caused occasional deadlocks in the ddmc test. - Remove the 'ensure system weaks disallowed' calls, which weren't useful and dead. Bug: 12687968 Change-Id: I33850c8d12e6e1a3aed1c2bb18eba263cbab76e8
2015-08-04Revert "cleanup: Replace pointers with out-parameters and fix-up formatting" Igor Murashkin
This reverts commit a315f5c546b796f55f4872bb6efc15eb858d9639. -- Revert "runtime: cleanup class_linker out-parameters and formatting" This reverts commit bc1d78daa463572c5a770cdca858a3b51d8e1b7b. -- Revert "base: replace raw pointers for out-parameters with safer out<T>" This reverts commit fb326cffc679cab8eb873b9e44795706f023cb3c.
2015-07-30base: replace raw pointers for out-parameters with safer out<T> Igor Murashkin
Add a zero-cost type-safe abstraction for representing "out" parameters (i.e. when the calling function has to return multiple results out by-reference into the argument slots instead of using the return slot). Change-Id: I33a941e4863b6bed71d2bfa43d7f48e9b111f83f
2015-07-22Move to newer clang annotations Mathieu Chartier
Also enable -Wthread-safety-negative. Changes: Switch to capabilities and negative capabilities. Future work: Use capabilities to implement uninterruptible annotations to work with AssertNoThreadSuspension. Bug: 20072211 Change-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33
2015-07-20runtime: Add lambda box/unbox object equality Igor Murashkin
A lambda that is boxed with box-lambda is now stored as a weak reference in a global runtime table (lambda::BoxTable). Repeatedly boxing the same lambda closure value will always return the same java.lang.Object back. Since there is no way to observe the address of an object, a GC can happen and clean up the table of any dead boxed lambdas, which can also shrink the table to prevent the memory use from growing too much. (Note that a lambda closure is immutable, so hashing over it is guaranteed safe.) Change-Id: I786c1323ff14eed937936b303d511875f9642524