Commit Graph

2925 Commits

Author SHA1 Message Date
iposva@google.com dc2c8b3707 - Consolidate code into the old generation.
- Record pointers between code objects.
- Collect unreferenced code objects.
Review URL: https://codereview.chromium.org//11265026

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14113 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-25 23:46:01 +00:00
srdjan@google.com 9c4cb91442 Trace when disabling optimized code (--trace-disabling-optimized-code)
Review URL: https://codereview.chromium.org//11282003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14036 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-24 20:38:53 +00:00
hausner@google.com 08bc0fb331 Add == method name to symbol table
Review URL: https://codereview.chromium.org//11236050

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13915 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-22 23:23:57 +00:00
srdjan@google.com 90967baab9 Fix super ==: Test first for null before call inf super ==.
Review URL: https://codereview.chromium.org//11230034

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13907 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-22 20:33:12 +00:00
regis@google.com 3f0b894dbe Enforce new optional parameter rules.
Review URL: https://codereview.chromium.org//11186064

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13891 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-22 16:46:26 +00:00
srdjan@google.com 03a61f332c Apply optimization after class-id propagation: instance calls without ICData are optimized by using input argument class-ids to create fake ICData. This reduces the number of deoptimizations.
Review URL: https://codereview.chromium.org//11187046

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13798 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-18 20:41:58 +00:00
tball@google.com 2cd8436c5a Changed StackZone and ApiZone to be containers for Zone.
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13707 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-16 22:05:40 +00:00
hausner@google.com 1811a6b913 Support for type dynamic in VM
Old name Dynamic is supported, and automatically converted to
lower-case dynamic when parsed.

VM flag --warn_legacy_dynamic prints warnings when Dynamic
is found.
Review URL: https://codereview.chromium.org//11125005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13637 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-12 22:40:24 +00:00
asiva@google.com 1bf642129d - Get rid of RawClosure class and use RawInstance for closures.
- Simplify SetRaw to not require an access to the Current Isolate.
Review URL: https://codereview.chromium.org//11087070

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13581 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-11 20:34:08 +00:00
fschneider@google.com 667b0d5185 Mark optimized functions with a * in the perf event symbol output.
This allows to distinguish time spent in optimized code vs unoptimized code
in our profile information.
Review URL: https://codereview.chromium.org//11028143

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13547 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-11 15:07:49 +00:00
srdjan@google.com 8e7aee9048 Address Florian's comments.
Review URL: https://codereview.chromium.org//11090027

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13427 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-09 18:46:25 +00:00
iposva@google.com 5f2f50f960 Land http://codereview.chromium.org/11047027/ for Matthias:
Implement export clause in VM 

Implement export namespace support in VM compiler. 

Missing functionality: ensuring that a name is only re-exported once.
Review URL: https://codereview.chromium.org//11028084

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13384 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-09 00:14:42 +00:00
ager@google.com 70216ab4cd Hide internal details of VM string implementation.
R=lrn@google.com,srdjan@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13352 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-08 13:00:33 +00:00
regis@google.com 3a45259cc5 Implement new scope rules for type variables (issue 5230).
Fix tests.
Review URL: https://codereview.chromium.org//11030056

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13316 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-05 20:29:02 +00:00
tball@google.com 76d7c9b105 Renamed Zone->StackZone, BaseZone->Zone, in preparation for changing isolate->get_zone() to return what was called the BaseZone instead of its wrapper. The GetBaseZone() methods were not renamed, to help the next CL.
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13314 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-05 19:52:55 +00:00
iposva@google.com c8df70b904 Fix bug 5575:
- Remove residue of typed arrays from dart:core.
Review URL: https://codereview.chromium.org//11031063

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13274 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-05 06:52:42 +00:00
srdjan@google.com 717e3c0396 Support for mixed null/smi equality: do not deoptimize, emit same optimized code as if that was smi-equality only.
Moved assert for duplicate class checks into ICData.
Allow CheckClassInstr to check for Smi as well.
Review URL: https://codereview.chromium.org//11048032

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13254 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 19:35:23 +00:00
kmillikin@google.com 932b29c74e Pack deopt ID into the return before and return after deopt instructions.
Pack it into a machine word-sized bit field along with the object table
index.  The commands do not implicitly use the object table index any more,
which allows removing deopt IDs from the object table and pooling function
entries.

R=srdjan@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13214 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 09:03:28 +00:00
kmillikin@google.com d7115e5eda Remove deoptimization index PC descriptors.
Put the PC (offset) of the deoptimization point and the deoptimization
reason in the DeoptInfo table.  The table entries are now triples of
(PC offset, info, reason).

