Changeset 12245 for branches


Ignore:
Timestamp:
Jun 10, 2009, 5:03:06 PM (11 years ago)
Author:
gz
Message:

r11422 from trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/lib/x86-backtrace.lisp

    r12067 r12245  
    420420         
    421421(defun %apply-in-frame (frame function arglist)
    422   (let* ((target-catch (last-catch-since frame nil))
    423          (start-fp (if target-catch
    424                      (uvref target-catch target::catch-frame.rbp-cell)
    425                      (%get-frame-ptr)))
    426          (target-xcf (last-xcf-since frame start-fp nil))
    427          (target-db-link (last-binding-before frame))
    428          (target-tsp (last-tsp-before frame))
    429          (target-foreign-sp (last-foreign-sp-before frame)))
    430     (multiple-value-bind (save0-loc save1-loc save2-loc save3-loc)
    431         (find-x8664-saved-nvrs frame start-fp nil)
    432       (let* ((thunk (%clone-x86-function #'%%apply-in-frame-proto
    433                                          frame
    434                                          target-catch
    435                                          target-db-link
    436                                          target-xcf
    437                                          target-tsp
    438                                          target-foreign-sp
    439                                          (if save0-loc
    440                                            (- save0-loc frame)
    441                                            0)
    442                                          (if save1-loc
    443                                            (- save1-loc frame)
    444                                            0)
    445                                          (if save2-loc
    446                                            (- save2-loc frame)
    447                                            0)
    448                                          (if save3-loc
    449                                            (- save3-loc frame)
    450                                            0)
    451                                          (coerce-to-function function)
    452                                          arglist
    453                                          0)))
    454         (funcall thunk)))))
     422  (target-arch-case
     423   (:x8632 (error "%apply-in-frame doesn't work for x8632 yet"))
     424   (:x8664
     425    (let* ((target-catch (last-catch-since frame nil))
     426           (start-fp (if target-catch
     427                       (uvref target-catch x8664::catch-frame.rbp-cell)
     428                       (%get-frame-ptr)))
     429           (target-xcf (last-xcf-since frame start-fp nil))
     430           (target-db-link (last-binding-before frame))
     431           (target-tsp (last-tsp-before frame))
     432           (target-foreign-sp (last-foreign-sp-before frame)))
     433      (multiple-value-bind (save0-loc save1-loc save2-loc save3-loc)
     434          (find-x8664-saved-nvrs frame start-fp nil)
     435        (let* ((thunk (%clone-x86-function #'%%apply-in-frame-proto
     436                                           frame
     437                                           target-catch
     438                                           target-db-link
     439                                           target-xcf
     440                                           target-tsp
     441                                           target-foreign-sp
     442                                           (if save0-loc
     443                                             (- save0-loc frame)
     444                                             0)
     445                                           (if save1-loc
     446                                             (- save1-loc frame)
     447                                             0)
     448                                           (if save2-loc
     449                                             (- save2-loc frame)
     450                                             0)
     451                                           (if save3-loc
     452                                             (- save3-loc frame)
     453                                             0)
     454                                           (coerce-to-function function)
     455                                           arglist
     456                                           0)))
     457          (funcall thunk)))))))
    455458
    456459           
Note: See TracChangeset for help on using the changeset viewer.