- 19 Aug, 2011 1 commit
-
-
kmillikin@chromium.org authored
Remove unused methods, introduce named constants, and attempt to add some sanity to naming. BUG= TEST= Review URL: http://codereview.chromium.org/7669018 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8972 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 Aug, 2011 2 commits
-
-
keuchel@chromium.org authored
Implementation of the harmony block scoped let bindings as proposed here: http://wiki.ecmascript.org/doku.php?id=harmony:block_scoped_bindings Changes to the syntax are explained there. They are active under the harmony_block_scoping_ flag in the parser. Review URL: http://codereview.chromium.org/7616009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8944 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
Refactored DirectCEntryStub::GenerateCall a bit to make it clearer what's going on and added an ASSERT. Review URL: http://codereview.chromium.org/7640016 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8938 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 12 Aug, 2011 2 commits
-
-
kmillikin@chromium.org authored
Remove the try/finally used for with and catch. Instead of using try/finally to handle break and continue from with or catch, statically track nesting dept and clean up when compiling break or continue. And instead of using try/finally to handle throw to handler in a frame whose pc is inside a with or catch, store the context that the handler should run in in the handler itself. BUG= TEST= Review URL: http://codereview.chromium.org/7618007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8922 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
Non-ancient versions of the ARM-ARM explicitly deprecate most uses of the PC within instructions and older ARM implementations have a non-predictable offset (8 or 12) for some of these deprecated uses. Avoiding the deprecated instruction costs us one additional instruction in DirectCEntryStub::GenerateCall, but this should not cause any significant performance degradation. The deoptimizer still uses the PC in a stm instruction, but it is a bit unclear what to do about that, so simply a comment has been added to reconsider this in the future. Review URL: http://codereview.chromium.org/7633014 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8916 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 Aug, 2011 2 commits
-
-
danno@chromium.org authored
Also unify Crankshaft code to load array length. BUG=v8:1493 TEST=external-arrays.js Review URL: http://codereview.chromium.org/7600025 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8901 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
Changing our builtin JavaScript code slightly, we can make sure that we never see internal objects as arguments for ToBoolean at runtime. Removing that case from the stub generator and crankshaft makes things a lot easier. Heap numbers can never be undetectable (only strings and spec objects can), so we can leave out a useless test. Try to re-use a non-null register value when returning 'true' in some cases. Removed special handling of the 'handle all' case, it will very probably never happen in real code and only makes things more complicated. Improved naming of the ToBoolean stubs a bit, reflecting the order in which cases are handled in the code itself. Review URL: http://codereview.chromium.org/7497063 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8886 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 10 Aug, 2011 3 commits
-
-
fschneider@chromium.org authored
* Bug fix for range analysis (contributed by Andy Wingo). Ranges of double values have to include negative zero. Original code review: http://codereview.chromium.org/7514040/ * Fix a bug in optimized Math.round on ARM. When emitting minus-zero checks we previously return a wrong result because of incorrect register assignment. * Fix performance problem in IA32 and x64. Refine the checks for minus zero and avoid unnecessary deoptimizations on Math.floor. * Improve mjsunit test for Math.round to make sure we also get the optimized version of the code for each test case. Review URL: http://codereview.chromium.org/7604028 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8877 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
rossberg@chromium.org authored
Harmony is intended to make typeof null === "null". This may break existing programs. Implementing it will allow us to run some tests on the actual web. R=kmillikin@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7598030 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8876 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
mstarzinger@chromium.org authored
R=svenpanne@chromium.org,kmillikin@chromium.org BUG=v8:1584 Review URL: http://codereview.chromium.org/7585006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8868 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Aug, 2011 2 commits
-
-
svenpanne@chromium.org authored
Review URL: http://codereview.chromium.org/7600019 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8860 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
Review URL: http://codereview.chromium.org/7491054 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8859 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Aug, 2011 1 commit
-
-
whesse@chromium.org authored
Clean up TranslationIterator and DeoptimizationInputDataPrint, so they will work with alignment padding in the Translation info. BUG= TEST=v8 compiles on X64 and ARM platforms. Review URL: http://codereview.chromium.org/7491087 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8852 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 05 Aug, 2011 1 commit
-
-
vitalyr@chromium.org authored
R=vegorov@chromium.org Review URL: http://codereview.chromium.org/7491052 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8843 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Aug, 2011 2 commits
-
-
svenpanne@chromium.org authored
The condition code for branching on the result of vcmp was wrong, effectively swapping the true/false branches. TEST=regress-lbranch-double.js Review URL: http://codereview.chromium.org/7553010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8784 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
vegorov@chromium.org authored
BUG=chromium:91013 TEST=test/mjsunit/regress/regress-91013.js Review URL: http://codereview.chromium.org/7551009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8781 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 22 Jul, 2011 1 commit
-
-
danno@chromium.org authored
Properly handle undefined conversion to zero in Crankshaft. R=yangguo@chromium.org BUG=none TEST=regress-1563.js Review URL: http://codereview.chromium.org/7461028 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8723 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Jul, 2011 1 commit
-
-
rossberg@chromium.org authored
R=ager@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7472034 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8713 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 19 Jul, 2011 2 commits
-
-
danno@chromium.org authored
BUG=none TEST=unboxed-double-arrays.js Review URL: http://codereview.chromium.org/7350021 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8682 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
ager@chromium.org authored
When creating a CompilationInfo we always have the script and can determine if it is a natives script. Now that all natives functions are recognized as such, many of them are called with undefined as the receiver. We have to use different filtering for builtins functions when printing stack traces. Also, fixed one call of CALL_NON_FUNCTION to be correctly marked as a method call (with fixed receiver). Now that CALL_NON_FUNCTION is marked as a native function this caused the receiver to be undefined. R=svenpanne@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7395030 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8680 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 18 Jul, 2011 1 commit
-
-
svenpanne@chromium.org authored
C++'s 'great' idea of implicitly converting an enum to an integral value hit us again, this time resulting in silly (but currently non-harmful) entries in the relocation table. Encapsulated the AST ID recording a bit, which helped a lot to find the culprit. Review URL: http://codereview.chromium.org/7400016 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 13 Jul, 2011 5 commits
-
-
danno@chromium.org authored
BUG=none TEST=bot greeness Review URL: http://codereview.chromium.org/7357002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8647 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
danno@chromium.org authored
Implemented on ia32, x64, ARM. Stubbed out with UNIMPLEMENTED on MIPS. BUG=none TEST=unbox-double-arrays.js Review URL: http://codereview.chromium.org/7307030 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8637 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
Using a C++-style method PrintName (a.k.a. << ;-), things get a lot easier when two unrelated concerns are separated. Stubs don't need a name cache anymore, simpler code while generating the stub name, memory allocation is centralized, etc. Review URL: http://codereview.chromium.org/7342042 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8627 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
This patch just adds a nop after the call to the binary operation stub in optimized code to avoid the patching for the inlined smi case used in the full code generator to kick in if the next instruction generated by the lithium code generator should accidentially enable that. For calls generated by CallCodeGeneric this was already handled on Intel platforms, but missing on ARM. On IA-32 I did also try to check for whether the code containing the call was optimized (patch below), but that caused regressions on some benchmarks. diff --git src/ia32/ic-ia32.cc src/ia32/ic-ia32.cc index 5f143b1..f70e208 100644 --- src/ia32/ic-ia32.cc +++ src/ia32/ic-ia32.cc @@ -1603,12 +1603,18 @@ void CompareIC::UpdateCaches(Handle<Object> x, Handle<Object> y) { // Activate inlined smi code. if (previous_state == UNINITIALIZED) { - PatchInlinedSmiCode(address()); + PatchInlinedSmiCode(address(), isolate()); } } -void PatchInlinedSmiCode(Address address) { +void PatchInlinedSmiCode(Address address, Isolate* isolate) { + // Never patch in optimized code. + Code* code = isolate->pc_to_code_cache()->GetCacheEntry(address)->code; + if (code->kind() == Code::OPTIMIZED_FUNCTION) { + return; + } + // The address of the instruction following the call. Address test_instruction_address = address + Assembler::kCallTargetAddressOffset; diff --git src/ic.cc src/ic.cc index f70f75a..62e79da 100644 --- src/ic.cc +++ src/ic.cc @@ -2384,7 +2384,7 @@ RUNTIME_FUNCTION(MaybeObject*, BinaryOp_Patch) { // Activate inlined smi code. if (previous_type == BinaryOpIC::UNINITIALIZED) { - PatchInlinedSmiCode(ic.address()); + PatchInlinedSmiCode(ic.address(), isolate); } } diff --git src/ic.h src/ic.h index 11c2e3a..9ef4b20 100644 --- src/ic.h +++ src/ic.h @@ -721,7 +721,7 @@ class CompareIC: public IC { }; // Helper for BinaryOpIC and CompareIC. -void PatchInlinedSmiCode(Address address); +void PatchInlinedSmiCode(Address address, Isolate* isolate); } } // namespace v8::internal R=danno@chromium.org BUG=none TEST=none Review URL: http://codereview.chromium.org//7350015 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8623 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
The preprocessor defines ENABLE_LOGGING_AND_PROFILING and ENABLE_VMSTATE_TRACKING has been removed as these where required to be turned on for Crankshaft to work. To re-enable reducing the binary size by leaving out heap and CPU profiler a new set of defines needs to be created. R=ager@chromium.org BUG=v8:1271 TEST=all Review URL: http://codereview.chromium.org//7350014 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 Jul, 2011 2 commits
-
-
sgjesse@chromium.org authored
This provides more precise source to generated code mapping as variable loads can be handled using IC calls. R=kmillikin@chromium.org BUG=v8:1527 TEST=test/message/regress/regress-1527 Review URL: http://codereview.chromium.org//7327038 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8610 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
architecture-independent. jsregexp.h is itself included transitively quite a lot, and by getting rid of 19 of its dependencies (which even included things like src/cpu.h, the various assemblers, etc.), the recompilation behaviour is a bit less funny than it was. Review URL: http://codereview.chromium.org/7331014 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8589 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Jul, 2011 2 commits
-
-
danno@chromium.org authored
In the process, add shared stubs for DictionaryValue lookups that are handled in the same way as fast elements and external array elements. Includes code for MIPS, which compiles and run polymorph-arrays.js successfully. R=jkummerow@chromium.org BUG=none TEST=test/mjsunit/polymorph-arrays.js Review URL: http://codereview.chromium.org/7227010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8579 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
super-class handles the most common case already. Review URL: http://codereview.chromium.org/7332001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8576 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 06 Jul, 2011 2 commits
-
-
sgjesse@chromium.org authored
R=kmillikin@chromium.org BUG=none TEST=none Review URL: http://codereview.chromium.org//7248077 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8543 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
TEST=none BUG=none Review URL: http://codereview.chromium.org//7193041 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8539 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 05 Jul, 2011 3 commits
-
-
vitalyr@chromium.org authored
TBR=sgjesse@chromium.org Review URL: http://codereview.chromium.org/7308012 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8538 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
The debugger can be entered from the deferred stack check in optimized code. This can cause both lazy deoptimization and debugger deoptimization (setting the first break point and inspecting the stack for optimized code respectively). This required deoptimization support from the deferred stack check. The lazy deoptimiztion call is inserted when the deferred code is done including restoring the registers. The bailout to the full code is the begining of the loop body as that is where the stack check is sitting in the optimized code. The bailout is not to the stack check in the full code as that is sitting at the end of the loop. R=kmillikin@chromium.org BUG=none TEST=none Review URL: http://codereview.chromium.org//7212025 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8535 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
ricow@chromium.org authored
Due to issues relating mostly to chrome extensions we have lately been running into OOMs that are caused by our executable space running out. This change introduces flushing of code from regexps if we have not used the code for 5 mark sweeps. The approach is different from the normal function code flusing. Here we make a copy of the code inside the data array, and exchange the original code with a smi determined by the sweep_generation (a new heap variable increased everytime we do mark sweep/compact). If we encounter a smi in EnsureCompiled we simply reinstate the code object. If, in the marking phase of mark sweep, we find a regexp that already have a smi in the code field, and this is more than 5 generations old we flush the code from the saved index. Review URL: http://codereview.chromium.org/7282026 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8532 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 04 Jul, 2011 3 commits
-
-
whesse@chromium.org authored
As part of allowing different contexts for inlined functions, eliminate most explicit reads of the context from the stack frame in ia32 crankshaft codegen. Eliminates the enum flag RESTORE_CONTEXT and CONTEXT_ADJUSTED, and adds a context HValue and LOperand to many hydrogen and lithium instructions. Context is still used from the stack from in CallKnownFunction (this seems safe), and in CallRuntimeFromDeferred in lithium-codegen-ia32.cc, which needs to be fixed. BUG= TEST= Review URL: http://codereview.chromium.org/7132002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8529 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
We were only looking one level up the scope chain to decide which closure to use in the fresh context. Instead, we should look to the first non-catch scope. R=vegorov@chromium.org BUG=1528 TEST=regress-1528 Review URL: http://codereview.chromium.org/7309002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8523 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
The constant pool was not taken into account in the test test-compiler/SplitConstantsInFullCompiler which caused random failures. This also reverts the test code added in r8469 and r8471. R=ricow@chromium.org BUG=none TEST=test-compiler/SplitConstantsInFullCompiler Review URL: http://codereview.chromium.org//7308001 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8520 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 01 Jul, 2011 1 commit
-
-
svenpanne@chromium.org authored
Only a single constructor is really needed. Make UnaryOp_Patch's arguments simpler, avoiding encoding/decoding things in a cryptic way. Review URL: http://codereview.chromium.org/7248063 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8503 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 30 Jun, 2011 1 commit
-
-
whesse@chromium.org authored
Review URL: http://codereview.chromium.org/7282033 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8500 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-