Commit Graph

6296 Commits

Author SHA1 Message Date
ager@chromium.org
945bd3e70c Report out of memory if we cannot allocate memory for the deoptimization table.
Currently we pass a null pointer to memcpy. We will crash either way,
but going through FatalProcessOutOfMemory makes it clear what is going
on.

R=kmillikin@chromium.org
BUG=http://crbug.com/84717

Review URL: http://codereview.chromium.org/6993022

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8163 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-03 10:11:10 +00:00
danno@chromium.org
eee5e6c3fc Add complete ElementsKind information directly to Map for objects with elements.
Review URL: http://codereview.chromium.org/6966041

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8162 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-03 07:41:37 +00:00
dslomov@chromium.org
24d81fc39c Patch by Luke Zarko.
Fix building with gdbjit=on

Issue 7101011: http://codereview.chromium.org/7101011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8161 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-02 17:50:02 +00:00
mikhail.naganov@gmail.com
5112f7f0c6 Add curly braces to if / else clauses after r8152
TBR=ager@chromium.org

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8160 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-02 11:22:26 +00:00
ager@chromium.org
ece7700d7c Revert "Make instanceof and Object.getPrototypeOf work for proxies, plus a few other tweaks."
This change caused errors in es5conform tests for getPrototypeOf.

TBR=rossberg@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/7109004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8159 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-02 10:12:00 +00:00
mikhail.naganov@gmail.com
b4c152545d Revert "Fix Issue 1320: LiveEdit: text differencer fails with out of memory on large files"
Breaks compilation on Linux.

This reverts commit e72c5b1d69fb2cb2d5973f172666dd5d477e6f7e.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8154 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 23:11:10 +00:00
mikhail.naganov@gmail.com
d61022a86e Fix presubmit errors after r8152
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8153 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 23:09:18 +00:00
mikhail.naganov@gmail.com
e10bedee78 [Linux] Do not install SIGPROF handler until we
start CPU profiling.

TBR=vitalyr@chromium.org
BUG=1344,crbug/79320,crbug/83521
TEST=none

Review URL: http://codereview.chromium.org/7107003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8152 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 22:12:05 +00:00
cira@chromium.org
a60085b28a Re-landing http://codereview.chromium.org/7014019.
Adding DateTimeFormat class to i18n API with following methods:

- format
- getWeekdays
- getMonths
- get Eras
- getAmPm

Difference from the reverted revision:

Removed all references to v8/src, like ASSERT_EQ.

All #includes have full path to include/v8.h or extension headers.

TEST=Visit i18n.kaziprst.org/datetimeformat.html
Review URL: http://codereview.chromium.org/7105002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8151 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 21:10:56 +00:00
rossberg@chromium.org
2255860992 Make instanceof and Object.getPrototypeOf work for proxies, plus a few other tweaks.
R=kmillikin@chromium.org

Review URL: http://codereview.chromium.org/7080053

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8150 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 17:44:08 +00:00
peter.rybin@gmail.com
d7b7d7f844 Fix Issue 1320: LiveEdit: text differencer fails with out of memory on large files
Review URL: http://codereview.chromium.org/7080029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8149 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 17:05:35 +00:00
sandholm@chromium.org
f6901ea747 Untank compilation and fix JSON parse bug introduced in r8147.
Review URL: http://codereview.chromium.org/7020028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8148 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 14:55:55 +00:00
sandholm@chromium.org
3ed8c2f520 Remove scanner abstraction layer from JSON parsing.
Review URL: http://codereview.chromium.org/7020018

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8147 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 14:06:30 +00:00
fschneider@chromium.org
ff76d1ab0c Revert r8140.
It breaks test when running with nosnapshot.
TBR=ager@chromium.org
Review URL: http://codereview.chromium.org/7027029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8145 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 13:34:15 +00:00
kmillikin@chromium.org
27f2f6aa0b Delay processing of declarations for inlining candidates.
Processing the declarations in an inlining candidate must be performed
after constructing the Hydrogen environment of the candidate function.

