- 27 Oct, 2009 1 commit
-
-
christian.plesner.hansen@gmail.com authored
of individual changes: - Added infrastructure for custom stub caching. - Push the code object onto the stack in exit calls instead of a debug/non-debug marker. - Remove the DEBUG_EXIT frame type. - Add a new exit stub generator for API getters. Committed: http://code.google.com/p/v8/source/detail?r=3130 Review URL: http://codereview.chromium.org/330017 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3150 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 26 Oct, 2009 2 commits
-
-
christian.plesner.hansen@gmail.com authored
Review URL: http://codereview.chromium.org/335027 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3133 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
christian.plesner.hansen@gmail.com authored
of individual changes: - Added infrastructure for custom stub caching. - Push the code object onto the stack in exit calls instead of a debug/non-debug marker. - Remove the DEBUG_EXIT frame type. - Add a new exit stub generator for API getters. Review URL: http://codereview.chromium.org/330017 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3130 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Oct, 2009 1 commit
-
-
fschneider@chromium.org authored
Adding calls to global functions to the new compiler. Review URL: http://codereview.chromium.org/302002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3099 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 15 Oct, 2009 1 commit
-
-
fschneider@chromium.org authored
Review URL: http://codereview.chromium.org/271102 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3075 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 Oct, 2009 1 commit
-
-
kmillikin@chromium.org authored
fast code generator is optimized for compilation time and code size. Currently it is only implemented on IA32. It is potentially triggered for any code in the global scope (including code eval'd in the global scope). It performs a syntactic check and chooses to compile in fast mode if the AST contains only supported constructs and matches some other constraints. Initially supported constructs are * ExpressionStatement, * ReturnStatement, * VariableProxy (variable references) to parameters and stack-allocated locals, * Assignment with lhs a parameter or stack-allocated local, and * Literal This allows compilation of literals at the top level and not much else. All intermediate values are allocated to temporaries and the stack is used for all temporaries. The extra memory traffic is a known issue. The code generated for 'true' is: 0 push ebp 1 mov ebp,esp 3 push esi 4 push edi 5 push 0xf5cca135 ;; object: 0xf5cca135 <undefined> 10 cmp esp,[0x8277efc] 16 jnc 27 (0xf5cbbb1b) 22 call 0xf5cac960 ;; code: STUB, StackCheck, minor: 0 27 push 0xf5cca161 ;; object: 0xf5cca161 <true> 32 mov eax,[esp] 35 mov [ebp+0xf4],eax 38 pop eax 39 mov eax,[ebp+0xf4] 42 mov esp,ebp ;; js return 44 pop ebp 45 ret 0x4 48 mov eax,0xf5cca135 ;; object: 0xf5cca135 <undefined> 53 mov esp,ebp ;; js return 55 pop ebp 56 ret 0x4 Review URL: http://codereview.chromium.org/273050 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3067 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 13 Oct, 2009 1 commit
-
-
kmillikin@chromium.org authored
contains_array_literal_ implies materialized_literal_count_ > 0, and we appear not to need to know about array literals specifically. Review URL: http://codereview.chromium.org/272043 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3055 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 12 Oct, 2009 2 commits
-
-
kmillikin@chromium.org authored
implementation is not yet complete (it prints only the node name for some AST constructs) and does not serialize everything needed to reconstitute the AST. It is motivated by a desire to prototype source-to-source transformations in JavaScript itself (or anything else that can grok JSON), but it should have other uses too. Feedback is welcome. Review URL: http://codereview.chromium.org/131101 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3051 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
while, and for loops. Previously they were distinguished by a type field, which required runtime asserts to avoid invalid nodes (since not all loop types have the same internal structure). Now they C++ type system is used to require well-formed loop ASTs. Because they do not share compilation code, we had very large functions in the code generators that merely did a runtime dispatch to a specific implementation based on the type. Review URL: http://codereview.chromium.org/269049 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3048 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 28 Sep, 2009 1 commit
-
-
kmillikin@chromium.org authored
It was not currently being used for expressions or declarations and always had the default initial value. Review URL: http://codereview.chromium.org/246019 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2976 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Sep, 2009 1 commit
-
-
lrn@chromium.org authored
(Not yet fully functional) Review URL: http://codereview.chromium.org/201042 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2845 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 19 Aug, 2009 1 commit
-
-
sgjesse@chromium.org authored
During parsing functions are analyzed for statements of the form this.x = ...;. These assignments are categorized in two types: simple and non simple. The simple ones are where the right hand side is known to be either a constant or an argument to the function. If a function only contains statements of this type the property names are collected and for the simple assignments the index of the argument or the constant value assigned are stored as well. When the initial map for a function is created and the function consists of only this type of assignemnts the initial map is created with a descriptor array describing these properties which will be known to always exist in an object created from the function. The information on this property assignments is not collected during pre-parsing so if compiling using pre-parse data these optimization hints are not available. Next step will be to use the information collected for the simple assignments to generate constructor code which will create and initialize the object from this information without calling the code for the function. Review URL: http://codereview.chromium.org/172088 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2710 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 Aug, 2009 1 commit
-
-
sgjesse@chromium.org authored
Review URL: http://codereview.chromium.org/165527 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2687 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 Jul, 2009 1 commit
-
-
kmillikin@chromium.org authored
AstNode in case we ever want to have some other kind of node. Split the NODE_LIST macro-generating macro so that we can iterate concrete subclasses of Statement and concrete subclasses of Expression separately. Review URL: http://codereview.chromium.org/159632 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2586 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 29 Jun, 2009 2 commits
-
-
kasperl@chromium.org authored
custom %HasXXXClass() calls. Review URL: http://codereview.chromium.org/151018 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2293 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kasperl@chromium.org authored
Review URL: http://codereview.chromium.org/150018 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2290 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Jun, 2009 1 commit
-
-
antonm@chromium.org authored
Review URL: http://codereview.chromium.org/125141 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2263 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 Jun, 2009 1 commit
-
-
kmillikin@chromium.org authored
Review URL: http://codereview.chromium.org/126193 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2183 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 15 Jun, 2009 3 commits
-
-
sgjesse@chromium.org authored
Only send the inscructions part of a code object to oprofile when reporting dynamically generated code. Before the code object header was also reported to oprofile as code which caused strange disassembly output when using opannotate. Review URL: http://codereview.chromium.org/125126 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2174 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
ager@chromium.org authored
Review URL: http://codereview.chromium.org/125121 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2166 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kasperl@chromium.org authored
Marsaglia's multiply-with-carry instead of mixing the bits obtained from calling the system random() twice. This seems to be a bit faster and gives a better distribution than the system random() in particular on Windows. Review URL: http://codereview.chromium.org/126113 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2159 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Jun, 2009 1 commit
-
-
mikhail.naganov@gmail.com authored
This is a trivial per-row compression: - short aliases are introduced for events and code creation tags; - in tick events, offsets are used instead of absolute addresses; - removed 'code-allocation' event, as it seems not used. The first two options are depend on the new flag: 'compress-log', which is off by default. On benchmarks run w/o snapshot, this gives 45% log size reduction. Review URL: http://codereview.chromium.org/119304 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2122 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 05 Jun, 2009 1 commit
-
-
kmillikin@chromium.org authored
deferred code snippets are highly stylized. They always make a call to a stub or the runtime and then return. This change takes advantage of that. Creating a deferred code object now captures a snapshot of the registers in the virtual frame. The registers are automatically saved on entry to the deferred code and restored on exit. The clients of deferred code must ensure that there is no change to the registers in the virtual frame (eg, by allocating which can cause spilling) or to the stack pointer. That is currently the case. As a separate change, I will add either code to verify this constraint or else code to forbid any frame effect. The deferred code itself does not use the virtual frame or register allocator (or even the code generator). It is raw macro assembler code. Review URL: http://codereview.chromium.org/118226 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2112 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 27 May, 2009 2 commits
-
-
kmillikin@chromium.org authored
Review URL: http://codereview.chromium.org/113895 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2065 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
to the platform-specific reserved registers. They are always in use for their intended purpose, cannot appear in the virtual frame, and can be freely used without allocation in the code generator. Review URL: http://codereview.chromium.org/113837 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2061 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 25 May, 2009 3 commits
-
-
erik.corry@gmail.com authored
called from within a loop or not. In the past we lost the information if a call site went megamorphic before a lazily compiled callee was called for the first time. Now we track that correctly (this is an issue that affects richards). We still don't manage to track the in-loop state through a constructor call, since constructor calls use LoadICs instead of CallICs. This issue affects delta-blue. So in this patch we assume that lazy compilations that don't happen through a CallIC happen from inside a loop. I have an idea to fix this but this patch is big enough already. With our improved tracking of in-loop state I have switched off the inlining of in-object loads for code that is not in a loop. This benefits compile speed. One issue is that eagerly compiled code now doesn't get the in-object loads inlined. We need to eagerly compile less code to fix this. Review URL: http://codereview.chromium.org/115744 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2046 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
mikhail.naganov@gmail.com authored
This issue was raised by Brett Wilson while reviewing my changelist for readability. Craig Silverstein (one of C++ SG maintainers) confirmed that we should declare one namespace per line. Our way of namespaces closing seems not violating style guides (there is no clear agreement on it), so I left it intact. Review URL: http://codereview.chromium.org/115756 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2038 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
mikhail.naganov@gmail.com authored
All changes from http://codereview.chromium.org/115024, except splitting namespace declarations in two lines (will be done separately for all source files). Review URL: http://codereview.chromium.org/113763 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2037 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 May, 2009 2 commits
-
-
ager@chromium.org authored
two words: there is no reason to keep a pointer to the current code generator and macro assembler in the JumpTarget. Review URL: http://codereview.chromium.org/113458 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1987 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
bak@chromium.org authored
Yields a 2% speedup when running compiler-benchmark. Review URL: http://codereview.chromium.org/113519 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1985 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 15 May, 2009 1 commit
-
-
ager@chromium.org authored
to one by keeping a stack of active code generators and by using indirection to handles. Mainly a cleanup. No visible performance impact. Review URL: http://codereview.chromium.org/113455 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1965 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 May, 2009 2 commits
-
-
bak@chromium.org authored
Review URL: http://codereview.chromium.org/115348 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1948 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
aggregate compilation time timer is the same as it was before. Review URL: http://codereview.chromium.org/115344 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1946 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 May, 2009 1 commit
-
-
mikhail.naganov@gmail.com authored
To re-enable tests, instead of compiled code patching, inlined code is used. Inlined code is only installed in test. Review URL: http://codereview.chromium.org/108015 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1892 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Apr, 2009 1 commit
-
-
feng@chromium.org authored
ENABLE_DEBUGGER_SUPPORT is enabled by default unless it is on Android platform. On Android platform, it can also enabled by passing -DENABLE_DEBUGGER_SUPPORT flag to the compiler. This should not affect any existing build (I hope, cross my fingers) except the build in real Android environment (in other word, it only affects me now). There are lot of room for code refactoring in stead of using #ifdef all over the place. I will leave this to v8 folks. Review URL: http://codereview.chromium.org/77035 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1745 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 14 Apr, 2009 2 commits
-
-
sgjesse@chromium.org authored
Record the function return position as the end of the function source. Don't record function entry and return positions as statement positions. Added a test for source position for break at function return. Review URL: http://codereview.chromium.org/67109 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1706 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
mikhail.naganov@gmail.com authored
Currently function name inference is wired with AST optimization pass to avoid introducing another pass over AST. A better solution would be to rewrite AST visitors so they can be naturally combined together in a single pass, as their current implementation doesn't allow it. For examples of cases where function names can be inferred, see the tests file. Review URL: http://codereview.chromium.org/62146 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1696 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Apr, 2009 1 commit
-
-
kmillikin@chromium.org authored
counting the reference to the return value and passing it to the return label. This requires threading it through try/catch and try/finally. The return value is loaded into eax more lazily than before. Also, perform some related refactoring of jump targets. Review URL: http://codereview.chromium.org/56172 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1669 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 31 Mar, 2009 1 commit
-
-
kmillikin@chromium.org authored
oprofile agent when we compile the body of a function literal. Review URL: http://codereview.chromium.org/57048 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1645 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Mar, 2009 1 commit
-
-
kmillikin@chromium.org authored
destructor to no longer invalidate the result. Review URL: http://codereview.chromium.org/50051 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1560 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-