You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Ryan Dahl 21d081fd7f Upgrade V8 to 3.7.12 13 years ago
..
Makefile Downgrade V8 to 3.1.8.25 14 years ago
README Upgrade V8 to 3.4.10 14 years ago
gccause.lua Upgrade V8 to 3.7.12 13 years ago
gcmole.cc Upgrade V8 to 3.4.10 14 years ago
gcmole.lua Upgrade V8 to 3.4.12.1 13 years ago

README

DESCRIPTION -------------------------------------------------------------------

gcmole is a simple static analysis tool used to find possible evaluation order
dependent GC-unsafe places in the V8 codebase.

For example the following code is GC-unsafe:

Handle<Object> Foo(); // Assume Foo can trigger a GC.
void Bar(Object*, Object*);

Handle<Object> baz;
baz->Qux(*Foo()); // (a)
Bar(*Foo(), *baz); // (b)

Both in cases (a) and (b) compiler is free to evaluate call arguments (that
includes receiver) in any order. That means it can dereference baz before
calling to Foo and save a raw pointer to a heap object in the register or
on the stack.

PREREQUISITES -----------------------------------------------------------------

1) Install Lua 5.1

2) Get LLVM and Clang sources and build them.

Follow the instructions on http://clang.llvm.org/get_started.html.

Make sure to pass --enable-optimized to configure to get Release build
instead of a Debug one.

3) Build gcmole Clang plugin (libgcmole.so)

In the