Commit Graph

13143 Commits

Author SHA1 Message Date
meh@google.com 55596818ac Implement a native identical function in the VM.
Returns true if objects are the same instance.

BUG=7378

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

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16450 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 19:07:55 +00:00
meh@google.com ef737f105d Revert "Clean up CodeObservers"
This reverts commit 43e5ada2fba69c7d5c009b5bf70a234f12941617.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16446 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 17:45:36 +00:00
meh@google.com 6fbf9f1c2e Clean up CodeObservers
Move CodeObserver registration to the OS abstraction
Move Pprof logic to the OS abstraction
Add DISALLOW and AllStatic to Code Observers where appropriate

BUG=7321

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16445 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 17:37:59 +00:00
fschneider@google.com 8a54796712 Cleanup: Don't allocate a frame iterator in the IC miss handler when it's not needed.
Review URL: https://codereview.chromium.org//11607018

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16439 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 11:56:11 +00:00
kmillikin@google.com 6ff1d9cfc5 Simplify basic block discovery -- handle all blcoks uniformly.
R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16420 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 08:58:32 +00:00
asiva@google.com c29b839d9d Fix latin1 character predefinition in the symbol table. The code
was doing two calls to FindIndex for every character.
Review URL: https://codereview.chromium.org//11644038

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16417 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 03:07:10 +00:00
asiva@google.com 7ea520f10f Create read only handles for empty_array and sentinel objects
(trying out a basic framework and will extend it to others once this
works).
Review URL: https://codereview.chromium.org//11648006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16416 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 02:33:05 +00:00
meh@google.com 38aa3e1dee Revert "Implement a native identical function in the VM."
This reverts commit 0f29c63d64de37beb5f1b927a492687fde6de58a.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16414 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 01:50:27 +00:00
meh@google.com 585e671819 Implement a native identical function in the VM.
Returns true if objects are the same instance.

BUG=7378

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16412 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-21 01:14:32 +00:00
meh@google.com 5d390fdf6c Revert "Implement a native identical function in the VM."
This reverts commit b6265dc1f0711711bcd26413826155f338c49c6d.

Merge remote-tracking branch 'git-svn' into revert-identical

Revert "Implement a native identical function in the VM."

This reverts commit b6265dc1f0711711bcd26413826155f338c49c6d.

Merge remote-tracking branch 'git-svn' into identical

Merge remote-tracking branch 'git-svn' into identical

stage for submission

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16402 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-20 21:49:54 +00:00
meh@google.com d59b5937a6 Implement a native identical function in the VM.
Takes two objects and returns a boolean.
If the objects are SMIs, then returns true if the values are identical.
If the objects are not SMIs, then returns true if the references are identical.

BUG=7378

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16400 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-20 21:35:38 +00:00
ager@google.com 08b1e44502 Reapply "Optimize the message queue for many active ports with few messages."
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16394 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-20 20:03:07 +00:00
ager@google.com c3c47bbc98 Revert "Optimize the message queue for many active ports with few messages."
No failures locally. I'll investigate tomorrow.

R=iposva@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16392 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-20 19:40:29 +00:00
srdjan@google.com 324f1715bc Mark final fields as immutable.
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16390 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-20 19:29:52 +00:00
ager@google.com 6e945a2578 Optimize the message queue for many active ports with few messages.
The current message queue implementation is very inefficient if you are using
many active ports with few messages. This happens when you use 'call' a lot
on ports which is currently done in dart:io.

This patch does not remove messages from the queue when closing a port. Instead
it drops messages for closed ports when it processes them. This dramatically
speeds up dart:io benchmarks that enqueue tons of writes on a file output
stream.