R=srdjan@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13056 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-01 10:16:22 +00:00
ager@google.com abee5139e5 Reapply change to hide VM-only List implementation classes.
The performance issue was that I had not updated the method
recognizer.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13003 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-28 11:08:38 +00:00
iposva@google.com b85f604f66 - Implement first class types in the VM.
- Make AbstractType a subclass of Instance and map it and its subclasses
  to private Dart classes in dart:core implementing the Type interface.
- Avoid dispatching through statics in Object if not strictly needed.
Review URL: https://codereview.chromium.org//10979058

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12981 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-27 21:19:00 +00:00
ager@google.com fe66a0af1a Revert hiding of VM-only coreimpl list implementation types. While I
investigate performance regression (even after fixing constructors
in the intrinsifier).

R=iposva@google.com,srdjan@google.com,fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12963 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-27 14:07:56 +00:00
ager@google.com 8e6a2c8345 Hide VM-only coreimpl List implementation types. These should not be
exposed as visible parts of coreimpl.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12952 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-27 12:37:30 +00:00
regis@google.com 656cdf40d4 Fix snapshot reading of canonicalized types.
Change some redirecting factory compile-time errors into dynamic errors after
discussion with Gilad (negative tests still missing).
Review URL: https://codereview.chromium.org//10996002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12872 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-25 19:26:53 +00:00
srdjan@google.com 11abda4702 Move HasOneTarget to ICData.
Review URL: https://codereview.chromium.org//10981010

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12854 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-25 17:19:11 +00:00
zerny@google.com cd514c84b4 Add is_inlinable field to functions.
Repeated attempts at inlining functions that cannot be inlined leads to
noticeable performance regression when compiling with dart2js.

R=vegorov@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12842 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-25 12:58:51 +00:00
asiva@google.com 690b823195 Fix the types used in bit fields and a few other places.
Review URL: https://codereview.chromium.org//10967044

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12820 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-24 23:25:44 +00:00
hausner@google.com 928148cfc3 Address Siva's comments
TBR=asiva
Review URL: https://codereview.chromium.org//10982012

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12811 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-24 21:53:45 +00:00
hausner@google.com 201bce4219 Support for show/hide combinators
- Add a new VM object called a Namespace.
- A Namespace is a library, and two list of names to hide/show.
- Convert Library and LibraryPrefix to contain Namespace
  objects instead of Libraries in their import list.
Review URL: https://codereview.chromium.org//10967052

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12804 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-24 20:46:56 +00:00
regis@google.com 61297238fb Support redirecting factory constructors in the VM (issue 3969).
Add test (negative tests still missing).
Some more work is needed regarding when to throw a dynamic error and when to
report a compile-time error. Some questions are not answered by the spec.
Review URL: https://codereview.chromium.org//10964058

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12791 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-24 17:28:37 +00:00
kmillikin@google.com c70bcfcfa3 Support constant folding of instructions with constant smi values.
In sparse conditional constant propagation, replace instructions with
constant smi values with their constant value.  Extend the analysis to
understant shift and bitwise binary operations.

R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12778 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-24 13:14:54 +00:00
asiva@google.com 4140ed9d5b Fix for issue 5223 : Import 'dart:core' implicitly only if it has not been
already explicitly imported in the script.
Review URL: https://codereview.chromium.org//10949028

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12673 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-21 00:43:08 +00:00
kmillikin@google.com 67021511ca Make some static helpers into member functions.
Four helper functions that moved from lib/integers.cc to vm/object.cc so
they could be used during constant folding are more properly member
functions than static functions.

R=srdjan@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12620 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-20 08:38:33 +00:00
ager@google.com e676e88f81 Introduce a VM-only dart:scalarlist library for byte arrays.
Include it in the SDK so users can use it. Create a dummy
implementation and patch file for the library for dart2js so it can be
documented. Johnni, can you think of a nicer way of making
documentation generation work for a VM only library? Also, it seems that
patching kills the documentation comments and they do not show up in
the generated docs.

R=iposva@google.com,johnniwinther@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12616 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-20 07:08:10 +00:00
hausner@google.com 38f8f3cbfa Add virtual method to Object to ease dictionary code
Add a virtual method at the root of the object hierarchy
that returns the name of the object that is used in the
namespace dictionary. Only object types that are kept in
the dictionary need to overwrite the default implementation. 
Review URL: https://codereview.chromium.org//10945020

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12577 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-19 17:09:42 +00:00
kmillikin@google.com be0492a8a8 Reapply "Initial implementation of sparse conditional constant propagation."
With a fix for compilation on Mac.  GrowableArray is DISALLOW_COPY_AND_ASSIGN,
so we can't create a temporary one to be ignored and have to pass one in to be
ignored.

R=fschneider@google.com,zerny@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12561 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-19 14:10:14 +00:00
kmillikin@google.com 5e449aea52 Revert "Initial implementation of sparse conditional constant propagation."
Revert due to compilation failures on Mac.

