| OLD | NEW |
| 1 // Copyright 2008 the V8 project authors. All rights reserved. | 1 // Copyright 2008 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 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 | 151 |
| 152 NativeRegExpMacroAssembler::Result NativeRegExpMacroAssembler::Execute( | 152 NativeRegExpMacroAssembler::Result NativeRegExpMacroAssembler::Execute( |
| 153 Code* code, | 153 Code* code, |
| 154 String* input, | 154 String* input, |
| 155 int start_offset, | 155 int start_offset, |
| 156 const byte* input_start, | 156 const byte* input_start, |
| 157 const byte* input_end, | 157 const byte* input_end, |
| 158 int* output, | 158 int* output, |
| 159 Isolate* isolate) { | 159 Isolate* isolate) { |
| 160 ASSERT(isolate == Isolate::Current()); | 160 ASSERT(isolate == Isolate::Current()); |
| 161 typedef int (*matcher)(String*, int, const byte*, | |
| 162 const byte*, int*, Address, int, Isolate*); | |
| 163 matcher matcher_func = FUNCTION_CAST<matcher>(code->entry()); | |
| 164 | |
| 165 // Ensure that the minimum stack has been allocated. | 161 // Ensure that the minimum stack has been allocated. |
| 166 RegExpStackScope stack_scope(isolate); | 162 RegExpStackScope stack_scope(isolate); |
| 167 Address stack_base = stack_scope.stack()->stack_base(); | 163 Address stack_base = stack_scope.stack()->stack_base(); |
| 168 | 164 |
| 169 int direct_call = 0; | 165 int direct_call = 0; |
| 170 int result = CALL_GENERATED_REGEXP_CODE(matcher_func, | 166 int result = CALL_GENERATED_REGEXP_CODE(code->entry(), |
| 171 input, | 167 input, |
| 172 start_offset, | 168 start_offset, |
| 173 input_start, | 169 input_start, |
| 174 input_end, | 170 input_end, |
| 175 output, | 171 output, |
| 176 stack_base, | 172 stack_base, |
| 177 direct_call, | 173 direct_call, |
| 178 isolate); | 174 isolate); |
| 179 ASSERT(result <= SUCCESS); | 175 ASSERT(result <= SUCCESS); |
| 180 ASSERT(result >= RETRY); | 176 ASSERT(result >= RETRY); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 return NULL; | 257 return NULL; |
| 262 } | 258 } |
| 263 *stack_base = new_stack_base; | 259 *stack_base = new_stack_base; |
| 264 intptr_t stack_content_size = old_stack_base - stack_pointer; | 260 intptr_t stack_content_size = old_stack_base - stack_pointer; |
| 265 return new_stack_base - stack_content_size; | 261 return new_stack_base - stack_content_size; |
| 266 } | 262 } |
| 267 | 263 |
| 268 #endif // V8_INTERPRETED_REGEXP | 264 #endif // V8_INTERPRETED_REGEXP |
| 269 | 265 |
| 270 } } // namespace v8::internal | 266 } } // namespace v8::internal |
| OLD | NEW |