Commit Graph

410 Commits

Author SHA1 Message Date
chunyang.dai
f8c4c12728 X87: Simplify pending message object handling.
port d4696c4841 (r27150)

original commit message:

  This moves the decision whether to report a message or not to when
  the pending exception is propagated instead of trying to preserve the
  decision in a ThreadLocalTop field.

BUG=

Review URL: https://codereview.chromium.org/1028073002

Cr-Commit-Position: refs/heads/master@{#27360}
2015-03-23 10:21:19 +00:00
cdai2
01f1348614 X87: Simplify pending message script handling.
port f71e262683 (r27127)

original commit message:

  Simplify pending message script handling.

  This removes the separate tracking of the pending message script,
  because that script is already stored in the message object and
  duplicating it in the ThreadLocalTop makes it more brittle.

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/1028993003

Cr-Commit-Position: refs/heads/master@{#27358}
2015-03-23 09:27:50 +00:00
chunyang.dai
c1cf472f8c X87: Remove frame pointer from StackHandler.
port 36e69a916f (r27115)

original commit message:

 This reduces the size of the StackHandler by yet another word. We no
 longer need to keep track of the frame pointer, as the stack walk will
 be able to recalculate it.

BUG=

Review URL: https://codereview.chromium.org/1030563002

Cr-Commit-Position: refs/heads/master@{#27357}
2015-03-23 09:23:15 +00:00
chunyang.dai
113037d9f3 X87: [es6] Throw TypeError for computed static prototype property name
port 8d946b9c3f (r27106).

original commit message:

  [es6] Throw TypeError for computed static prototype property name

  The prototype of a class constructor function is read only. When we set
  computed property names we were ignoring this and we were overriding the
  property.

  Since the prototype is the only possible own read only property on the
  constructor function object we special case this so we do not have to
  check this for every property in the class literal.

BUG=

Review URL: https://codereview.chromium.org/1028983002

Cr-Commit-Position: refs/heads/master@{#27356}
2015-03-23 08:50:28 +00:00
cdai2
289ee15307 X87: Remove code object from StackHandler.
port e0aa8ebf93 (r27103).

original commit message:

  This reduces the size of the StackHandler by one word. We no longer
  need to keep track of the code object, as the stack walk finds it.

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/1022403002

Cr-Commit-Position: refs/heads/master@{#27353}
2015-03-23 08:27:16 +00:00
chunyang.dai
f395ccd6db X87: [turbofan] Implement throwing exceptions into TurboFan code.
port 1382879f29 (r27016).

oringinal commit message:

    [turbofan] Implement throwing exceptions into TurboFan code.

    This extends the stack unwinding logic to respect optimized frames
    and perform a lookup in the handler table to find handlers. It also
    contains fixes to the API call stubs to allow a stack walk while
    promoting scheduled exceptions.

BUG=

Review URL: https://codereview.chromium.org/1023943002

Cr-Commit-Position: refs/heads/master@{#27342}
2015-03-20 13:45:08 +00:00
chunyang.dai
386dee8552 X87: Fix exception for assignment to uninitialised const.
port 2ecdf736cf (r27014).

original commit message:

  Fix exception for assignment to uninitialised const.

BUG=

Review URL: https://codereview.chromium.org/1028533002

Cr-Commit-Position: refs/heads/master@{#27332}
2015-03-20 09:35:49 +00:00
hpayer
cbfcee5575 Revert "Merge old data and pointer space."
TBR=verwaest@chromium.org,ulan@chromium.org,ishell@chromium.org
NOTRY=true

Review URL: https://codereview.chromium.org/1027463002

Cr-Commit-Position: refs/heads/master@{#27323}
2015-03-19 22:03:32 +00:00
loislo
9f91fde045 CodeCleanup: eliminate unnecessary base class and make the children unvirtual.
I found some strange split in deopt entry points generator.
The code for table entry generator had two classes.
It is safe to join these classes together and drop virtual.

BUG=
LOG=n

Review URL: https://codereview.chromium.org/1010413003

Cr-Commit-Position: refs/heads/master@{#27264}
2015-03-18 10:34:18 +00:00
hpayer
257ff48931 Merge old data and pointer space.
BUG=

Review URL: https://codereview.chromium.org/1012023002

Cr-Commit-Position: refs/heads/master@{#27259}
2015-03-18 09:39:03 +00:00
loislo
7fef610d72 CpuProfiler: log pc offset for deopts.
This is the fifth part of https://codereview.chromium.org/1012633002
In this part we collect the offsets of deopt calls and save it into
an inlined function info.

On the Next:
Later when deopt happens we will get the offset of deopt call and
search it among inlined infos.

BUG=chromium:452067
LOG=n

Review URL: https://codereview.chromium.org/1011113004

Cr-Commit-Position: refs/heads/master@{#27258}
2015-03-18 09:30:36 +00:00
loislo
549d5dde6a CpuProfiler: x87. put right address to the stack, so the callee would be able to resolve it into the right deopt_info.
'from' is using for Code object lookup and will be used for
inline_id lookup. see https://codereview.chromium.org/1012633002
So we should be able to map it.

BUG=chromium:452067
LOG=n

Review URL: https://codereview.chromium.org/1013243002

Cr-Commit-Position: refs/heads/master@{#27251}
2015-03-18 08:08:38 +00:00
mstarzinger
86b391ecad Delegate throwing in RegExpExecStub to CEntryStub.
This ensures that there is only one stub that deals with unwinding the
stack. Having more than one place containing that logic is brittle and
error prone, especially when it is a corner case only for RangeErrors.

R=titzer@chromium.org
TEST=mjsunit/regress/regress-crbug-467047
BUG=chromium:467047
LOG=N

Review URL: https://codereview.chromium.org/1012103002

Cr-Commit-Position: refs/heads/master@{#27243}
2015-03-17 15:49:40 +00:00
loislo
55d05404b7 CpuProfiler: extract DeoptInfo fill in code into a static function.
the third part of the patch https://codereview.chromium.org/1012633002

this patch
1) moves DeoptInfo builder code to platform independent file lithium-codegen.cc
2) adds inlining_id property to HEnterInlined so we can use it on lithium level.

BUG=chromium:452067
LOG=n

Review URL: https://codereview.chromium.org/1011733005

Cr-Commit-Position: refs/heads/master@{#27231}
2015-03-17 09:37:41 +00:00
svenpanne
cf1c4911b9 Remove BLACKLIST from check-name-clashes.py, it's wrong nowadays.
Fix the resulting warnings by renaming things apart.

BUG=v8:3947
LOG=n

Review URL: https://codereview.chromium.org/1009373002

Cr-Commit-Position: refs/heads/master@{#27219}
2015-03-16 13:08:49 +00:00
dslomov
92138c73a7 Remove --harmony-scoping flag.
We have been shipping harmony scoping for 2 Chrome releases now (M41
and M42). Time to remove the flag.

R=rossberg@chromium.org
LOG=Y

Review URL: https://codereview.chromium.org/1007783002

Cr-Commit-Position: refs/heads/master@{#27187}
2015-03-13 15:15:57 +00:00
bmeurer
83f157bc18 [turbofan] Use builtin inlining mechanism for Math.abs and Math.sqrt.
Reduces the amount of custom support code for Math functions in TurboFan
and allows for more general inlining (i.e. independent of parameter
types).

BUG=v8:3952
LOG=n
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/1004083002

Cr-Commit-Position: refs/heads/master@{#27172}
2015-03-13 07:06:15 +00:00
svenpanne
611eb25894 Converted FullCode to have its own list of known intrinsics.
Combined the various lists, the only slightly ugly thing is now the
distinction between intrinsics returning pairs and the rest, but
that's no big deal.

BUG=v8:3947
LOG=n

Review URL: https://codereview.chromium.org/989273003

Cr-Commit-Position: refs/heads/master@{#27135}
2015-03-11 14:03:29 +00:00
mstarzinger
36e69a916f Remove frame pointer from StackHandler.
This reduces the size of the StackHandler by yet another word. We no
longer need to keep track of the frame pointer, as the stack walk will
be able to recalculate it.

R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/991893003

Cr-Commit-Position: refs/heads/master@{#27115}
2015-03-10 15:56:27 +00:00
svenpanne
d8416f5524 Intrinsics in the INLINE_FUNCTION_LIST are now avaliable without '_', too.
This involved renaming apart a few more intrinsics. In the long run,
we want to clean up redundant intrinsics which just delegate.

BUG=v8:3947
LOG=n

Review URL: https://codereview.chromium.org/984963002

Cr-Commit-Position: refs/heads/master@{#27043}
2015-03-06 13:50:06 +00:00
svenpanne
4e7acce180 Merged INLINE_OPTIMIZED intrinsic type into INLINE.
BUG=v8:3947
LOG=n

Review URL: https://codereview.chromium.org/978123003

Cr-Commit-Position: refs/heads/master@{#27039}
2015-03-06 11:01:52 +00:00
yangguo
ce45b00e4b Serializer: correctly deal with internal references.
Internal references are absolute addresses into the instruction
stream. Turn them into relative addresses when serializing and
back when deserializing to keep them valid.

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/976623002

Cr-Commit-Position: refs/heads/master@{#27020}
2015-03-05 13:46:46 +00:00
svenpanne
d271599f08 Made the entries of the various *_FUNCTION_LISTs disjoint.
This way, every function in those lists has one C++ implementation
called Runtime_##name. The previous distinction was confusing.

Review URL: https://codereview.chromium.org/983623002

Cr-Commit-Position: refs/heads/master@{#27010}
2015-03-05 11:26:44 +00:00
chunyang.dai
7f78e7b347 X87: Refactor BreakLocationIterator
port 1a608493e5 (r26983)

original commit message:

   Refactor BreakLocationIterator.

   We now have BreakLocation::Iterator to iterate via RelocIterator, and
   create a BreakLocation when we are done iterating. The reloc info is
   stored in BreakLocation in a GC-safe way and instantiated on demand.

BUG=

Review URL: https://codereview.chromium.org/978183002

Cr-Commit-Position: refs/heads/master@{#27003}
2015-03-05 05:41:09 +00:00
chunyang.dai
a3773e4d29 X87: Implement subclassing Arrays.
port 1604bd46bf (r26972).

original commit message:

   Implement subclassing Arrays.

BUG=

Review URL: https://codereview.chromium.org/969943003

Cr-Commit-Position: refs/heads/master@{#27001}
2015-03-05 02:58:59 +00:00
chunyang.dai
5c1ae4ba3a X87: Move stack unwinding logic into the runtime.
port 4acbc93dbf (r26957)

original commit message:

   Move stack unwinding logic into the runtime.

BUG=

Review URL: https://codereview.chromium.org/977013002

Cr-Commit-Position: refs/heads/master@{#27000}
2015-03-05 02:57:59 +00:00
yangguo
1a608493e5 Refactor BreakLocationIterator.
We now have BreakLocation::Iterator to iterate via RelocIterator, and
create a BreakLocation when we are done iterating. The reloc info is
stored in BreakLocation in a GC-safe way and instantiated on demand.

R=ulan@chromium.org
BUG=v8:3924
LOG=N

Review URL: https://codereview.chromium.org/967323002

Cr-Commit-Position: refs/heads/master@{#26983}
2015-03-04 13:15:34 +00:00
chunyang.dai
38d303c5ca X87: Prefill with correct contextual load ICs in fullcodegen.
port 7ee31a2348 (r26941).

original commit message:

  Compute correct contextual load ICs in fullcodegen.

BUG=

Review URL: https://codereview.chromium.org/974483005

Cr-Commit-Position: refs/heads/master@{#26948}
2015-03-03 05:56:10 +00:00
cdai2
8b33fa6069 X87: Disallow subclassing Arrays.
port 290ee378ea (r26931).

original commit message:

UG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/963393002

Cr-Commit-Position: refs/heads/master@{#26932}
2015-02-28 08:29:29 +00:00
loislo
32ee9fa6ab CpuProfiler: replace raw position with SourcePosition for DeoptReason
Save Unknown position as zero in RelocInfo.
Remove copy constructor of SourcePosition because it is trivial.
Mechanical replace int raw_position with SourcePosition position.

BUG=452067
LOG=n

Review URL: https://codereview.chromium.org/959203002

Cr-Commit-Position: refs/heads/master@{#26916}
2015-02-27 13:34:38 +00:00
cdai2
e1030fc97d X87: Move Maps' back pointers from "transitions" to "constructor" field.
port affcfaf428 (r26835).

original commit message:

  Move Maps' back pointers from "transitions" to "constructor" field

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/964783002

Cr-Commit-Position: refs/heads/master@{#26904}
2015-02-27 07:03:33 +00:00
arv
5c19e4f1cb Remove ValidateSuperCall
We don't need this since this case is now a SyntaxError.

BUG=None
LOG=N
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/957823002

Cr-Commit-Position: refs/heads/master@{#26864}
2015-02-25 21:46:52 +00:00
dcarney
f1e2aa524c emit premonomorphic ics for keyed loads/stores in optimized code
R=verwaest@chromium.org

BUG=

Review URL: https://codereview.chromium.org/945313003

Cr-Commit-Position: refs/heads/master@{#26862}
2015-02-25 19:32:59 +00:00
dcarney
7361dce458 emit premonomorphic ics for loads/stores in optimized code
R=verwaest@chromium.org

BUG=

Review URL: https://codereview.chromium.org/892383003

Cr-Commit-Position: refs/heads/master@{#26796}
2015-02-23 12:34:14 +00:00
loislo
8ba89cce6d CpuProfiler: eliminate cpu-profiler dependency from heap-inl.h
We accessed to cpu_profiler for tracking SharedFunctionInfo objects movements and used their addresses for generating function_id. Actually we could replace the manually generated shared_id by the pair script_id + position. In this case we can drop SharedFunctionInfo events support from cpu_profiler and remove the dependency.

BTW GetCallUid was used as an unique identifier of the function on the front-end side. Actually it is a hash which might not be unique. So I renamed GetCallUid with GetHash and implemented GetFunctionId method.

BUG=452067
LOG=n

Review URL: https://codereview.chromium.org/941973002

Cr-Commit-Position: refs/heads/master@{#26775}
2015-02-20 13:28:58 +00:00
adamk
27e8a455df Rename Interface to ModuleDescriptor
ModuleDescriptor will end up holding the set of data described in the
spec as a "Module record". This introduces a little bit of confusion
with ModuleInfo, but I hope that'll become clearer over time.

Also removed the interface-printing flags. We probably want
Module-printing flags, but that can wait until we have more
Module-related structures.

BUG=v8:1569
LOG=n

Review URL: https://codereview.chromium.org/935723004

Cr-Commit-Position: refs/heads/master@{#26728}
2015-02-18 18:25:21 +00:00
adamk
522937cb49 Strip Interface class of most of its logic, make it all about Module exports
This gets Variable and VariableProxy out of the business of worrying about
Interfaces.

At the same time, get rid of the notion of "module variables". In ES6, variables
that refer to modules will be simply be CONST bindings to module namespace
objects.

The only change in logic here is one more early error:
duplicate export names are now rejected.

BUG=v8:1569
LOG=n

Review URL: https://codereview.chromium.org/918373002

Cr-Commit-Position: refs/heads/master@{#26708}
2015-02-17 20:51:35 +00:00
chunyang.dai
34d5cc6486 X87: Implement ES6 rest parameters.
port 8bb2e39774 (r26645).

original commit message:

BUG=

Review URL: https://codereview.chromium.org/929763002

Cr-Commit-Position: refs/heads/master@{#26649}
2015-02-15 07:40:08 +00:00
chunyang.dai
a10ed727bc X87: Assembler support for internal references.
port 5c119485b4 (r26478).

original commit message:

  Assembler support for internal references.

BUG=

Review URL: https://codereview.chromium.org/920503002

Cr-Commit-Position: refs/heads/master@{#26648}
2015-02-15 06:50:11 +00:00
chunyang.dai
a34ed97234 X87: new classes: no longer experimental.
port 2707d4c9f4 (r26628).

original commit message:

   This CL fixes tests that no longer valid and also fixes two issues:
    1. 'super()' in non derived constructors.
    2. Failure to step into derived constructors.

BUG=

Review URL: https://codereview.chromium.org/920543005

Cr-Commit-Position: refs/heads/master@{#26647}
2015-02-15 01:50:57 +00:00
loislo
a82d3dc8f9 Move identical code from platform specific assemblers to assembler.cc
BUG=none
LOG=n

Review URL: https://codereview.chromium.org/922153002

Cr-Commit-Position: refs/heads/master@{#26639}
2015-02-13 10:45:36 +00:00
Dmitry Lomov
7866f00508 Remove --experimental-classes flag and related dead code.
R=arv@chromium.org
BUG=v8:3834
LOG=N

Review URL: https://codereview.chromium.org/919643008

Cr-Commit-Position: refs/heads/master@{#26631}
2015-02-12 20:07:15 +00:00
loislo
d23ab23b05 CPUProfiler: Push deopt reason further to ProfileNode.
1) create beefy RelocInfo table when cpu profiler is active, so if a function
was optimized when profiler was active RelocInfo would get separate DeoptInfo
for the each deopt case.

2) push DeoptInfo from CodeEntry to ProfileNode.
When deopt happens we put the info collected on #1 into CodeEntry and record stack sample.
On the sampling thread we grab the deopt data and append it to the corresponding ProfileNode deopts list.

Sample profile dump.
[Top down]:
    0  (root) 0 #1
    1     29 #2
    1      test 29 #3
    2        opt_function 29 #4
    2          opt_function 29 #5
                   deopted at 118 with reason 'not a heap number'
                   deopted at 137 with reason 'division by zero'

BUG=452067
LOG=n

Committed: https://crrev.com/ce8701b247d3c6604f24f17a90c02d17b4417f54
Cr-Commit-Position: refs/heads/master@{#26615}

Review URL: https://codereview.chromium.org/919953002

Cr-Commit-Position: refs/heads/master@{#26630}
2015-02-12 19:51:37 +00:00
chunyang.dai
e1c2e83888 X87: silence C++ compiler warnings.
To solence C++ compiler warnings because is_mutable_ is only for CHECK.

BUG=

Review URL: https://codereview.chromium.org/922673002

Cr-Commit-Position: refs/heads/master@{#26618}
2015-02-12 14:40:07 +00:00
loislo
cb6ea146dc Revert of CPUProfiler: Push deopt reason further to ProfileNode. (patchset #1 id:1 of https://codereview.chromium.org/919953002/)
Reason for revert:
static initializers broke the build

Original issue's description:
> CPUProfiler: Push deopt reason further to ProfileNode.
>
> 1) create beefy RelocInfo table when cpu profiler is active, so if a function
> was optimized when profiler was active RelocInfo would get separate DeoptInfo
> for the each deopt case.
>
> 2) push DeoptInfo from CodeEntry to ProfileNode.
> When deopt happens we put the info collected on #1 into CodeEntry and record stack sample.
> On the sampling thread we grab the deopt data and append it to the corresponding ProfileNode deopts list.
>
> Sample profile dump.
> [Top down]:
>     0  (root) 0 #1
>     1     29 #2
>     5      test 29 #3
>     3        opt_function 29 #4
>                  deopted at 52 with reason 'not a heap number'
>                  deopted at 71 with reason 'division by zero'
>
> BUG=452067
> LOG=n
>
> Committed: https://crrev.com/ce8701b247d3c6604f24f17a90c02d17b4417f54
> Cr-Commit-Position: refs/heads/master@{#26615}

TBR=jarin@chromium.org,svenpanne@chromium.org,yurys@chromium.org,alph@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=452067

Review URL: https://codereview.chromium.org/915173005

Cr-Commit-Position: refs/heads/master@{#26616}
2015-02-12 14:36:37 +00:00
loislo
ce8701b247 CPUProfiler: Push deopt reason further to ProfileNode.
1) create beefy RelocInfo table when cpu profiler is active, so if a function
was optimized when profiler was active RelocInfo would get separate DeoptInfo
for the each deopt case.

2) push DeoptInfo from CodeEntry to ProfileNode.
When deopt happens we put the info collected on #1 into CodeEntry and record stack sample.
On the sampling thread we grab the deopt data and append it to the corresponding ProfileNode deopts list.

Sample profile dump.
[Top down]:
    0  (root) 0 #1
    1     29 #2
    5      test 29 #3
    3        opt_function 29 #4
                 deopted at 52 with reason 'not a heap number'
                 deopted at 71 with reason 'division by zero'

BUG=452067
LOG=n

Review URL: https://codereview.chromium.org/919953002

Cr-Commit-Position: refs/heads/master@{#26615}
2015-02-12 13:25:17 +00:00
danno
e87c0bac35 Remove redundant source position information in RelocInfo
Previously, emitting two more more unique source positions at the same pc would
generate two or more RelocInfo entries. Now, only the last emitted source
position for any pc is added to the RelocInfo.

Review URL: https://codereview.chromium.org/908443002

Cr-Commit-Position: refs/heads/master@{#26608}
2015-02-12 12:15:31 +00:00
cdai2
71784ec03c X87: new classes: implement correct check for uninitialized this in 'super()'
port fdcf3e59ba (r26599)

original commit message:

    new classes: implement correct check for uninitialized this in 'super()'

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/913383002

Cr-Commit-Position: refs/heads/master@{#26603}
2015-02-12 08:11:40 +00:00
cdai2
fb55eae323 X87: new classes: implement default constructors
port 9b158fa79a (r26594)

original commit message:

  new classes: implement default constructors

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/914403004

Cr-Commit-Position: refs/heads/master@{#26601}
2015-02-12 03:52:13 +00:00
chunyang.dai
8be79b005d X87: new classes: implement new.target passing to superclass constructor
port bf49be39f3 (r26572)

original commit message:

   new classes: implement new.target passing to superclass constructor

BUG=

Review URL: https://codereview.chromium.org/912233003

Cr-Commit-Position: refs/heads/master@{#26596}
2015-02-11 17:41:58 +00:00
cdai2
75ad4cc265 X87: Parsing: Make Scope not know about Isolate.
port 5d68529be2 (r26546)

original commit message:

   Parsing: Make Scope not know about Isolate.

  Scope, like Parser, must be able to operate independent of Isolate and the V8
  heap (for background parsing). After the heap-independent phase, there is a heap
  dependent phase, during which we do operations such as scope anaylysis.

  This CL makes the phases explicit by not telling Scope about the Isolate too
  early (during the heap-independent phase, Scope should know nothing about
  Isolate). This decreases the probability of accidental code changes which would
  add heap-dependent operations into the heap-independent phase.

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/913163003

Cr-Commit-Position: refs/heads/master@{#26590}
2015-02-11 15:50:58 +00:00
titzer
02fc74ea63 Reduce the number of #includes of compiler.h.
R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/917583004

Cr-Commit-Position: refs/heads/master@{#26589}
2015-02-11 15:49:17 +00:00
cdai2
4c345754b1 X87: Propagate Deopt reason to cpu-profiler
port 86cae1633c (r26545)

original commit message:

  1) Deoptimizer::Reason was replaced with Deoptimizer::DeoptInfo
     because it also has raw position. Also the old name clashes with DeoptReason enum.

  2) c_entry_fp assignment call was added to EntryGenerator::Generate
     So we can calculate sp and have a chance to record the stack for the deopting function.
     btw it makes the test stable.

  3) new kind of CodeEvents was added to cpu-profiler

  4) GetDeoptInfo method was extracted from PrintDeoptLocation.
     So it could be reused in cpu profiler.

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/912403003

Cr-Commit-Position: refs/heads/master@{#26588}
2015-02-11 15:37:33 +00:00
arv
b5e235661f Fix issue with super and computed property names
We did not set up the [[HomeObject]] for properties created for
computed property names.

BUG=v8:3879
LOG=N
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/914773002

Cr-Commit-Position: refs/heads/master@{#26586}
2015-02-11 15:13:12 +00:00
arv
a6f0a373dc Remove dead code related to new super
Support for `new super` has been removed so this code in the full
code gen is now unreachable.

BUG=None
LOG=N
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/911223002

Cr-Commit-Position: refs/heads/master@{#26585}
2015-02-11 15:12:06 +00:00
loislo
86cae1633c Propagate DeoptInfo to cpu-profiler
1) Deoptimizer::Reason was replaced with Deoptimizer::DeoptInfo
because it also has raw position. Also the old name clashes with DeoptReason enum.

2) c_entry_fp assignment call was added to EntryGenerator::Generate
So we can calculate sp and have a chance to record the stack for the deopting function.
btw it makes the test stable.

3) new kind of CodeEvents was added to cpu-profiler

4) GetDeoptInfo method was extracted from PrintDeoptLocation.
So it could be reused in cpu profiler.

BUG=452067
LOG=n

Review URL: https://codereview.chromium.org/910773002

Cr-Commit-Position: refs/heads/master@{#26545}
2015-02-10 14:33:00 +00:00
chunyang.dai
ebb77c37ed X87: Externalize deoptimization reasons.
port 2491a639bf (r26463)

original commit message:

   Externalize deoptimization reasons.
   1) The hardcoded strings were converted into DeoptReason enum.

   2) Deopt comment were converted into a pair location and deopt reason entries so
      the deopt reason tracking mode would less affect the size of the RelocInfo table and heap.

   3) DeoptReason entry in RelocInfo reuses kCommentTag value and generates short entry in RelocInfo table.

BUG=

Review URL: https://codereview.chromium.org/867243005

Cr-Commit-Position: refs/heads/master@{#26526}
2015-02-09 14:10:17 +00:00
cdai2
8a144cd4c0 X87: Remove the obsolete OverwriteMode optimization.
port 634b0f20f4 (r26454).

original commit message:

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/880743005

Cr-Commit-Position: refs/heads/master@{#26520}
2015-02-09 10:28:04 +00:00
cdai2
f77e016e59 X87: Fix assertion in full codegen for holed 'this'
port 275e088abe (r26423)

original commit message:

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/907853002

Cr-Commit-Position: refs/heads/master@{#26519}
2015-02-09 10:25:25 +00:00
cdai2
7280426acb X87: Retry "Use a WeakCell in the CallIC type vector."
port 6fc97a1965 (r26420)

original commit message:

  Retry "Use a WeakCell in the CallIC type vector."

  The first try failed because I needed to make a better distinction
  between clearing ICs according to policy at GC time or unconditional
  clearing (say, via %ClearFunctionTypeFeedback).

  It was also blocked by an issue in super constructor calls.
  This fix (https://codereview.chromium.org/892113002/) needs to land
  before checking in this CL.

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/865713004

Cr-Commit-Position: refs/heads/master@{#26517}
2015-02-09 09:29:45 +00:00
cdai2
4ee5161962 X87: Introduce LanguageMode, drop StrictMode.
port c7851da4ae (r26419)

original commit message:

  Introduce LanguageMode, drop StrictMode.

  This enables adding more language modes in the future.

  For maximum flexibility, LanguageMode is a bitmask, so we're not restricted to
  use a sequence of language modes which are progressively stricter, but we can
  express the language mode as combination of features.

  For now, LanguageMode can only be "sloppy" or "strict", and there are
  STATIC_ASSERTS in places which need to change when more modes are added.

  LanguageMode is a bit like the old LanguageMode when "extended" mode was still
  around (see https://codereview.chromium.org/8417035 and
  https://codereview.chromium.org/181543002 ) except that it's transmitted through
  all the layers (there's no StrictModeFlag).

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/902053005

Cr-Commit-Position: refs/heads/master@{#26514}
2015-02-09 08:50:08 +00:00
cdai2
91d9054350 X87: new classes: special construct stub for derived classs and TDZ for this.
port 6f97a4948f (r26409)

original commit message:

   new classes: special construct stub for derived classs and TDZ for `this`.

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/902423002

Cr-Commit-Position: refs/heads/master@{#26512}
2015-02-09 08:06:10 +00:00
cdai2
e10291d843 X87: Super Constructor Calls need to use a vector slot, not an ic slot.
port 64f81870ee (r26414)

original commit message:

  Super Constructor Calls need to use a vector slot, not an ic slot.

  The Ast Call node is accustomed to using a vector IC slot for the
  cases when it uses a CallIC. The super constructor work alters this
  somewhat by using a CallConstructStub instead, however the
  CallConstructStub expects a vector slot and not a vector ic slot.
  This distinction needs to be maintained because slots and ic slots
  have different clearing strategies and are handled differently.

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/911513002

Cr-Commit-Position: refs/heads/master@{#26511}
2015-02-09 08:00:29 +00:00
chunyang.dai
13d6a96a8f X87: Reland "Initial switch to Chromium-style CHECK_* and DCHECK_* macros
port c65ae4f10c (r26346).

   fix one spelling error introduced by this CL.

original commit message:
  Reland "Initial switch to Chromium-style CHECK_* and DCHECK_* macros.".

BUG=

Review URL: https://codereview.chromium.org/886833006

Cr-Commit-Position: refs/heads/master@{#26507}
2015-02-09 06:08:58 +00:00
cdai2
f50a556bd0 X87: Continue learning for calls in crankshaft.
port 7d363783e1.

original commit message:

  Continue learning for calls in crankshaft.

  The type feedback vector makes this easy to do.
  This is a re-land of https://codereview.chromium.org/868453005/
  with a fix for the DCHECK failure.

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/904373002

Cr-Commit-Position: refs/heads/master@{#26506}
2015-02-09 05:19:21 +00:00
chunyang.dai
30e02390f1 X87: Initial switch to Chromium-style CHECK_* and DCHECK_* macros
port 0deaa4b629 (r26340)

     (code change in full-codegen-x87.cc is covered by r26340 ).

original commit message:

   Initial switch to Chromium-style CHECK_* and DCHECK_* macros.

BUG=

Review URL: https://codereview.chromium.org/903353002

Cr-Commit-Position: refs/heads/master@{#26504}
2015-02-07 09:10:00 +00:00
chunyang.dai
db379e19c8 X87: fix performance regression on intel call api stubs
port b18ad51079 (r26291)

original commit message:

  additionally, make the interface match the JSFunction interface

BUG=

Review URL: https://codereview.chromium.org/906743002

Cr-Commit-Position: refs/heads/master@{#26503}
2015-02-07 08:43:57 +00:00
chunyang.dai
27361ec6c8 X87: Use a trampoline stub to load the type feedback vector for CallICs
port 2a567faa3e (r26290)

original commit message:

  Use a trampoline stub to load the type feedback vector for CallICs.

BUG=

Review URL: https://codereview.chromium.org/905983002

Cr-Commit-Position: refs/heads/master@{#26502}
2015-02-07 07:52:37 +00:00
cdai2
3c56b02674 X87: Remove the dependency of Zone on Isolate
port c7b09aac31 (r26252)

original commit message:

    Along the way:
    - Thread isolate parameter explicitly through code that used to
      rely on getting it from the zone.
    - Canonicalize the parameter position of isolate and zone for
      affected code
    - Change Hydrogen New<> instruction templates to automatically
      pass isolate

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/903183003

Cr-Commit-Position: refs/heads/master@{#26501}
2015-02-07 06:22:47 +00:00
cdai2
bd4476a623 X87: new classes: change semantics of super(...) call and add new.target to construct stub.
port 22ce08ade6 (r26227)
original commit message:

  new classes: change semantics of super(...) call and add new.target to construct stub.

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/900423002

Cr-Commit-Position: refs/heads/master@{#26500}
2015-02-07 06:21:21 +00:00
cdai2
a3ac322a2a X87: Double field values need sNaN -> qNaN canonicalization.
Fix the failure introduced by 0381acf7b3 (r26213).

  When storing Double field to external double array, we need to do special
  qNaN --> sNan recovery on X87 port.

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/879693006

Cr-Commit-Position: refs/heads/master@{#26477}
2015-02-06 08:06:59 +00:00
Erik Arvidsson
b67b3c5401 Accessor functions should have no prototype property
This also removes some convenience functions that were not used.

BUG=v8:3700
LOG=N
R=adamk@chromium.org, adamk

Review URL: https://codereview.chromium.org/883073008

Cr-Commit-Position: refs/heads/master@{#26472}
2015-02-05 23:34:28 +00:00
mvstanton
0e8d97c17b CallIC MISS handler doesn't need receiver.
Looking up and passing this argument is unnecessary.

R=ulan@chromium.org

Review URL: https://codereview.chromium.org/898013003

Cr-Commit-Position: refs/heads/master@{#26464}
2015-02-05 15:11:06 +00:00
loislo
2491a639bf Externalize deoptimization reasons.
1) The hardcoded strings were converted into DeoptReason enum.

2) Deopt comment were converted into a pair location and deopt reason entries so
the deopt reason tracking mode would less affect the size of the RelocInfo table and heap.

3) DeoptReason entry in RelocInfo reuses kCommentTag value and generates short entry in RelocInfo table.

BUG=452067
LOG=n

Committed: https://crrev.com/c49820e45b57f128a98690940875c049f612dde6
Cr-Commit-Position: refs/heads/master@{#26434}

Committed: https://crrev.com/ec42e002da03adb2db968dd5b7453341ddc59a5c
Cr-Commit-Position: refs/heads/master@{#26448}

Review URL: https://codereview.chromium.org/874323003

Cr-Commit-Position: refs/heads/master@{#26463}
2015-02-05 14:51:58 +00:00
bmeurer
368a503cc1 Revert of Externalize deoptimization reasons. (patchset #7 id:120001 of https://codereview.chromium.org/874323003/)
Reason for revert:
This CL breaks RelocInfo::INTERNAL_REFERENCE (and maybe others that come after DEOPT_REASON), which is currently (mostly) unused on tip-of-tree, but will be used for jump tables soon(ish) and should therefore work. It seems to be a problem with implicitly assumptions about the number of reloc info modes. Needs further investigation.

Original issue's description:
> Externalize deoptimization reasons.
>
> 1) The hardcoded strings were converted into DeoptReason enum.
>
> 2) Deopt comment were converted into a pair location and deopt reason entries so
> the deopt reason tracking mode would less affect the size of the RelocInfo table and heap.
>
> 3) DeoptReason entry in RelocInfo reuses kCommentTag value and generates short entry in RelocInfo table.
>
> BUG=452067
> LOG=n
>
> Committed: https://crrev.com/c49820e45b57f128a98690940875c049f612dde6
> Cr-Commit-Position: refs/heads/master@{#26434}
>
> Committed: https://crrev.com/ec42e002da03adb2db968dd5b7453341ddc59a5c
> Cr-Commit-Position: refs/heads/master@{#26448}

TBR=alph@chromium.org,mstarzinger@chromium.org,svenpanne@chromium.org,yurys@chromium.org,loislo@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=452067

Review URL: https://codereview.chromium.org/900223002

Cr-Commit-Position: refs/heads/master@{#26457}
2015-02-05 12:03:26 +00:00
loislo
ec42e002da Externalize deoptimization reasons.
1) The hardcoded strings were converted into DeoptReason enum.

2) Deopt comment were converted into a pair location and deopt reason entries so
the deopt reason tracking mode would less affect the size of the RelocInfo table and heap.

3) DeoptReason entry in RelocInfo reuses kCommentTag value and generates short entry in RelocInfo table.

BUG=452067
LOG=n

Committed: https://crrev.com/c49820e45b57f128a98690940875c049f612dde6
Cr-Commit-Position: refs/heads/master@{#26434}

Review URL: https://codereview.chromium.org/874323003

Cr-Commit-Position: refs/heads/master@{#26448}
2015-02-05 06:25:18 +00:00
Weiliang Lin
c397d2951f x87: Use signaling NaN for holes in fixed double arrays.
Port 9eace97bba

BUG=
R=chunyang.dai@intel.com

Review URL: https://codereview.chromium.org/895473002

Cr-Commit-Position: refs/heads/master@{#26445}
2015-02-05 02:53:57 +00:00
arv
cd661fdc27 Fix issue with multiple properties and emit store.
We used to have a parse error for conflicting property keys. This check
was removed to match ES6 (SpiderMonkey & Chakra already made this change).
Since this check was removed we ended up with a few new cases when
generating code. For example, accessors always generated code even if
those should have been shadowed by a data property.

BUG=v8:3856
LOG=Y
R=adamk, dslomov@chromium.org

Review URL: https://codereview.chromium.org/895693002

Cr-Commit-Position: refs/heads/master@{#26441}
2015-02-04 20:44:12 +00:00
arv
176b68d11a Class methods should be non enumerable
Class methods and accessors (both prototype and static) should be
non enumerable.

BUG=v8:3330
LOG=Y
R=dslomov@chromium.org

Review URL: https://codereview.chromium.org/896643003

Cr-Commit-Position: refs/heads/master@{#26437}
2015-02-04 17:23:17 +00:00
loislo
bfc5d83bd0 Revert of Externalize deoptimization reasons. (patchset #6 id:100001 of https://codereview.chromium.org/874323003/)
Reason for revert:
it broke the build

Original issue's description:
> Externalize deoptimization reasons.
>
> 1) The hardcoded strings were converted into DeoptReason enum.
>
> 2) Deopt comment were converted into a pair location and deopt reason entries so
> the deopt reason tracking mode would less affect the size of the RelocInfo table and heap.
>
> 3) DeoptReason entry in RelocInfo reuses kCommentTag value and generates short entry in RelocInfo table.
>
> BUG=452067
> LOG=n
>
> Committed: https://crrev.com/c49820e45b57f128a98690940875c049f612dde6
> Cr-Commit-Position: refs/heads/master@{#26434}

TBR=alph@chromium.org,mstarzinger@chromium.org,svenpanne@chromium.org,yurys@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=452067

Review URL: https://codereview.chromium.org/892843007

Cr-Commit-Position: refs/heads/master@{#26435}
2015-02-04 16:48:34 +00:00
loislo
c49820e45b Externalize deoptimization reasons.
1) The hardcoded strings were converted into DeoptReason enum.

2) Deopt comment were converted into a pair location and deopt reason entries so
the deopt reason tracking mode would less affect the size of the RelocInfo table and heap.

3) DeoptReason entry in RelocInfo reuses kCommentTag value and generates short entry in RelocInfo table.

BUG=452067
LOG=n

Review URL: https://codereview.chromium.org/874323003

Cr-Commit-Position: refs/heads/master@{#26434}
2015-02-04 16:35:30 +00:00
ulan
246a749a6f Use weak cell to embed known map in CompareIC
BUG=v8:3663
LOG=N

Review URL: https://codereview.chromium.org/879333005

Cr-Commit-Position: refs/heads/master@{#26386}
2015-02-02 17:57:49 +00:00
jarin
da90aabc07 Always emit bailout id for inlining property access (even for keyed access).
R=ulan@chromium.org
BUG=chromium:453805
LOG=n

Review URL: https://codereview.chromium.org/887023003

Cr-Commit-Position: refs/heads/master@{#26359}
2015-01-30 14:35:43 +00:00
ulan
3ea4ca9dbf Load callback data from weak cell instead of embedding it in handler.
BUG=v8:3629
LOG=N

Review URL: https://codereview.chromium.org/877243004

Cr-Commit-Position: refs/heads/master@{#26358}
2015-01-30 14:31:28 +00:00
bmeurer
c65ae4f10c Reland "Initial switch to Chromium-style CHECK_* and DCHECK_* macros.".
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/877753007

Cr-Commit-Position: refs/heads/master@{#26346}
2015-01-30 09:29:41 +00:00
Benedikt Meurer
883852293a Revert "Make GCC happy again." and "Initial switch to Chromium-style CHECK_* and DCHECK_* macros.".
This reverts commit 6a4c0a3bae and commit
0deaa4b629 for breaking GCC bots.

TBR=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/893533003

Cr-Commit-Position: refs/heads/master@{#26342}
2015-01-30 07:19:57 +00:00
bmeurer
0deaa4b629 Initial switch to Chromium-style CHECK_* and DCHECK_* macros.
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/888613002

Cr-Commit-Position: refs/heads/master@{#26340}
2015-01-30 06:25:36 +00:00
arv
b004b1d821 Move object literal checking into checker classes
This removes the duplicate property check from object literals.

Instead we repurpose the ObjectLiteralChecker into two cases, implemented
by two subclasses to ObjectLiteralCheckerBase called ObjectLiteralChecker
and ClassLiteralChecker.

The object literal checker now only checks for duplicate __proto__ fields in
object literals.

The class literal checker checks for duplicate constructors, non constructor
fields named constructor as well as static properties named prototype.

BUG=v8:3819
LOG=Y
R=adamk, dslomov@chromium.org

Review URL: https://codereview.chromium.org/873823003

Cr-Commit-Position: refs/heads/master@{#26336}
2015-01-29 23:12:43 +00:00
ulan
5284014623 Extract LoadAccessor into a masm function.
BUG=

Review URL: https://codereview.chromium.org/886503002

Cr-Commit-Position: refs/heads/master@{#26310}
2015-01-28 16:31:44 +00:00
jarin
489b6f7c60 [turbofan] Add missing deopt for the assignment in the for-in statement.
BUG=chromium:416359
LOG=n
R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/881303002

Cr-Commit-Position: refs/heads/master@{#26309}
2015-01-28 16:16:24 +00:00
mstarzinger
c5833e8596 Add missing FrameState to JSToName nodes.
R=jarin@chromium.org
TEST=mjsunit/regress/regress-crbug-451770
BUG=chromium:451770
LOG=N

Review URL: https://codereview.chromium.org/880963002

Cr-Commit-Position: refs/heads/master@{#26305}
2015-01-28 11:40:02 +00:00
ulan
a730a31a5b Cache WeakCell for optimized code.
BUG=

Review URL: https://codereview.chromium.org/873233002

Cr-Commit-Position: refs/heads/master@{#26274}
2015-01-26 15:31:32 +00:00
mstarzinger
00f3f99221 Add missing FrameState for Runtime_CreateArrayLiteral.
R=jarin@chromium.org
TEST=mjsunit/regress/regress-crbug-451013
BUG=chromium:451013
LOG=N

Review URL: https://codereview.chromium.org/873973003

Cr-Commit-Position: refs/heads/master@{#26268}
2015-01-26 12:45:34 +00:00
ulan
4097318792 Treat pointers in optimized code as strong before all weak dependencies are registered.
This prevents GC from observing code objects with out-of-sync weak dependencies.

BUG=v8:3823
LOG=N

Review URL: https://codereview.chromium.org/866723002

Cr-Commit-Position: refs/heads/master@{#26225}
2015-01-22 15:31:04 +00:00
cdai2
3175d30249 X87: Fix issue with __proto__ when using ES6 object literals.
port bc3b2960e3 (r26172).

original commit message:
  Fix issue with __proto__ when using ES6 object literals

  It should be possible to create a concise method with the name
  __proto__ without setting the [[Prototype]]. Similarly, property
  name shorthands with the name __proto__ should define an own
  property.

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/856313002

Cr-Commit-Position: refs/heads/master@{#26179}
2015-01-21 08:31:27 +00:00
cdai2
207eae6022 X87: move CallApiFunctionAndReturn to code-stubs-*
port e62d974ba1 (r26167)

original commit message:

   move CallApiFunctionAndReturn to code-stubs-*

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/861053002

Cr-Commit-Position: refs/heads/master@{#26178}
2015-01-21 08:30:06 +00:00
cdai2
4a62f245ae X87: fix debug checks for api callbacks returning symbols
port 3eb589976a.

original commit message:

  fix debug checks for api callbacks returning symbols

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/864733002

Cr-Commit-Position: refs/heads/master@{#26176}
2015-01-21 05:26:03 +00:00
ulan
def7c53869 LCodeGen::CallKnownFunction gets the function in register.
There is no need to embed function pointer in code.

BUG=v8:3823
LOG=N

Review URL: https://codereview.chromium.org/817483005

Cr-Commit-Position: refs/heads/master@{#26152}
2015-01-20 11:38:52 +00:00
cdai2
76d62e836a X87: add stub for api function calls with known number of parameters
port 8c990d1716

original commit message:
  add stub for api function calls with known number of parameters

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/852263004

Cr-Commit-Position: refs/heads/master@{#26148}
2015-01-20 06:48:57 +00:00
ishell
33994b4a22 Massive renaming of PropertyType values and other implied stuff.
PropertyKind:
  DATA -> kData
  ACCESSOR -> kAccessor

PropertyType:
  FIELD -> DATA
  CONSTANT -> DATA_CONSTANT
  ACCESSOR_FIELD -> ACCESSOR
  CALLBACKS -> ACCESSOR_CONSTANT

PropertyLocation:
  IN_OBJECT -> kField
  IN_DESCRIPTOR -> kDescriptor

StoreMode:
  FORCE_IN_OBJECT -> FORCE_FIELD

FieldDescriptor -> DataDescriptor
ConstantDescriptor -> DataConstantDescriptor
CallbacksDescriptor -> AccessorConstantDescriptor

Review URL: https://codereview.chromium.org/856503002

Cr-Commit-Position: refs/heads/master@{#26146}
2015-01-19 17:49:22 +00:00