Commit Graph

3852 Commits

Author SHA1 Message Date
asiva@google.com 732d1a44de Add a UpdatedGuardedCidBit to Class object so that we don't have
to iterate over all the classes and it's fields to update the
GuardedCid value on each call to Dart_Allocate.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32271 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-04 01:12:55 +00:00
rmacnak@google.com 509556a094 Fix handling of CRLF line endings in Script::GetSnippet.
BUG=http://dartbug.com/16098
R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32254 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-03 18:11:57 +00:00
fschneider@google.com baa148b853 Fix wrongly recorded uses after polymorphic inlining.
When inlining function bodies at a polymorphic site, uses at the
callee graph entry need to be removed since this block
is removed in the process of inlining.

BUG=dartbug.com/16404
TEST=pkgbuild/samples/searchable_list
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32237 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-03 09:46:18 +00:00
srdjan@google.com 18bf9aa52b Fix issue 16375: disallow marking null-constant types as non-nullable. The issue occurs for strict equal comparisons, with both inputs being null.
R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32227 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-01 00:49:32 +00:00
johnmccutchan@google.com 15090664ba Refactor unboxed fields code in preparation of reusable SIMD boxes.
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32199 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-31 16:45:23 +00:00
johnmccutchan@google.com 9d80608b9c Add Float64x2, Float64x2List, etc... with runtime and dart2js implementations
R=sra@google.com, srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32196 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-31 15:28:05 +00:00
fschneider@google.com bb4869e3bb Inline recognized List factory in the flow graph optimizer.
The call to the native List factory is lowered into IL instructions if
the length is known to be a valid smi.

This is mostly performance neutral. The acutal allocation now takes place
in the array allocation stub instead of the intrinsic code (and the runtime
List_allocate in case the fast case path fails).

This is a preparation for enabling allocation sinking for arrays and will
be extended to handle type list allocation as well. This way the allocation
site is explicitly represented as a CreateArrayInstr, instead of just being
a static call.

Another benefit is that this allows to simplify the special handling of
recognized factory calls in the optimizer once all array types are handled
this way.

R=johnmccutchan@google.com, srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32194 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-31 13:26:48 +00:00
lrn@google.com d0651286c6 Make _Utf8Encoder create its buffer through an external function.
This allows the VM to use a Uint8List, where dart2js still has to use a plain List (due to versions of IE not supporting typed data).

R=floitsch@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32193 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-31 13:11:25 +00:00
hausner@google.com 936b51821c Prevent accidental breakpoints in non-debuggable code
Prevent setting accidental breakpoints in implicit getter
and setter functions, and in initializer expressions that
are inlined in field declarations.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32183 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-30 23:38:35 +00:00
hausner@google.com f9089a3ca5 Find all compiled copies of a function when setting breakpoint
Fixes a bug where the debugger did not find a compiled implicit
closure if the non-closureized version had not been compiled yet,
thus failing to set a breakpoint.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32165 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-30 18:08:02 +00:00
fschneider@google.com 6ffa061fdf Fix stack height assertion code and free up a bit in the Function tag bits.
The bit has_finally was only used to skip the checking of the stack height
at return statements: There was an unused value floating on top of the
expression stack in unoptimized code if the finally block preceded a normal
return statement. Normallyi, that does not cause harm. Optimized code is not
affected since it has a fixed stack size for expression evaluation.

This CL fixes the stack height for functions with try-finally by introducing
a temporary local where the return value is saved before an inlined
finally-block.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32157 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-30 12:12:31 +00:00
johnmccutchan@google.com ebf1703052 Setup valid pool pointer in assembler tests
Review URL: https://codereview.chromium.org//148523014

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32151 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-30 00:26:03 +00:00
hausner@google.com ed8ea2e281 Handle all debugger stepping with the isolate single step flag
Eliminate stepping with “internal” breakpoints. We can now handle
stepping in recursive functions properly. On the other hand, code
does not run at full speed between step commands, since a runtime
call to the debugger is necessary at each safe point.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32150 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-29 23:47:23 +00:00
johnmccutchan@google.com 2b15eed5bd IA32 and X64 assembler Float64x2 additions
BUG=
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32148 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-29 23:13:24 +00:00
zra@google.com 48017a73cc Fixes ABI bug in MIPS.
Adds test for native extensions with autoscoping set to false.