TBR=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12552 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-19 11:04:36 +00:00
kmillikin@google.com ae9efbfab0 Initial implementation of sparse conditional constant propagation.
Use the results of SCC to eliminate unreachable code.

BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12549 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-19 10:34:14 +00:00
regis@google.com 87c144334f Fix bad optimization of instance-of with uninstantiated types (issue 5216).
Fix bad assert when type check elimination is disabled (issue 5217).
Cleanup of type elimination code in optimizing compiler.
Add test.
Review URL: https://codereview.chromium.org//10942006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12502 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-18 15:12:43 +00:00
zerny@google.com aa5281c88a Reapply "Deoptimization support in inlined code."
This reapplies r12488 with a fix.

R=kmillikin@google.com,fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12499 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-18 13:41:20 +00:00
zerny@google.com e174be3f27 Revert "Deoptimization support in inlined code."
This reverts commit a78e33f178aae74a97f4231ca98183adf97fda71.

TBR=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12492 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-18 12:18:04 +00:00
zerny@google.com 64a9ca2b81 Deoptimization support in inlined code.
Review URL: https://codereview.chromium.org//10928232

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12488 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-18 11:53:59 +00:00
turnidge@google.com a28d475ff3 Implement more of the mirrors library, primarily stuff to do with types.
Highlights:

- Implement FunctionClassMirror, used to reflect on the class of
  function objects.

- Implement TypeVariableMirror, used to reflect on type variables.

- Implement TypedefMirror, used to reflect on typedefs.

- Implement returnType for MethodMirror

- Implement type for VariableMirror/ParameterMirror

- Added supporting functions to the dart embedding api:
  - Dart_ClassIsTypedef
  - Dart_ClassGetTypedefReferent
  - Dart_ClassIsFunctionClass
  - Dart_ClassGetFunctionClassSignature
  - Dart_FunctionReturnType
  - Dart_FunctionParameterType
  - Dart_VariableType
  - Dart_GetTypeVariableNames
  - Dart_LookupTypeVariable
  - Dart_IsTypeVariable
  - Dart_TypeVariableOwner
  - Dart_TypeVariableUpperBound

Other stuff:

- Fixed bug in Function::NumberOfImplicitParameters for signature
  functions.

- Chnaged the default upper bound for type variables to Object from
  Dynamic.  Discussed this with Gilad and Regis.

- Fixed some smaller problems in mirrors_impl.dart.
Review URL: https://chromiumcodereview.appspot.com//10916252

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12342 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-13 17:47:25 +00:00
iposva@google.com 2f455ce6a4 - Move double and int implementations into dart:core and make them private.
Review URL: https://codereview.chromium.org//10918213

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12330 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-13 14:13:55 +00:00
lrn@google.com 292da5cc48 Make int an abstract class.
This looks deceptively simple (the only real change is in init, which
just copies the code for double, and the rest are just renaming for
consistency). It seems to work.

Review URL: https://chromiumcodereview.appspot.com//10933039

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12304 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-13 07:17:27 +00:00
asiva@google.com 724b8600d4 Move all the closure related fields in RawFunction into a new class
called RawClosureData
Add a field called 'data_' in RawFunction which points to a RawClosureData
object for closure functions, a signature class for signature functions or
an implicit closure function if there is an implicit closure for a regular
function.

This ensures that we don't burn 5 fields in RawFunction for normal functions.
The heap savings from this change on standalone dart is about 67k.

After this change:
New space (0k of 32768k) Old space (886k of 1024k) Code space (0k of 0k)

Prior to this change:
New space (0k of 32768k) Old space (953k of 1024k) Code space (0k of 0k)
Review URL: https://chromiumcodereview.appspot.com//10917222

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12290 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-13 00:20:37 +00:00
regis@google.com e860f819a0 Limit the maximum number of formal parameters (32K fixed and 32K optional)
in order to save space in function objects.
Naming cleanup.
Review URL: https://codereview.chromium.org//10928160

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12288 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-12 23:35:05 +00:00
hausner@google.com d12165f5ca Fix dart2js status for raw string test
Review URL: https://chromiumcodereview.appspot.com//10928131

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12227 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-11 23:21:16 +00:00
iposva@google.com a8a8f1e7de - Do not limit the compiler message buffer, by allocating the message
into a String object.
Review URL: https://chromiumcodereview.appspot.com//10933021

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12202 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-11 15:03:40 +00:00
ager@google.com 2e49065159 Reapply changes to Expando patching.
R=ajohnsen@google.com
BUG=

Review URL: https://chromiumcodereview.appspot.com//10911201

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12181 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-11 11:03:50 +00:00