- 13 Jul, 2011 3 commits
-
-
sgjesse@chromium.org authored
Now V8_NO_FAST_TLS needs to be defined to switch off fast tls access on platform which supports it. R=ager@chromium.org BUG=none TEST=none Review URL: http://codereview.chromium.org//7350017 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8624 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
-
- 12 Jul, 2011 3 commits
-
-
yangguo@chromium.org authored
R=vegorov@chromium.org TEST=cctest/test-dictionary Review URL: http://codereview.chromium.org/7349005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8619 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
ZoneAllocationPolicy::New is not inlined anymore because this pulls in far too much stuff and doesn't really make any measurable performance difference. And no, the #includes are still not in alphabetical order... ;-) Review URL: http://codereview.chromium.org/7346006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8616 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
lrn@chromium.org authored
Also remove some dead code. Review URL: http://codereview.chromium.org/7334008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8615 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 11 Jul, 2011 17 commits
-
-
yangguo@chromium.org authored
Review URL: http://codereview.chromium.org/7334010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8611 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
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
-
yangguo@chromium.org authored
BUG= TEST= Review URL: http://codereview.chromium.org/7333010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8603 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
Declaration of const lookup slots would trigger an assertion if there was a setter somewhere in the prototype chain, and that setter was shadowed by a non-readonly data property also in the prototype chain. R=ager@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7324048 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8602 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
ager@chromium.org authored
It does not currently work and when it did work we never got it fast enough to be useful. R=kmillikin@chromium.org Review URL: http://codereview.chromium.org/7324051 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8601 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
yangguo@chromium.org authored
BUG=http://code.google.com/p/v8/issues/detail?id=1533 Review URL: http://codereview.chromium.org/7335007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8600 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
R=ricow@chromium.org BUG=none TEST=cctest/test-lockers/LockerUnlocker,cctest/test-lockers/LockTwiceAndUnlock,cctest/test-lockers/SeparateIsolatesLocksNonexclusive Review URL: http://codereview.chromium.org//7334007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8597 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
vegorov@chromium.org authored
If map has an empty DescriptorArray we have to set map_or_index_field to NULL otherwise we will reset iteration state for a previously visited map in the transition tree which has a non-empty DescriptorArray. This might result in visiting the same map several times. R=whesse@chromium.org BUG=v8:1526 Review URL: http://codereview.chromium.org/7329043 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8596 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
yangguo@chromium.org authored
BUG= --prof did not work TEST=./d8 --prof <insert any test> Review URL: http://codereview.chromium.org/7331036 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8595 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
ricow@chromium.org authored
Review URL: http://codereview.chromium.org/7326038 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8594 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
R=ricow@chromium.org BUG=none TEST=none Review URL: http://codereview.chromium.org/7331037 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8591 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
R=ricow@chromium.org BUG=none TEST=test/mjsunit/debug-evaluate-arguments.js Review URL: http://codereview.chromium.org//7334005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8590 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
-
yangguo@chromium.org authored
TEST=tools/test.py -j15 --shell d8 --isolates Review URL: http://codereview.chromium.org/7318002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8588 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
R=karlklose@chromium.org Review URL: http://codereview.chromium.org/7335002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8587 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
Ported r8497 (916120a) Patch by Daniel Kalmar <kalmard@homejinni.com> BUG= TEST= Review URL: http://codereview.chromium.org//7329013 Patch from Paul Lind <plind44@gmail.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8586 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
Patterned after r8482, Cleaned up calling-related methods in the ARM assembler. On MIPS I completely refactored the Jump and Call methods. All the Jump and Call macro helpers have been replaced with overloaded functions (matching the ARM version) and using default parameter values where possible. The previously mostly-unused CallSize function is utilized as well (same as on ARM). The unused Jump(Operand, ...) and Call(Operand, ...) versions have been completely removed. I also removed the Jump(BranchDelaySlot, ...) and Call(BranchDelaySlot,...) methods as they were unused and declaring them would either result in a lot of unused code or the previously experienced macro-hell. The only exception to this is for Ret() where the branch delay slot is often used. This fixes the failing debug tests for example cctest test-debug/DebugStepFor. Ported r8482 (41cb9ed) Patch by Daniel Kalmar <kalmard@homejinni.com> BUG= TEST= Review URL: http://codereview.chromium.org//7328013 Patch from Paul Lind <plind44@gmail.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8585 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 09 Jul, 2011 1 commit
-
-
ricow@chromium.org authored
Landing for mstarzinger, orginal cl at: http://codereview.chromium.org/7329016/ git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8584 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Jul, 2011 11 commits
-
-
mikhail.naganov@gmail.com authored
This is a fix after r8356. Otherwise, shell can't be built on a 64-bit host. R=ager@chromium.org Review URL: http://codereview.chromium.org/7328016 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8581 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
danno@chromium.org authored
R=jkummerow@chromium.org BUG=none TEST=none Review URL: http://codereview.chromium.org/7326009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8580 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
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
-
sgjesse@chromium.org authored
Review URL: http://codereview.chromium.org//7277084 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8574 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
Also avoid that calling Debug::IsBreakAtReturn causes a full doptimization when there are no break points set. The full deoptimization is caused by Debug::IsBreakAtReturn calling Debug::EnsureDebugInfo which will assume that a break point is now set. R=svenpanne@chromium.org BUG=v8:1140 TEST=test/mjsunit/debug-evaluate-locals-optimized.js,test/mjsunit/debug- evaluate-locals-optimized-doubles.js Review URL: http://codereview.chromium.org//7307035 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8573 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
Compiler cannot recognize the typename in template declaration. Caught by MSVC. R=ricow@chromium.org Review URL: http://codereview.chromium.org/7237047 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8572 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
kmillikin@chromium.org authored
We did not properly combine the property names from the parameter map and the arguments backing store. They could overwrite each other and be unsorted. Also fix an unrelated bug: deleting from a dictionary-mode arguments backing store could corrupt the parameter map. R=rossberg@chromium.org BUG=1531 TEST=mjsunit/regress/regress-1531.js Review URL: http://codereview.chromium.org/7278033 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8571 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
Ported r8484 (9f824d7) BUG= TEST= Review URL: http://codereview.chromium.org//7237046 Patch from Paul Lind <plind44@gmail.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8570 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
Ported r8539 (46103ea) BUG= TEST= Review URL: http://codereview.chromium.org//7327016 Patch from Paul Lind <plind44@gmail.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8569 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
Ported r8532 (c9db503) Original commit message: 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. BUG= TEST= Review URL: http://codereview.chromium.org//7324018 Patch from Paul Lind <plind44@gmail.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8568 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 Jul, 2011 5 commits
-
-
sgjesse@chromium.org authored
R=whesse@chromium.org BUG=none TEST=none Review URL: http://codereview.chromium.org//7321008 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8567 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
sgjesse@chromium.org authored
R=svenpanne@chromium.org BUG=v8:1140 TEST=test/mjsunit/debug-evaluate-locals-optimized.js,test/mjsunit/debug- evaluate-locals-optimized-doubles.js Review URL: http://codereview.chromium.org//7310027 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8566 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
(constant) inline function. This brings down the size of v8's .ctors section to 1/4, hopefully fixing the recent issues with Chromes' CL 91522. Review URL: http://codereview.chromium.org/7321005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8565 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
rossberg@chromium.org authored
R=kmillikin@chromium.org BUG= TEST= Review URL: http://codereview.chromium.org/7314003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8564 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
vitalyr@chromium.org authored
R=fschneider@chromium.org Review URL: http://codereview.chromium.org/7312024 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8563 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-