RAPL

Diff
Login

Diff

Differences From Artifact [09c28ec85c]:

To Artifact [af4f912230]:


160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
    if (word_tokens == 1 && stmt.intv[0]) {
      stmt.interp.empty_obj.decrRefCount(stmt.intv[0]);
      return stmt.intv[0];
    }

    /* Concatenate every token in an unique
     * object. */
    obj_ptr = stmt.interp.empty_obj.newStringObjectNoAlloc(null, 0);

    if (word_tokens == 4 && token[idx + 0].token == stmt.TOKEN_ESC && token[idx + 1].token == stmt.TOKEN_ESC
        && token[idx + 2].token == stmt.TOKEN_VAR) {
      /* May be able to do fast interpolated object -> dictSubst */
      obj_ptr.obj_type = obj_ptr.interpolatedObjType;
      obj_ptr.twoPtrValue.ptr1(token);
      obj_ptr.twoPtrValue.ptr2(stmt.intv[idx + 2]);







|







160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
    if (word_tokens == 1 && stmt.intv[0]) {
      stmt.interp.empty_obj.decrRefCount(stmt.intv[0]);
      return stmt.intv[0];
    }

    /* Concatenate every token in an unique
     * object. */
    obj_ptr = stmt.interp.string_obj_type.newStringObjNoAlloc(null, 0);

    if (word_tokens == 4 && token[idx + 0].token == stmt.TOKEN_ESC && token[idx + 1].token == stmt.TOKEN_ESC
        && token[idx + 2].token == stmt.TOKEN_VAR) {
      /* May be able to do fast interpolated object -> dictSubst */
      obj_ptr.obj_type = obj_ptr.interpolatedObjType;
      obj_ptr.twoPtrValue.ptr1(token);
      obj_ptr.twoPtrValue.ptr2(stmt.intv[idx + 2]);
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
      if (len >= 3) {
        var obj_ptr;
        if (Jim_ListIndex(stmt.interp.stack_trace, len - 3, obj_ptr, stmt.FUNCTION_FLAGS_NONE) == stmt.OK && Jim_Length(obj_ptr)) {
          /* Yes, the previous level had procname */
          if (Jim_ListIndex(stmt.interp.stack_trace, len - 2, objPtr, stmt.FUNCTION_FLAGS_NONE) == stmt.OK && !Jim_Length(obj_ptr)) {
            /* But no filename, so merge the new info with that frame */
            ListSetIndex(stmt.interp.stack_trace, len - 2, file_name_obj, 0);
            ListSetIndex(stmt.interp.stack_trace, len - 1, file_nameObj.newIntObject(linenr), 0);
            return;
          }
        }
      }
    }
    stmt.interp.list_obj_type.listAppendElement(stmt.interp.stack_trace, file_name_obj.newStringObject(procname, -1));
    stmt.interp.list_obj_type.listAppendElement(stmt.interp.stack_trace, file_name_obj);
    stmt.interp.list_obj_type.listAppendElement(stmt.interp.stack_trace, file_name_obj.newIntObject(linenr));
  },

  /* ==================== isBracedParam ===================================== */
  isBracedParam: function (val) {
     return (val instanceof TclWord);
  },








|





|

|







525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
      if (len >= 3) {
        var obj_ptr;
        if (Jim_ListIndex(stmt.interp.stack_trace, len - 3, obj_ptr, stmt.FUNCTION_FLAGS_NONE) == stmt.OK && Jim_Length(obj_ptr)) {
          /* Yes, the previous level had procname */
          if (Jim_ListIndex(stmt.interp.stack_trace, len - 2, objPtr, stmt.FUNCTION_FLAGS_NONE) == stmt.OK && !Jim_Length(obj_ptr)) {
            /* But no filename, so merge the new info with that frame */
            ListSetIndex(stmt.interp.stack_trace, len - 2, file_name_obj, 0);
            ListSetIndex(stmt.interp.stack_trace, len - 1, stmt.interp.int_obj_type.newIntObj(linenr), 0);
            return;
          }
        }
      }
    }
    stmt.interp.list_obj_type.listAppendElement(stmt.interp.stack_trace, stmt.interp.string_obj_type.newStringObj(procname, -1));
    stmt.interp.list_obj_type.listAppendElement(stmt.interp.stack_trace, file_name_obj);
    stmt.interp.list_obj_type.listAppendElement(stmt.interp.stack_trace, stmt.interp.int_obj_type.newIntObj(linenr));
  },

  /* ==================== isBracedParam ===================================== */
  isBracedParam: function (val) {
     return (val instanceof TclWord);
  },