R=fschneider@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/7027028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8144 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 13:26:30 +00:00
sandholm@chromium.org
f942c16ee9 Removing white spaces introduced in r8142.
Review URL: http://codereview.chromium.org/7025005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8143 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 12:24:55 +00:00
sandholm@chromium.org
ec534af392 Ensure strings are never externalized as a side-effect of doing a GC.
Review URL: http://codereview.chromium.org/7105016

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8142 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 11:46:14 +00:00
erik.corry@gmail.com
6d7d3b8d77 Fix compilation on OpenBSD. Patch from Robert Nagy in
http://code.google.com/p/v8/issues/detail?id=1420
Review URL: http://codereview.chromium.org/7104024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8141 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 11:09:32 +00:00
fschneider@chromium.org
0aa422923c Eagerly deoptimize on never-executed code-paths.
If type-feedback indicates that an expression was never executed in
the non-optimized code, we insert a forced deoptimization right away
to enable re-optimization if we ever hit this path.

With this change we still continue to build the graph. As a next step, we
should remove the dead code after the deoptimize.

I had to remove one assert about the optimization status in a test since
we now immediately deoptimize after exiting the loop that triggers OSR.

Also remove a restriction that control-flow from an inlined function in a
test context always reaches both true- and false-target.
Review URL: http://codereview.chromium.org/7105015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8140 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 11:04:40 +00:00
kmillikin@chromium.org
d985af520e Disable context-allocated const variables.
We intended them to be fully disabled for now, but there was a missing
check at initialization time.

R=fschneider@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/7020021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8139 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 09:12:22 +00:00
sgjesse@chromium.org
56de6f750a MIPS: port Fix receiver for calls to strict-mode and builtin functions ....
Fix receiver for calls to strict-mode and builtin functions that
are potentially shadowed by eval.

Port r8116 (e8a1e4842) to mips.

BUG=
TEST=

Review URL: http://codereview.chromium.org//7090003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8138 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 09:06:46 +00:00
sgjesse@chromium.org
d7f2f83b3b MIPS:port Reapply change to Pass undefined to JS builtins when called with implicit receiver.
Port r8110 (0a6ff3a) to mips.

Some mips work was in original commit. Fixed bug due to Generate_ArgumentsAdaptorTrampoline
using the dedicated CallKind reg (t1) as a temporary.

BUG=
TEST=

Review URL: http://codereview.chromium.org//7027024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8137 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 09:05:44 +00:00
sgjesse@chromium.org
dae365948c MIPS: port Fix a number of IC stubs to correctly set the call kind.
Ported r8109 (7ab86acc) to mips.

Original commit message:
Make the call kind and call wrapper arguments explicit to force
developers to make a choice. This would have avoided the bug in the
first case.

BUG=
TEST=

Review URL: http://codereview.chromium.org//7006021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8136 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 09:01:57 +00:00
sgjesse@chromium.org
ad55fbc34d MIPS: port Prevent deopt on double value assignment to typed arrays
Ported r8077 (defc4f9b) to mips.

BUG=
TEST=

Review URL: http://codereview.chromium.org//7027023

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8135 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 08:58:19 +00:00
sgjesse@chromium.org
bbfd202c81 ARM: Be consistent about the condition codes used with CompareObjectType
Now the signed comparison condition codes are always used with CompareObjectType. The type is only a byte and ldrb will do sign extension, so signed and unsigned comparison will give the same result. Signed condition codes are easier to read.

R=erik.corry@gmail.com

BUG=none
TEST=none

Review URL: http://codereview.chromium.org//7104019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8134 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 08:54:30 +00:00
erik.corry@gmail.com
955e6a2496 Lower heap size limits on systems that are short of virtual memory.
Review URL: http://codereview.chromium.org/7020020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8133 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 08:49:18 +00:00
svenpanne@chromium.org
15cb93ed62 Ooops, forgot to commit the renamings in Hydrogen for issue 6976028....
TBR=danno@chromium.org
Review URL: http://codereview.chromium.org/7105014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8132 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 07:11:25 +00:00
ricow@chromium.org
68c20c7f9f Prepare push to trunk. Now working on version 3.4.2.
Review URL: http://codereview.chromium.org/7090002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8129 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-01 05:48:51 +00:00
peter.rybin@gmail.com
8f2274c841 LiveEdit: Optimize compare by stripping common suffix and prefix.
Review URL: http://codereview.chromium.org/7087031

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8128 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-31 20:58:21 +00:00
cira@chromium.org
ab00b00a87 Removed all references to v8/src from i18n extension code.
Removed I18N enum from v8/src/natives.h