R=iposva@google.com
BUG=http://dartbug.com/6911

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16388 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-20 19:20:44 +00:00
fschneider@google.com 3546cf0b35 Cache resolution of two static functions frequently used in I/O.
Review URL: https://codereview.chromium.org//11636017

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16360 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-20 12:42:11 +00:00
vegorov@google.com 9a45691c76 When replacing one value with another ensure that replacement has SSA index assigned.
R=srdjan@google.com
BUG=dart:7513

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16352 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-20 00:16:42 +00:00
regis@google.com 9cdeb399d1 Simplify method invocation runtime entries.
Review URL: https://codereview.chromium.org//11636025

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16343 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-19 21:26:29 +00:00
srdjan@google.com b7ed42c921 Fix test failure issue 7471: Signature classes have different type checking rules, i.e., they have no subclasses but other signature classes may be subtypes (must check signature).
Review URL: https://codereview.chromium.org//11640025

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16339 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-19 19:47:13 +00:00
vegorov@google.com 04c4cf1860 Set kArrayCid as ResultCid for CreateArray instruction.
Propagate the length of the array returned by CreateArray in constant propagation.

Fold constant RelationalOp instructions.

Together this allows to kill considerable amount of unrechable code emitted from array literal allocation.

R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16331 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-19 17:47:01 +00:00
fschneider@google.com 3a1ab92a21 Make getter for capacity in _GrowableObjectArray private.
Review URL: https://codereview.chromium.org//11606023

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16314 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-19 11:48:30 +00:00
fschneider@google.com 3a38233a6f Inline ByteArrayBase.length in the flow graph optimizer.
Review URL: https://codereview.chromium.org//11628011

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16311 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-19 10:43:13 +00:00
srdjan@google.com 000fd5bf35 UnboxDouble: convert smi constants to doubles at compile time instead of at runtime.
Review URL: https://codereview.chromium.org//11645006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16296 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-18 23:48:03 +00:00
asiva@google.com 8af296c9c8 Cleanup the exceptions create code to use Arrays instead GrowableArrays so
that it is consistent with the DartEntry invoke code that it calls finally.
Review URL: https://codereview.chromium.org//11639007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16295 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-18 23:47:35 +00:00
asiva@google.com 2c6de68680 Changed the API in DartEntry for invoking dart code from C++ to make it more compatible with the requirements of the runtime.
Deleted all the code duplication that was added to circumvent the old DartEntry API requirements.
Review URL: https://codereview.chromium.org//11613009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16288 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-18 21:36:01 +00:00
meh@google.com b406d5cb4e Revert "Cleanup CodeObservers (and update build file)"
This reverts commit b528d673e762b0db88b902ec2e45f917e21d8a67.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16285 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-18 19:59:30 +00:00
meh@google.com cc626035f1 Cleanup CodeObservers (and update build file)
- Move CodeObserver registration to the OS abstraction
- Add DISALLOW and AllStatic to Code Observers where appropriate

The builds for Mac and Windows broke when I submitted the earlier CL (11572032). This CL removes obselete files from the .gypi build file.

BUG=7321

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16284 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-18 19:54:12 +00:00
meh@google.com 4264ab7907 Revert "Cleanup CodeObservers"
This reverts commit 16a9677a8a8f0fb8f91c9e6348e188aa167b36c7.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16277 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-18 19:11:09 +00:00
srdjan@google.com 1601d234c5 Fix build.
Review URL: https://codereview.chromium.org//11607021

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16274 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-18 18:57:05 +00:00
meh@google.com 6adb8b3e6d Cleanup CodeObservers
Move CodeObserver registration to the OS abstraction
Add DISALLOW and AllStatic to Code Observers where appropriate

