Reviewers: Michael Starzinger,
Description:
Handlify GetSourceCode-related functions.
Please review this at http://codereview.chromium.org/9374013/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/objects.h
M src/objects.cc
M src/runtime.cc
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index
e4f165ae44e5e64051c8ea176e5687b6869ef11b..5690e9ae5411db7eca1dac94983ab9cdf64075a2
100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -7615,13 +7615,12 @@ bool SharedFunctionInfo::HasSourceCode() {
}
-Object* SharedFunctionInfo::GetSourceCode() {
- Isolate* isolate = GetIsolate();
- if (!HasSourceCode()) return isolate->heap()->undefined_value();
- HandleScope scope(isolate);
- Object* source = Script::cast(script())->source();
- return *SubString(Handle<String>(String::cast(source), isolate),
- start_position(), end_position());
+Handle<Object> SharedFunctionInfo::GetSourceCode() {
+ if (!HasSourceCode()) {
+ return Handle<Object>(GetIsolate()->heap()->undefined_value());
+ }
+ Handle<String> source(String::cast(Script::cast(script())->source()));
+ return SubString(source, start_position(), end_position());
}
Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index
76ac347d32a27e3bd3d2edd56d9f18f5ab61d0f8..68306c84e5209e5c874e615c67e450a19bc2853c
100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -5324,7 +5324,7 @@ class SharedFunctionInfo: public HeapObject {
// [source code]: Source code for the function.
bool HasSourceCode();
- Object* GetSourceCode();
+ Handle<Object> GetSourceCode();
inline int opt_count();
inline void set_opt_count(int opt_count);
Index: src/runtime.cc
diff --git a/src/runtime.cc b/src/runtime.cc
index
d80b4a6945218e15ad17039b851db98822959266..62d3525cbc2f17293ae94abf8f031d59af308b58
100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -2001,11 +2001,12 @@ RUNTIME_FUNCTION(MaybeObject*,
Runtime_FunctionGetScript) {
RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionGetSourceCode) {
- NoHandleAllocation ha;
+ HandleScope scope(isolate);
ASSERT(args.length() == 1);
- CONVERT_CHECKED(JSFunction, f, args[0]);
- return f->shared()->GetSourceCode();
+ CONVERT_ARG_CHECKED(JSFunction, f, 0);
+ Handle<SharedFunctionInfo> shared(f->shared());
+ return *shared->GetSourceCode();
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev