Commit Graph

17 Commits

Author SHA1 Message Date
ager@chromium.org
95d1d40077 Revert r819, 821, and 822 which caused a big performance regression
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@823 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-21 15:01:41 +00:00
olehougaard
3877c91a19 Fixing the detection of aliased eval so that it is exact.
Fixing the semantics of aliased eval so that it is conformant.
Review URL: http://codereview.chromium.org/11563

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@819 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-21 12:49:57 +00:00
feng@chromium.org
736c7a9d35 Some debugging support fixes on ARM simulator port.
1) Let SaveContext remember the top JS frame stack pointer so it works in simulator where C stack and JS stack are separated;
2) Use the new calling convension in %DebugBreakCallHelper function;

Review URL: http://codereview.chromium.org/10663

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@774 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-11-17 17:44:16 +00:00
ager@chromium.org
8813d15d18 Revert revision 593. This was a cleanup change but it caused layout
test regressions.

Review URL: http://codereview.chromium.org/8827

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@615 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-28 07:30:10 +00:00
sgjesse@chromium.org
c204f48529 Revorked version of http://codereview.chromium.org/8101. The only change is
that the exception stored in the TryCatch is not cleared as that was the
cause of the regression.

So the actual difference to http://codereview.chromium.org/8101 is:
Index: src/top.h
===================================================================
--- src/top.h   (revision 576)
+++ src/top.h   (working copy)
@@ -154,10 +154,6 @@
     if (has_pending_exception()) {
       thread_local_.external_caught_exception_ =
           thread_local_.pending_external_caught_exception_;
-    } else {
-      if (thread_local_.try_catch_handler_ != NULL) {
-        thread_local_.try_catch_handler_->Reset();
-      }
     }
     thread_local_.pending_external_caught_exception_ = false;
   }
@@ -312,14 +308,14 @@
 };



git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@593 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-24 20:50:26 +00:00
sgjesse@chromium.org
5ffd290217 Changed the workarround for a GCC compiler bug to be only active for the GCC
version range for which the bug is known to exist.

Added include to compile with GCC 4.3.1.

BUG=122


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@583 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-24 09:35:27 +00:00
sgjesse@chromium.org
27154148cf Reverted r576 as it caused a regression.
TBR=kasperl
Review URL: http://codereview.chromium.org/7970

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@577 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-24 06:40:43 +00:00
sgjesse@chromium.org
39a5ffbd85 Cleanup of http://codereview.chromium.org/8101.
Changed the catcher_ field to a boolean value and renamed it. Modified the
propagation of the external caught exception to also clear the current
TryCatch if there is no exception as it might hold an exception which has
been bypassed by code in a finally block.

Minor formatting changes to a test.
Review URL: http://codereview.chromium.org/8102

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@576 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-24 06:22:47 +00:00
sgjesse@chromium.org
f7367a9fe6 Posponed the setting of "external_caught_exception" to when leaving JavaScript
execution. This is achieved by storing a pointer to the C++ TryCatch when the
exception is thrown and checking that this is the handler active when leaving
JavaScript.
Review URL: http://codereview.chromium.org/8101

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@570 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-23 12:54:13 +00:00
sgjesse@chromium.org
63afc7bad3 Changed the message reporting for try { ... } finally { ... } statements to
report the exception when they happen in the try block and not as previously
when re-thrown after execution of the finally block. There is no longer any
message generated by re-throw.

Added test cases for various combinations of try/catch/finally with throw in
different places.

Added a regression directory to the messages tests which is processed by the
test runner.

Added regression tests for the specific bugs fixed.

Runs all the test suites.

BUG=73
BUG=75
Review URL: http://codereview.chromium.org/8050

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@565 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-23 08:40:19 +00:00
sgjesse@chromium.org
03e44f3f75 Add a workaround for a compiler gug in GCC 4.2.3. See issue 122 for details.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@557 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-22 15:04:40 +00:00
feng@chromium.org
42ef2c3d77 Split window support from V8.
Here is a description of the background and design of split window in Chrome and V8:
https://docs.google.com/a/google.com/Doc?id=chhjkpg_47fwddxbfr

