Commit Graph

5075 Commits

Author SHA1 Message Date
vegorov@google.com a34c19ccca Adjust environments we attach to the block entries.
There were two bugs in the code:

- we did not ensure proper outer environment on block entries after inlining;

- we did not correct the 'after' environment for eager deopt

There is one bug still with the infrastructure: our deoptimization stub does *not* support eager deoptimization to the after deoptimization point.

I am leaving it like this for now, because we don't actually ever perform such deoptimization (i.e. even though we diligently attach these environments we don't actually use them in the instruction that can deopt).

R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42257 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-10 18:32:15 +00:00
fschneider@google.com ac89119791 Fix dead phis elimination.
When initially marking live phis, only mark those
with real (i.e. non-phi) uses as live so that cycles
are properly eliminated.

Add a pass after allocation sinking since it may
create additional dead phis.

R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42245 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-10 14:28:38 +00:00
zerny@google.com 50c9e72413 Clobber non-live temporaries on some paths involving a possible slow-path allocation.
R=vegorov@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42239 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-10 09:51:18 +00:00
hausner@google.com 8ece5c1b84 Allow Symbols in switch and maps
Allow Symbol literals (and const Symbol instances) as switch expression
and as key values in const Maps.

This implements the most recent Spec changes.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42230 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-10 00:24:07 +00:00
regis@google.com 0fb9f43f32 Complete and clean up breakpoint support in all 3 debuggers embedded in MIPS,
ARM, and ARM64 simulators.
Implement the same debugging commands in all 3 simulators: stop_sim_at flag, bt,
p icount, break, del, unstop, etc...

R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42216 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-09 19:26:26 +00:00
koda@google.com 56defa8060 Write-barrier verification on ARM.
Add and use methods on Assembler for writing and verifying object fields.
Enable tests in verified_mem mode for simarm.
Also generalize and use InitializeFieldsNoBarrierUnrolled in one more place.

R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42208 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-09 16:15:33 +00:00
iposva@google.com 602aad28a1 - Implement Isolate.ping.
- Allow isolate library messages to be enqueued at the beginning
  of the message queue.

R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42193 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-08 22:45:10 +00:00
srdjan@google.com 3ae870c049 Add flag inlining_callee_size_threshold_with_constants (default 200) which causes more aggressive inlining if constant arguments are passed to the callee.
R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42184 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-08 21:33:34 +00:00
koda@google.com aedfeacd4b Fix Service_Address test expectations.
We no longer return a reference.

TBR=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42178 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-08 20:03:24 +00:00
hausner@google.com 392db8d312 Implement correct semantics of Boolean Conversion
When converting null to a boolean value, throw an AssertionError
rather than a TypeError.

This is the same change as r42145, with added co19 status updates.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42170 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-08 18:51:48 +00:00
koda@google.com 8422f331ec Fix bugs in heapmap, binary payloads, 'address' request.
- Remove forbidden extra slash.
- Update binary payload parsing after type changes.
- 'address' should return a full object, not a ref.

R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42169 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-08 18:45:57 +00:00
johnmccutchan@google.com 80d39f91dc Remove overly strict assert around method name token position
BUG=
R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42151 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-05 21:51:43 +00:00
hausner@google.com 4cfdf02012 Revert r42145 to fix co19 tests
Review URL: https://codereview.chromium.org//772513003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42148 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-05 21:05:38 +00:00
hausner@google.com ad837a0d9f Implement correct semantics of Boolean Conversion
When converting null to a boolean value, throw an AssertionError
rather than a TypeError.

Fixes issue 21279.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42145 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-05 20:36:37 +00:00
regis@google.com f8711f2149 Improve debugger in MIPS simulator.
Validate integer flag values and allow hex flag values.

R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42139 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-05 18:37:11 +00:00
regis@google.com 1757888022 Implement mint unboxing on MIPS.
R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42138 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-05 18:27:37 +00:00
fschneider@google.com e8f27c722a Better constant folding of length-loads in checked mode.
Handle redefinitions (Redefinition/AssertAssignable) when
checking for known constant length.

R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42132 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-05 14:02:40 +00:00
regis@google.com acfcae166d Fix gc on MIPS (live registers were spilled in reversed order).
Add comments on all platforms.

R=koda@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42125 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-05 01:07:10 +00:00
johnmccutchan@google.com f216834af8 Expose set_source service command for functions
- Can change signatures
- Currently only works for unexecuted functions.

R=rmacnak@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42124 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-04 23:35:24 +00:00
koda@google.com 951fa0ab22 observatory: populate 'architecture' in VM, and add numerical vmId in Class.
Knowing the word size and having an efficient (non-String) representation for class ids is important for the upcoming heap serialization features.

R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42115 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-04 19:07:32 +00:00
fschneider@google.com 9fad07f46e Enable inlining inside try-blocks in the VM's optimizing compiler.
R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42103 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-04 12:29:28 +00:00
iposva@google.com 320ffa23a1 - Implement hashCode and == for Capability.
R=lrn@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42102 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-04 12:17:48 +00:00
zerny@google.com c606e6a4cb Disable RegExp tests when using JSCRE backend.
TBR=vegorov@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42101 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-04 10:50:05 +00:00
zerny@google.com 59e4617216 Initialize offsets also for the unreachable branch (clang -Wsometimes-uninitialized).
TBR=vegorov@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42100 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-04 09:39:21 +00:00
zerny@google.com 4fb54d853d Support use of external strings as inputs to LoadCodeUnitsInstr.
R=vegorov@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42099 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-04 09:26:48 +00:00
rmacnak@google.com dd3c1fa32e Remove several entries from invocation fuzzer blacklist.
Add event loop, isolate startup, and symbol helper functions to the invisible list.