R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32147 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-29 23:07:50 +00:00
johnmccutchan@google.com 8c7020e422 Add Google Charts to Observatory and use it in allocation profiler
R=turnidge@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32142 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-29 21:51:25 +00:00
regis@google.com 8aac3612cf Share the same type parameters of a mixin application class to propagate
identical type arguments to the super type and to the mixin type, thereby
allowing for further optimizations, such as instantiator vector reuse or
sharing of type arguments with the super class.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32140 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-29 21:10:53 +00:00
turnidge@google.com b891e78325 Post-meetup feature extravaganza.
Remodel the top-level isolate summary page.

Add variables to stack frames in the stack trace.

Stop putting small integers and bools in the object id ring.

Rework how we pass down null references (and null-like references like
uninitialized values).

Collect all isolate timers by default.

Change the lifetime of IsolateSpawnState so that we can refer to it
later to know how an isolate started up.  Stop pretending that
IsolateSpawnState is a void*.  Clean up vestigial IsolateStartData.

R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32128 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-29 18:40:12 +00:00
hausner@google.com e2f1ed3b2f Fix debugger stepping
Recently I eliminated PC descriptors for some calls. This change
makes sure we handle single stepping on those call sites properly.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32071 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-28 16:36:42 +00:00
fschneider@google.com 02cd176e23 Fix bug in iteration over DelaySet.
The set may be modfied while iterating over it. I create
a temporary vector with a copy of the iterator range for
iteration.

This seems to fix the frequent crash with certain Polymer apps
in Dartium

BUG=dartbug.com/16231
R=iposva@google.com

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32070 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-28 15:31:25 +00:00
fschneider@google.com 7426c47cb6 Revert r32064, r32064 to fix Windows build.
TBR=ricow@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32065 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-28 12:12:29 +00:00
fschneider@google.com cfd7065e41 Attempt to fix windows VM build.
TBR=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32064 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-28 12:00:31 +00:00
fschneider@google.com 791f292858 Fix bug in iteration over DelaySet.
The set may be modfied while iterating over it. I create
a temporary vector with a copy of the iterator range for
iteration.

This seems to fix the frequent crash with certain Polymer apps
in Dartium

BUG=dartbug.com/16231
R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32063 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-28 10:25:58 +00:00
rmacnak@google.com 2808e02ca0 VM: Fix crash when a type error is encountered while evaluating metadata in checked mode.
BUG=http://dartbug.com/16321
R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32042 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-27 23:50:45 +00:00
johnmccutchan@google.com fcb2a50bb3 Use portable stack slot constants in profiler
R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32022 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-27 16:55:38 +00:00
fschneider@google.com dfa664dbe4 Fix bug in aliasing computation for constant index.
R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32016 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-27 12:02:37 +00:00
fschneider@google.com 21214c0f16 Improve aliasing info for load elimination of array loads.
The optimizer can now track side effects to array locations
at a constant index when eliminating array loads. Stores to
arrays with a constant index affect loads from arrays
at the same constant index _and_ loads from an unknown (non-constant)
index. Stores to an array with an unknown index affect all array loads.

For instance code like

var a = new List(2);
a[0] = 123;
a[1] = 456;
print(a[0] + a[1]);

we can now eliminate both loads from a[0] and a[1], where before
only the loads from a[1] was eliminated.

I changed the internal encoding of Alias to use BitField instead of
plain integers. This makes it a little easire to extend.

R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32014 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-27 11:06:48 +00:00
hausner@google.com 682855e8cc Ensure the debugger keeps a reference to code objects
Keep the code object in a breakpoint object rather than the
function object. This ensures that the GC can’t collect the
code object while there are breakpoints for the function.

R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32006 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-24 23:55:11 +00:00
srdjan@google.com 9c16a399ca Cleanups.
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32000 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-24 22:00:04 +00:00
johnmccutchan@google.com 9ca09b50e7 Track live instance and allocation counts for classes.
R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31978 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-22 19:21:22 +00:00
johnmccutchan@google.com a6399981e6 Code coverage in Observatory
R=turnidge@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31970 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-22 00:46:30 +00:00
hausner@google.com 0c434b3073 Rename kDummyTokenIndex to kNoSourcePos
Addresses comment to previous change list.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31969 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-21 23:46:26 +00:00
hausner@google.com baf16bac5e Make safe points in generated code invisible to the debugger
- remove some PC descriptors that are part of implicit, synthesized
  code, e.g. generated null checks in == methods, implicit constructors,
  implicitly generated code in user constructors, etc.