Removed use of Vector and natives.h from i18n-extension.cc. Added new
python script that generates i18n-js.cc from i18n.js.

Made all paths absolute pointing to either v8/include or
v8/src/extensions/experimental.

Exported -Iv8 for embedders (-Iv8/include was there already).
Review URL: http://codereview.chromium.org/7077012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8127 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-31 17:21:28 +00:00
rossberg@chromium.org
670f947a5c Implement set trap for proxies, and revamp class hierarchy in preparation:
- Introduce a class JSReceiver, that is a common superclass of JSObject and
  JSProxy. Use JSReceiver where appropriate (probably lots of places that we
  still have to migrate, but we will find those later with proxy test suite).

- Move appropriate methods to JSReceiver class (SetProperty,
  GetPropertyAttribute, Get/SetPrototype, Lookup, and so on).

- Introduce new JSFunctionProxy subclass of JSProxy. Currently only a stub.

- Overhaul enum InstanceType:
  * Introduce FIRST/LAST_SPEC_OBJECT_TYPE that ranges over all types that
    represent JS objects, and use that consistently to check language types.
  * Rename FIRST/LAST_JS_OBJECT_TYPE and FIRST/LAST_FUNCTION_CLASS_TYPE
    to FIRST/LAST_[NON]CALLABLE_SPEC_OBJECT_TYPE for clarity.
  * Eliminate the overlap over JS_REGEXP_TYPE.
  * Also replace FIRST_JS_OBJECT with FIRST_JS_RECEIVER, but only use it where
    we exclusively talk about the internal representation type.
  * Insert JS_PROXY and JS_FUNCTION_PROXY in the appropriate places.

- Fix all checks concerning classification, especially for functions, to
  use the CALLABLE_SPEC_OBJECT range (that includes funciton proxies).

- Handle proxies in SetProperty (that was the easiest part :) ).

- A few simple test cases.

R=kmillikin@chromium.org

Review URL: http://codereview.chromium.org/6992072

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8126 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-31 16:38:40 +00:00
erik.corry@gmail.com
7a1a72c701 Revert 8122 (stub call asserts) while test failures are investigated.
Review URL: http://codereview.chromium.org/7050039

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8125 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-31 15:21:25 +00:00
svenpanne@chromium.org
6453056bb6 Reduced the code ping-pong between the full code generator and contexts a bit.
* Centralized AND/OR handling, keeping related code together.

* Removed HandleExpression/HandleInNonTestContext and introduced VisitInSameContext instead, making it more obvious what's actually going on.

* Consistently use a new context when visiting the left sub-expression of an AND/OR. Note that the context stacks in the full code generator and crankshaft are still a bit out of sync for the right sub-expression.
Review URL: http://codereview.chromium.org/6976028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8124 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-31 14:37:34 +00:00
vegorov@chromium.org
d71adb6d22 Fix two bugs in LiveRange::SplitAt:
- when splitting at the beginning of the UseInterval we need to find an interval preceding it.

- we need to reset cached iteration state after splitting.

BUG=v8:1410

Review URL: http://codereview.chromium.org/7053039

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8123 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-31 13:35:52 +00:00
erik.corry@gmail.com
c5fc4b9099 Add asserts and state tracking to ensure that we do not call
into C++ without having a valid stack frame that can be
traversed at GC.
Also add asserts to track that we do not try to generate a stub
while we are generating a stub, since the stub creation code is
not GC safe.
Review URL: http://codereview.chromium.org/7084032

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8122 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-31 12:38:45 +00:00
kmillikin@chromium.org
00f2ff321e Support optimization of named function literals.
Introduce a Hydrogen value for the value denoted by the function name.

R=fschneider@chromium.org,mnaganov@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/7083024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8121 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-31 11:54:46 +00:00
ager@chromium.org
544191e718 Update apply with arguments optimization for strict mode functions and builtins.
Do not convert to object for values for strict-mode functions and
builtins.

R=ricow@chromium.org
BUG=v8:1412
TEST=mjsunit/regress/regress-1412.js

