Direct call to native RegExp code from JavaScript.
authorsgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 6 Jan 2010 11:09:30 +0000 (11:09 +0000)
committersgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 6 Jan 2010 11:09:30 +0000 (11:09 +0000)
commit429f3cf9f28d1c4d5660b8d20f794541e7dcc0a3
tree7e233de0ef9e938d6d17098790fa9eb9e92a495a
parent8618b9846b3602dd00a7f5ae1a0748c46a5d8a6e
Direct call to native RegExp code from JavaScript.

Calls to RegExp no longer have to be via a call to the runtime system. A new stub have been added which can handle this call in generated code. The stub checks all the parameters and creates RegExp entry frame in the same way as it is created by the runtime system. Bailout to the runtime system is done whenever an uncommon situation is encountered or when the static data used is not initialized. After running the native RegExp code the last match info is updated like in the runtime system.

Currently only ASCII strings are handled.

Added another argument to the RegExp entry frame. It indicated whether the call is direct from JavaScript code or through the runtime system. This information is used when RegExp execution is interrupted. If an interruption happens when RegExp code is called directly a retry is issued causing the interruption to be handled via the runtime system. The reason for this is that the direct call to RegExp code does not support garbage collection.
Review URL: http://codereview.chromium.org/521028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3542 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
30 files changed:
src/arm/codegen-arm.cc
src/arm/codegen-arm.h
src/arm/regexp-macro-assembler-arm.cc
src/arm/regexp-macro-assembler-arm.h
src/arm/simulator-arm.h
src/assembler.cc
src/assembler.h
src/code-stubs.h
src/codegen.cc
src/codegen.h
src/flag-definitions.h
src/ia32/codegen-ia32.cc
src/ia32/codegen-ia32.h
src/ia32/macro-assembler-ia32.cc
src/ia32/macro-assembler-ia32.h
src/ia32/regexp-macro-assembler-ia32.cc
src/ia32/regexp-macro-assembler-ia32.h
src/ia32/simulator-ia32.h
src/jsregexp.cc
src/jsregexp.h
src/objects.h
src/regexp-delay.js
src/regexp-macro-assembler.cc
src/regexp-stack.h
src/v8-counters.h
src/x64/codegen-x64.cc
src/x64/codegen-x64.h
src/x64/regexp-macro-assembler-x64.cc
src/x64/regexp-macro-assembler-x64.h
src/x64/simulator-x64.h