This change list splits the window object into two parts: 1) an inner window object used as the global object of contexts; 2) an outer window object exposed to JavaScript and accessible by the name 'window'. Firefox did it awhile ago, here are some discussions: https://wiki.mozilla.org/Gecko:SplitWindow. One additional benefit of splitting window in Chrome is that accessing global variables don't need security checks anymore, it can improve applications that use many global variables.

V8 support of split window:
  There are a small number of changes on V8 api to support split window:
Security context is removed from V8, so does related API functions;
A global object can be detached from its context and reused by a new context;
Access checks on an object template can be turned on/off by default;
An object can turn on its access checks later;

  V8 has a new object type, ApiGlobalObject, which is the outer window object type. The existing JSGlobalObject becomes the inner window object type. Security checks are moved from JSGlobalObject to ApiGlobalObject. ApiGlobalObject is the one exposed to JavaScript, it is accessible through Context::Global(). ApiGlobalObject's prototype is set to JSGlobalObject so that property lookups are forwarded to JSGlobalObject. ApiGlobalObject forwards all other property access requests to JSGlobalObject, such as SetProperty, DeleteProperty, etc.

  Security token is moved to a global context, and ApiGlobalObject has a reference to its global context. JSGlobalObject has a reference to its global context as well. When accessing properties on a global object in JavaScript, the domain security check is performed by comparing the security token of the lexical context (Top::global_context()) to the token of global object's context. The check is only needed when the receiver is a window object, such as 'window.document'. Accessing global variables, such as 'var foo = 3; foo' does not need checks because the receiver is the inner window object.

  When an outer window is detached from its global context (when a frame navigates away from a page), it is completely detached from the inner window. A new context is created for the new page, and the outer global object is reused. At this point, the access check on the DOMWindow wrapper of the old context is turned on. The code in old context is still able to access DOMWindow properties, but it has to go through domain security checks.


It is debatable on how to implement the outer window object. Currently each property access function has to check if the receiver is ApiGlobalObject type. This approach might be error-prone that one may forget to check the receiver when adding new functions. It is unlikely a performance issue because accessing global variables are more common than 'window.foo' style coding.

I am still working on the ARM port, and I'd like to hear comments and suggestions on the best way to support it in V8.


Review URL: http://codereview.chromium.org/7366

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@540 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-10-21 19:07:58 +00:00
christian.plesner.hansen@gmail.com
9bed566bdb Changed copyright header from google inc. to v8 project authors.
Added presubmit step to check copyright.



git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@242 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-09 20:08:45 +00:00
christian.plesner.hansen@gmail.com
de607bd33e Added source info to TryCatches. Reorganized exception messaging
somewhat and folded stack traces into message.  Use of this in the
shell will follow in a separate changelist.



git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@235 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-09-09 18:55:41 +00:00
kasper.lund
7276f14ca7 Changed all text files to have native svn:eol-style.
Added a few samples and support for building them. The samples include a simple shell that can be used to benchmark and test V8.

Changed V8::GetVersion to return the version as a string.

Added source for lazily loaded scripts to snapshots and made serialization non-destructive.

Improved ARM support by fixing the write barrier code to use aligned loads and stores and by removing premature locals optimization that relied on broken support for callee-saved registers (removed).

Refactored the code for marking live objects during garbage collection and the code for allocating objects in paged spaces. Introduced an abstraction for the map word of a heap-allocated object and changed the memory allocator to allocate executable memory only for spaces that may contain code objects.

Moved StringBuilder to utils.h and ScopedLock to platform.h, where they can be used by debugging and logging modules. Added thread-safe message queues for dealing with debugger events.

Fixed the source code reported by toString for certain builtin empty functions and made sure that the prototype property of a function is enumerable.

Improved performance of converting values to condition flags in generated code.

Merged disassembler-{arch} files.


git-svn-id: http://v8.googlecode.com/svn/trunk@8 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-07-30 08:49:36 +00:00
kasper.lund
af4734f10f Added support for storing JavaScript stack traces in a stack allocated buffer to make it visible in shallow core dumps. Controlled by the --preallocate-message-memory flag which is disabled by default.
git-svn-id: http://v8.googlecode.com/svn/trunk@7 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-07-28 12:50:18 +00:00
christian.plesner.hansen
43d26ecc35 Initial export.
git-svn-id: http://v8.googlecode.com/svn/trunk@2 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2008-07-03 15:10:15 +00:00