Index: src/liveedit.cc |
=================================================================== |
--- src/liveedit.cc (revision 4365) |
+++ src/liveedit.cc (working copy) |
@@ -447,13 +447,6 @@ |
} |
-// Check whether the code is natural function code (not a lazy-compile stub |
-// code). |
-static bool IsJSFunctionCode(Code* code) { |
- return code->kind() == Code::FUNCTION; |
-} |
- |
- |
void LiveEdit::ReplaceFunctionCode(Handle<JSArray> new_compile_info_array, |
Handle<JSArray> shared_info_array) { |
HandleScope scope; |
@@ -463,30 +456,15 @@ |
Handle<SharedFunctionInfo> shared_info = shared_info_wrapper.GetInfo(); |
+ ReplaceCodeObject(shared_info->code(), |
+ *(compile_info_wrapper.GetFunctionCode())); |
- if (IsJSFunctionCode(shared_info->code())) { |
- ReplaceCodeObject(shared_info->code(), |
- *(compile_info_wrapper.GetFunctionCode())); |
- } |
- |
- if (shared_info->debug_info()->IsDebugInfo()) { |
- Handle<DebugInfo> debug_info(DebugInfo::cast(shared_info->debug_info())); |
- Handle<Code> new_original_code = |
- Factory::CopyCode(compile_info_wrapper.GetFunctionCode()); |
- debug_info->set_original_code(*new_original_code); |
- } |
- |
shared_info->set_start_position(compile_info_wrapper.GetStartPosition()); |
shared_info->set_end_position(compile_info_wrapper.GetEndPosition()); |
- |
- shared_info->set_construct_stub( |
- Builtins::builtin(Builtins::JSConstructStubGeneric)); |
- // update breakpoints |
+ // update breakpoints, original code, constructor stub |
} |
-// TODO(635): Eval caches its scripts (same text -- same compiled info). |
-// Make sure we clear such caches. |
void LiveEdit::RelinkFunctionToScript(Handle<JSArray> shared_info_array, |
Handle<Script> script_handle) { |
SharedInfoWrapper shared_info_wrapper(shared_info_array); |
@@ -673,18 +651,15 @@ |
TranslatePosition(info->function_token_position(), |
position_change_array)); |
- if (IsJSFunctionCode(info->code())) { |
- // Patch relocation info section of the code. |
- Handle<Code> patched_code = PatchPositionsInCode(Handle<Code>(info->code()), |
- position_change_array); |
- if (*patched_code != info->code()) { |
- // Replace all references to the code across the heap. In particular, |
- // some stubs may refer to this code and this code may be being executed |
- // on stack (it is safe to substitute the code object on stack, because |
- // we only change the structure of rinfo and leave instructions |
- // untouched). |
- ReplaceCodeObject(info->code(), *patched_code); |
- } |
+ // Patch relocation info section of the code. |
+ Handle<Code> patched_code = PatchPositionsInCode(Handle<Code>(info->code()), |
+ position_change_array); |
+ if (*patched_code != info->code()) { |
+ // Replace all references to the code across the heap. In particular, |
+ // some stubs may refer to this code and this code may be being executed |
+ // on stack (it is safe to substitute the code object on stack, because |
+ // we only change the structure of rinfo and leave instructions untouched). |
+ ReplaceCodeObject(info->code(), *patched_code); |
} |