Commit Graph

372 Commits

Author SHA1 Message Date
yangguo
019096f829 Serializer: move to a subfolder and clean up includes.
R=jochen@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27501}
2015-03-27 15:29:07 +00:00
chunyang.dai
1caa6179d2 X87: Switch full-codegen from StackHandlers to handler table.
port 38a719f965  (r27440)

original commit message:

    This switches full-codegen to no longer push and pop StackHandler
    markers onto the operand stack, but relies on a range-based handler
    table instead. We only use StackHandlers in JSEntryStubs to mark the
    transition from C to JS code.

    Note that this makes deoptimization and OSR from within any try-block
    work out of the box, makes the non-exception paths faster and should
    overall be neutral on the memory footprint (pros).

    On the other hand it makes the exception paths slower and actually
    throwing and exception more expensive (cons).

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27478}
2015-03-26 13:06:56 +00:00
chunyang.dai
5d5bf2b77f X87: VectorICs: keyed element loads were kicking out non-smi keys unnecessarily
port 6689cc27eb (r27377)

original commit message:

    Handlers should be in charge of this work. The change uncovered a bug in
    vector-ics related to keyed loads into strings. It's important for
    StringCharCodeAtGenerator, a helper used in full code and in
    LoadIndexedStringStub (a handler) to protect the vector and slot registers
    when it makes a runtime call to convert a HeapNumber to a Smi.

    It's still possible for the handler to MISS after this call, perhaps due
    to out of bounds access. In that case, the vector and slot registers need
    to be delivered safely to the MISS handler.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27461}
2015-03-26 02:53:11 +00:00
chunyang.dai
a21cc19eef X87: [es6] implement Reflect.apply() & Reflect.construct()
port d21fd15467 (r27316)

original commit message:

  [es6] implement Reflect.apply() & Reflect.construct()

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27460}
2015-03-26 02:24:39 +00:00
chunyang.dai
ebae8c145c X87: [es6] generate rest parameters correctly for subclass constructors
port bef80fcfd7 (r27344)

  original commit message:

     [es6] generate rest parameters correctly for subclass constructors

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27459}
2015-03-26 02:11:28 +00:00
chunyang.dai
b638550338 X87: [turbofan] Turn Math.clz32 into an inlinable builtin.
port 3aa206b865 (r27329)

original commit message:

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27429}
2015-03-25 06:41:25 +00:00
chunyang.dai
c9db590d3b X87: [stubs] Add missing interface descriptor for the CompareIC.
port e18e3cd4d8 (r27305)

original commit message:

  [stubs] Add missing interface descriptor for the CompareIC.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27397}
2015-03-24 10:23:46 +00:00
chunyang.dai
10cd7247a3 X87: Serializer: serialize internal references via object visitor.
port 7c149afb6c (r27275).

original commit message:

 Serializer: serialize internal references via object visitor.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27396}
2015-03-24 10:17:35 +00:00
chunyang.dai
62c546517f X87: Remove PropertyCell space
port 16c8485a35 (r27269).

original commit message:

  Replaces StoreGlobalCell / LoadGlobalCell with NamedField variants that use write barriers.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27395}
2015-03-24 10:10:59 +00:00
chunyang.dai
40de9c3f02 X87: Use platform specific stubs for vector-based Load/KeyedLoad.
port 34a1a76ddf (r27235)

original commit message:

  A hydrogen code stub is not the best approach because it builds a frame
  and doesn't have the technology to discard roots at tail call exits.
  Platform-specific stubs provide much better performance at this point.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27394}
2015-03-24 10:06:21 +00:00
chunyang.dai
5703794412 X87: Remove kind field from StackHandler.
port 15f8213809 (r27263)

original commit message:

 This relands commit 96f79568a9.

 This makes the Isolate::Throw logic not depend on a prediction of
 whether an exception is caught or uncaught. Such a prediction is
 inherently undecidable because a finally block can decide between
 consuming or re-throwing an exception depending on arbitray control
 flow.

 There still is a conservative prediction mechanism in place that
 components like the debugger or tracing can use for reporting.

 With this change we can get rid of the StackHandler::kind field, a
 pre-requisite to do table-based lookups of exception handlers.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27385}
2015-03-24 08:08:19 +00:00
mstarzinger
11fb202f96 Move CompilationInfo::this_has_uses to HGraph::this_has_uses.
R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27378}
2015-03-23 19:11:29 +00:00
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