| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 // | 4 // |
| 5 // The intrinsic code below is executed before a method has built its frame. | 5 // The intrinsic code below is executed before a method has built its frame. |
| 6 // The return address is on the stack and the arguments below it. | 6 // The return address is on the stack and the arguments below it. |
| 7 // Registers EDX (arguments descriptor) and ECX (function) must be preserved. | 7 // Registers EDX (arguments descriptor) and ECX (function) must be preserved. |
| 8 // Each intrinsification method returns true if the corresponding | 8 // Each intrinsification method returns true if the corresponding |
| 9 // Dart method was intrinsified. | 9 // Dart method was intrinsified. |
| 10 | 10 |
| (...skipping 1923 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1934 StringEquality(assembler, kOneByteStringCid); | 1934 StringEquality(assembler, kOneByteStringCid); |
| 1935 } | 1935 } |
| 1936 | 1936 |
| 1937 | 1937 |
| 1938 void Intrinsifier::TwoByteString_equality(Assembler* assembler) { | 1938 void Intrinsifier::TwoByteString_equality(Assembler* assembler) { |
| 1939 StringEquality(assembler, kTwoByteStringCid); | 1939 StringEquality(assembler, kTwoByteStringCid); |
| 1940 } | 1940 } |
| 1941 | 1941 |
| 1942 | 1942 |
| 1943 void Intrinsifier::JSRegExp_ExecuteMatch(Assembler* assembler) { | 1943 void Intrinsifier::JSRegExp_ExecuteMatch(Assembler* assembler) { |
| 1944 if (FLAG_use_jscre) { | |
| 1945 return; | |
| 1946 } | |
| 1947 static const intptr_t kRegExpParamOffset = 3 * kWordSize; | 1944 static const intptr_t kRegExpParamOffset = 3 * kWordSize; |
| 1948 static const intptr_t kStringParamOffset = 2 * kWordSize; | 1945 static const intptr_t kStringParamOffset = 2 * kWordSize; |
| 1949 // start_index smi is located at offset 1. | 1946 // start_index smi is located at offset 1. |
| 1950 | 1947 |
| 1951 // Incoming registers: | 1948 // Incoming registers: |
| 1952 // EAX: Function. (Will be loaded with the specialized matcher function.) | 1949 // EAX: Function. (Will be loaded with the specialized matcher function.) |
| 1953 // ECX: Unknown. (Must be GC safe on tail call.) | 1950 // ECX: Unknown. (Must be GC safe on tail call.) |
| 1954 // EDX: Arguments descriptor. (Will be preserved.) | 1951 // EDX: Arguments descriptor. (Will be preserved.) |
| 1955 | 1952 |
| 1956 // Load the specialized function pointer into EAX. Leverage the fact the | 1953 // Load the specialized function pointer into EAX. Leverage the fact the |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2016 Isolate::current_tag_offset()); | 2013 Isolate::current_tag_offset()); |
| 2017 // Set return value to Isolate::current_tag_. | 2014 // Set return value to Isolate::current_tag_. |
| 2018 __ movl(EAX, current_tag_addr); | 2015 __ movl(EAX, current_tag_addr); |
| 2019 __ ret(); | 2016 __ ret(); |
| 2020 } | 2017 } |
| 2021 | 2018 |
| 2022 #undef __ | 2019 #undef __ |
| 2023 } // namespace dart | 2020 } // namespace dart |
| 2024 | 2021 |
| 2025 #endif // defined TARGET_ARCH_IA32 | 2022 #endif // defined TARGET_ARCH_IA32 |
| OLD | NEW |