Include doubles as a target.

BUG=http://dartbug.com/15274
BUG=http://dartbug.com/20583
BUG=http://dartbug.com/21707
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42092 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-03 22:08:32 +00:00
koda@google.com 96576ad59e vmservice: basic object graph serialization.
Sends a service event with binary data encoding the basic shape of the object graph; for each object, its:
* size
* class id
* neighbors (excluding smis and nulls)

This is a minimal implementation to make the first unit test pass (TDD).

R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42070 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-02 19:33:09 +00:00
srdjan@google.com bad6a61899 Cleanups.
R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42069 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-02 18:48:12 +00:00
fschneider@google.com 6fc87187a6 Fix implementation of the Iterable interface for typed data lists.
Return an Iterable with the correct type arguments (instead of <dynamic>)
when calling Iterable methods.

R=lrn@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42066 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-02 13:25:36 +00:00
vegorov@google.com bfa152df59 Support non-deoptimizing version of UnboxInt32 for integer definitions.
If range analysis infered that integer definition is within Int32 range then it is guaranteed to be either Smi or Mint.

BUG=http://dartbug.com/21763
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42065 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-02 13:19:03 +00:00
iposva@google.com e8428aa507 - The body of a async function should be executed in a Future.mircotask.
R=floitsch@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42064 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-02 13:05:16 +00:00
fschneider@google.com a49870e721 VM: Remove use of IterableMixinWorkaround from _List, _ImmutableList and _GrowableList.
_List, _ImmutableList and _GrowableList now extend ListBase which uses ListMixin.

Note that typed data lists are still using IterableMixinWorkaround for now.
They will be changed in a separate CL since it involves a few more changes
to the VM.

BUG=dartbug.com/13647
R=lrn@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42061 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-02 10:38:51 +00:00
regis@google.com b2d73e491a Simplify mint comparison code on ARM.
R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42053 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-01 22:44:15 +00:00
fschneider@google.com 547fff556e Fix parallel move code for swapping SIMD registers on ARM and ARM64.
The old code did not swap the full quad-word register, but only half.

R=zerny@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42044 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-01 15:25:08 +00:00
fschneider@google.com abde3a9699 Merge chains of straight-line blocks.
R=zerny@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42038 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-01 12:40:55 +00:00
fschneider@google.com d80f05540c Avoid checking for uses in try-blocks, when optimizing a function without try-catch.
R=zerny@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42037 260f80e4-7a28-3924-810f-c04153c831b5
2014-12-01 10:36:24 +00:00
vegorov@google.com d8a156904d Remove eager assertion from UnboxedIntConverterInstr.
When inserting a mint->int32 convertion for a phi operand we will not pass correct deopt_id into the UnboxedIntConverter constructor but will instead force copy deoptimization target via CopyDeoptTarget at the end of the InsertConversion.

BUG=http://dartbug.com/21728
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42011 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-26 22:50:45 +00:00
regis@google.com a17adcd1de Fix overflow check when shifting unboxed mints on 32-bit platforms, except on
MIPS, which does not yet support unboxed mints (work in progress). Issue 21715.
Add regression test.

R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42003 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-26 17:36:32 +00:00
zerny@google.com e9a2fb3f99 Explicitly clear out the IC-data register in ExecuteMatch.
The register value is unknown on entry to ExecuteMatch and needs to be
made GC safe before calling the matching function which could be a lazy
stub.

R=vegorov@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41996 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-26 14:39:54 +00:00
zerny@google.com f0d309525e Don't check against __BYTE_ORDER__ when not defined.
It appears that clang in Xcode does yet define __BYTE_ORDER__.

TBR=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41984 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-26 09:54:16 +00:00
zerny@google.com 8e807c8550 Integrate the Irregexp Regular Expression Engine.
BUG=http://dartbug.com/19090
R=fschneider@google.com

Committed: https://code.google.com/p/dart/source/detail?r=41949

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41983 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-26 09:32:43 +00:00
hausner@google.com a5efbb4d66 Fix named arguments in await expressions
Fix for issue 21480.

R=rmacnak@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41968 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-25 20:31:54 +00:00
hausner@google.com 1b8fa74112 Fix parsing of awaitable expressions with nested functions
“have seen await” flag must be properly saved and restored when
parsing nested function (literals) inside an await expression.

Fixes issue 21536

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41962 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-25 18:13:49 +00:00
zerny@google.com 84a4135901 Revert "Integrate the Irregexp Regular Expression Engine."
This reverts commit https://code.google.com/p/dart/source/detail?r=41949

TBR=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41950 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-25 13:36:40 +00:00
zerny@google.com 43ac0c6f33 Integrate the Irregexp Regular Expression Engine.
BUG=http://dartbug.com/19090
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41949 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-25 13:10:21 +00:00
koda@google.com 844dca3a21 Make toString visible on enum classes, as required by proposed spec.
R=hausner@google.com, rmacnak@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41939 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-24 19:19:18 +00:00
hausner@google.com a224480e1a Allow await expressions in arrow-style functions
Recognize await keyword when skipping expressions.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41932 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-24 17:39:04 +00:00
zerny@google.com f8efbead3b Work around erroneous GCC report about potentially clobbered variable.
R=vegorov@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41924 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-24 08:57:13 +00:00
iposva@google.com d4faaf0be8 - Remove unimplemented function from header.
Review URL: https://codereview.chromium.org//748843003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41918 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-21 20:45:02 +00:00
koda@google.com e775ee5dac arm: Move unrolled array initialization to Assembler.
This is the final preparation before adding write barrier verification infrastructure on ARM
(which requires all pointer writes to pass through write-barrier aware code).

R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41914 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-21 18:09:40 +00:00