- ignore single step callbacks on PC descriptors that are part of
  synthesized code.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31966 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-21 21:49:42 +00:00
regis@google.com 926315dba6 Relax assert in case a type is first canonicalized at run time (issue 16239).
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31965 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-21 20:54:21 +00:00
srdjan@google.com 7629f40adb Be more aggressive when inlining getters and setters (we assume they are typically simple, efficient functions). +15% on Box2D.
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31961 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-21 17:44:29 +00:00
johnmccutchan@google.com 6b0e0df7ba Adds an empty PcDescriptors instance to the VM-isolate.
All newly created code objects point to the empty PcDescriptors instance.

R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31958 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-21 16:42:35 +00:00
fschneider@google.com bfcb5174a5 Fix bug in flow-graph loop detection.
With OSR there can be multiple loops that share one common loop header.
These loops must be treated as one loop, otherwise
side effects are not correctly computed.

BUG=dartbug.com/16151
TEST=language/osr_test
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31956 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-21 16:02:12 +00:00
fschneider@google.com 893b25e5b4 Revert r31601 (Use constants from the frame at OSR entry...).
Because this CL also changed the way spill slots are allocated for
catch entry blocks it caused invalid code for optimized try-catch
under certain conditions.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31948 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-20 10:43:41 +00:00
regis@google.com 5832bdbbb3 Handle wrong method invocation of a type parameter (fix issue 13134).
Add test.

R=gbracha@google.com, hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31944 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-18 01:03:22 +00:00
hausner@google.com a65c571f18 Get rid of dynamic call debug stub
This leaves only one debugger stub function. Yay.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31932 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-17 21:32:58 +00:00
johnmccutchan@google.com d41a2106c2 Change Code object serialization format to use 50% less space.
Update observatory to support new format
Cache code objects inside observatory isolate
Profiler updates cache of code objects
Profiler can display annotated disassembly objects
Code objects now display sample ticks
Fix error viewer
Start using the logging package.

R=turnidge@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31931 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-17 21:16:44 +00:00
hausner@google.com 06da68b5aa Eliminate another debugger stub
This change replaces https://codereview.chromium.org/135213002/

The specialized debugger stub call for static method calls is
no longer needed. It was introduced because once upon a time, the
static method call stub used to patch the call site when the target
was compiled. The VM stopped patching unoptimized static calls a
long time ago. Thus we can treat a static call like a regular runtime
call when patching it to set a breakpoint.

Bonus fix: single step runtime callback on mips was broken. The
enter/leave stub frame were missing.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31928 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-17 19:09:46 +00:00
johnmccutchan@google.com 79d1f9537b Ensure Sample instance_size is always set.
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31927 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-17 17:14:08 +00:00
johnmccutchan@google.com 79d3555394 Add flag to control number of stack frames collected by profiler
BUG=
R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31924 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-17 16:32:51 +00:00
regis@google.com 17196f6467 Make a type malbounded if one of its type arguments is malbounded, even if
independently of the declared bounds for the type (fix issue 16149).

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31901 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-16 22:56:35 +00:00
hausner@google.com 812467f0f6 Fix several little buglets with stepping
No need to halt on single step if there is a breakpoint on the
same location. While looking at the resulting test failures, I
discovered that the step_in_equals test was not at all testing
what it was meant to test. It happened to pass because of a
related bug in the parser. Decided to abandon that test and
instead check that we can break at == even if one of the operands
is null.

Added ability to match line numbers in the debugger tests.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31898 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-16 21:15:17 +00:00
fschneider@google.com fb5e6077bd Undo workaround for a bug with compile-type of the context value.
I think this was fixed already with https://codereview.chromium.org/102053010/.

BUG=dartbug.com/15652
R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31885 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-16 14:13:24 +00:00
lrn@google.com 3b3e87cabc Revert "Rename internal library dart:_collection-dev to dart:_internal."
Dartium needs updating too.

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

R=floitsch@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31877 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-16 12:06:38 +00:00
lrn@google.com 9357caa547 Revert "Make VM TypedList not implement ByteBuffer."
Html transferable test fails to send buffer as buffer.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31875 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-16 11:48:07 +00:00
lrn@google.com c2f6609181 Make VM TypedList not implement ByteBuffer.
BUG= http://dartbug.com/10136
R=asiva@google.com, sra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31873 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-16 10:18:41 +00:00