Review URL: http://codereview.chromium.org/7096006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8120 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-31 10:38:41 +00:00
jkummerow@chromium.org
4ba07be98f Add support for external arrays to d8
Review URL: http://codereview.chromium.org/7053038

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8119 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-31 09:42:17 +00:00
svenpanne@chromium.org
dcb558fdf0 Push the general AST id field down from ASTNode to Expression.
Almost all uses were below Expression already, only a single use in IfStatement
had to be handled explicitly (probably an oversight from earlier changes?). This
is a small step towards a less ad-hoc handling of IDs in the front end.
Review URL: http://codereview.chromium.org/7054034

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8118 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-31 09:34:37 +00:00
ager@chromium.org
a01b45df58 Fix a number of tests that incorrectly used assertUnreachable.
Our testing infrastructure uses exceptions to indicate
errors. assertUnreachable therefore throws an exception to indicate
that it was reached. Therefore, it cannot be used to check that an
exception was thrown using the pattern:

try {
  shouldThrow();
  assertUnreachable();
} catch(e) {
}

Such a test will always pass because assertUnreachable will throw an
exception if shouldThrow does not.

R=ricow@chromium.org

Review URL: http://codereview.chromium.org/7053035

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8117 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-31 08:08:42 +00:00
ager@chromium.org
bfa2ef1f11 Fix receiver for calls to strict-mode and builtin functions that are
potentially shadowed by eval.

R=sgjesse@chromium.org
TEST=mjsunit/regress/regress-124.js

Review URL: http://codereview.chromium.org/7096004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8116 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-31 07:57:22 +00:00
sgjesse@chromium.org
e497896181 Fix building with profilingsupport=off
Using profilingsupport=off is not recommended as it will turn off crankshaft. With this change it will build though.

R=erik.corry@gmail.com

BUG=none
TEST=none

Review URL: http://codereview.chromium.org//7085025

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8113 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-30 14:33:23 +00:00
mikhail.naganov@gmail.com
cd67929b0b Heap profiler: fetch document.URL of global objects.
This allows to distinguish DOMWindow objects in browser from each other.

R=vitalyr@chromium.org,sgjesse@chromium.org
BUG=https://bugs.webkit.org/show_bug.cgi?id=61177
TEST=cctest/test-heap-profiler/DocumentURL

Review URL: http://codereview.chromium.org/7082012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8111 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-30 14:31:47 +00:00
ager@chromium.org
017935408d Reapply change to Pass undefined to JS builtins when called with
implicit receiver.

A couple of corner cases have to be treated specially to not break
everything: eval and getter/setter definitions.

R=fschneider@chromium.org
BUG=v8:1365
TEST=mjsunit/regress/regress-1365.js

Review URL: http://codereview.chromium.org/7085034

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8110 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-30 13:49:22 +00:00
ager@chromium.org
cc4a2d7e76 Fix a number of IC stubs to correctly set the call kind.
Make the call kind and call wrapper arguments explicit to force
developers to make a choice. This would have avoided the bug in the
first case.

R=fschneider@chromium.org
TEST=mjsunit/strict-mode-implicit-receiver.js

Review URL: http://codereview.chromium.org/7086029

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8109 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-30 13:23:17 +00:00
fschneider@chromium.org
5083dec67f Fix timeout and a small bug in a regression test.
Review URL: http://codereview.chromium.org/7085031

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8106 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-30 12:48:35 +00:00
fschneider@chromium.org
e0985887bf Simple support for const variables in Crankshaft.
The approach is to handle the common case in the optimizing
compiler and to bailout for the rare corner cases.

This is done by initializing all local const-variables with
the hole value and disallowing any use of the hole value statically.
Review URL: http://codereview.chromium.org/6026006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8104 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-30 11:31:41 +00:00
sandholm@chromium.org
ba229754ea Fix JSON issue with arrays.
Review URL: http://codereview.chromium.org/7089003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8100 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-30 10:47:38 +00:00
svenpanne@chromium.org
683baa1682 Removed dead flags.
Review URL: http://codereview.chromium.org/7077028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8097 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-30 09:42:28 +00:00
sandholm@chromium.org
1feea6bbaa Minor JSON cleanup. Also added comment requested for r8086.
Review URL: http://codereview.chromium.org/7086026

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8095 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-30 09:23:17 +00:00