BUG=7321

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16273 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-18 18:54:30 +00:00
srdjan@google.com 18b376a8ad Add DoubleToSmi optimistically, preventing boxing/unboxing of doubles and propagate smi-nessof the result.
Review URL: https://codereview.chromium.org//11568044

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16272 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-18 18:43:29 +00:00
srdjan@google.com 5a698bba3d Use call counts to prevent cold calls from being inlined.
Review URL: https://codereview.chromium.org//11541002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16269 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-18 18:15:41 +00:00
iposva@google.com 391cefa02e - Consider the growth policy even when allocating large pages.
Review URL: https://codereview.chromium.org//11434056

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16267 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-18 17:45:55 +00:00
regis@google.com 6665f3c92c Include super type in interface list for cycle detection (issue 4318).
Report an error if a type appears in both extends clause and implements clause.
Add language test.
Close old pending issue 4905685.
Review URL: https://codereview.chromium.org//11613007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16237 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-18 00:13:33 +00:00
regis@google.com aef9047742 Invoke noSuchMethod instead of immediately throwing NoSuchMethodError when
invoking a non-closure as a closure (reopened issue 3326).
Address comments of last cl.
Review URL: https://codereview.chromium.org//11612002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16220 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-17 19:35:16 +00:00
vegorov@google.com 9fc1b54794 Store optimized flow graph statistics on the function itself.
This gives a good estimate for an early bailout from the inlining attempt.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16212 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-17 15:22:16 +00:00
cshapiro@google.com 49f6f9f36d Merge the Merlin heap tracing to top-of-trunk.
Review URL: https://codereview.chromium.org//11428067

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16199 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-15 19:58:45 +00:00
regis@google.com 3ae792bbf4 Implement InvocationMirror.invokeOn method in the vm (issue 7227).
Review URL: https://codereview.chromium.org//11570042

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16187 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-15 00:28:41 +00:00
tball@google.com 3282ae3f72 Second version of support for specifying an unhandled exception callback
in Dart.  Isolate.spawnFunction optionally takes a callback parameter,
which is not resolved until an unhandled exception occurs.  If a callback
wasn't specified, the VM will then call an "_unhandledExceptionCallback"
function if it is defined in the isolate's source file. If no callback
is provided, the error is logged as the isolate is closed.
Review URL: https://codereview.chromium.org//11558034

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16186 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-15 00:20:07 +00:00
regis@google.com 849585ef7c Implement Function.apply in vm (issue 5670).
Fix a closure parameter count check bug (unveiled by an apply test).
Review URL: https://codereview.chromium.org//11564029

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16175 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-14 19:04:01 +00:00
asiva@google.com e2e6ae3437 Fix windows build.
Review URL: https://codereview.chromium.org//11566025

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16152 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-14 07:17:27 +00:00
asiva@google.com d3dcb3a952 Fix build break.
Review URL: https://codereview.chromium.org//11565028

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16150 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-14 06:59:26 +00:00
asiva@google.com 0a5bf36268 Changes per discussion with Anton
- Add a new API call Dart_StringTolatin1 so that the contents of a
  string object that satisfies Dart_IsStringLatin1 can be gotten
- Tweak Dart_MakeExternalString to copy out the contents of the string
  for valid string objects that can not be externalized by the VM
  (e.g strings in the VM isolate)
Review URL: https://codereview.chromium.org//11580003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16149 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-14 06:44:26 +00:00
srdjan@google.com 27296584c2 Increase optimziation counter threshold to 3000, improves dart2js preformance.
Review URL: https://codereview.chromium.org//11442059

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16127 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-13 16:27:09 +00:00
vegorov@google.com 6586895d5f Implement store to load forwarding.
Implementation is done on top of load to load forwarding. In addition to killing loads stores now generate values for corresponding load ids.

To find load expression id corresponding to a store we change KeyValueTrait of the map used for load numbering. New trait allows to lookup a load by store.

R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16119 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-13 15:31:29 +00:00
fschneider@google.com 9e77dd7986 Store canonical type argments in a hash table instead of linear list.
The code closely follows the symbol table implementation, but adjusted 
for use with TypeArguments objects.
Review URL: https://codereview.chromium.org//11474056

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16117 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-13 15:24:32 +00:00
vegorov@google.com a3cf827526 Never try to add 0 bytes to free list.
R=iposva@google.com
BUG=dart:7288

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16114 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-13 14:48:30 +00:00
vegorov@google.com 1ee5f51793 Improve redundant load elimination.
Previously it incorrectly computed OUT sets during the fix point iteration: did not propagate changed from IN to OUT.

However just computing bitset representation of IN set was actually not enough because different values might be coming in from different predecessors.

This algorithm inserts phis at merge points.

R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16109 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-13 14:10:38 +00:00
meh@google.com 1125aff405 Move generate_perf_events_symbols flag to VM (new issue with @google address)
Changes reviewed and approved here:
https://chromiumcodereview.appspot.com/11490026

Created a new issue using meh@google.com instead of meh@chromium.org so I can commit to trunk.

BUG=

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16084 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-13 00:42:19 +00:00
iposva@google.com d66477ee50 - Remove duplicate declaration of flag.
Review URL: https://codereview.chromium.org//11548048

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16083 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-13 00:39:12 +00:00